a *= b
复数数组的运算是否有乘法版本?换句话说,将复数数组(大量元素或未知长度)的所有元素相乘并将结果存储在复数双变量中的最有效方法是什么?
在下面的代码中,Ans1
提供了正确的答案,但是,对于我的应用程序来说,处理数组的每个元素是没有意义的,因为会有数百个元素。理想情况下,我想要一个循环(类似于Ans2
),将数组的所有元素相乘并存储答案。如果我不启动Ans2
,1.0,1.0
答案将是0,0
元素将乘以 0。但是,初始化 with1.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();
}
也许这可以很容易地完成,但我错过了一些东西。提前致谢。