a *= b
複素数配列の演算に乗算バージョンはありますか? つまり、複素数の配列 (多数の要素または長さ不明) のすべての要素を乗算し、その結果を複素 double 変数に格納する最も効率的な方法は何ですか?
次のコードでAns1
は正しい答えを示していますが、私のアプリケーションでは配列の各要素をアドレス指定するのは何百もの要素があるため意味がありません。理想的にAns2
は、配列のすべての要素を乗算して答えを格納するループ (に似たもの) が必要です。要素が0で乗算されるため、答えAns2
として開始しない場合。ただし、複素数を扱っているため、初期化も機能しません。1.0,1.0
0,0
1.0,1.0
編集 - 各要素を手動で処理できない理由は、配列の要素が別のa
場所から取得され、長さa
が異なる大きなプログラムにリンクされるためです。
理想的にはANSWER = COMPLEX ELEMENT[0]*COMPLEX ELEMENT[1]*COMPLEX ELEMENT[2]*....COMPLEX ELEMENT[n]
/*
Complex Array Multiplication
*/
#include <complex>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n = 3;
complex<double> Ans1, Ans2(1.0,1.0);
complex<double> a[n];
a[0] = complex<double>(1.0, 1.5);
a[1] = complex<double>(-1.0, 1.5);
a[2] = complex<double>(1.0, -1.5);
Ans1 = (a[0]*a[1]*a[2]);
cout << "\nAns1 = " << Ans1;
for (int i =0; i < n; i++) {
Ans2 = Ans2 * a[i];
}
cout << "\nAns2 = " << Ans2;
getchar();
}
多分これは非常に簡単に行うことができますが、何かが欠けています。前もって感謝します。