Was ich versuche letztlich zu tun ist, zwei komplexe Zahlen wie folgt multipliziert:Compute Mutliplication von komplexen Zahlen
z1 = R1 + I1*j
z2 = R2 + I2*j
z3 = z1 * z2 = (R1*R2 - I1*I2) (R1*I2 + R2*I1)*j;
Aber was ich habe, sind zwei getrennte Vektoren für die reellen und komplexen Teil beider dieser komplexen Zahlen. So etwas wie folgt aus:
v1 = [R1, R2, R3, R4 ... Rn] of z1
v2 = [I1, I2, I3, I4 ... In] of z1
v1 = [R1, R2, R3, R4 ... Rn] of z2
v2 = [I1, I2, I3, I4 ... In] of z2
Also, wenn ich z3 versuche jetzt zu berechnen, ich dies tun:
foo (std::vector<double> real1, std::vector<double> imag1,
std::vector<double> real2, std::vector<double> imag2)
{
std::vector<double> realResult;
std::vector<double> imagResult;
for (size_t i = 0; i < real1.size(); i++)
{
realResult.push_back(real1[i]*real2[i] - imag1[i]*imag2[i]);
imagResult.push_back(real1[i]*imag2[i] + real2[i]*imag1[i]);
}
//And so on
}
Nun, diese Funktion viel Zeit isst. Es gibt sicher eine andere Möglichkeit, dass Sie an etwas denken können, das ich verwenden kann?
vorbelegen die Ergebnisvektoren und füllen sie in valarray, anstatt push_back –