То, что я пытаюсь сделать, в конечном счете, умножает два комплексных числа, как это:Compute Mutliplication комплексных чисел
z1 = R1 + I1*j
z2 = R2 + I2*j
z3 = z1 * z2 = (R1*R2 - I1*I2) (R1*I2 + R2*I1)*j;
Но что у меня есть два отдельных векторов для реального и сложной части обоих этих комплексных чисел. Так что-то вроде этого:
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
Так что, когда я пытаюсь вычислить z3 сейчас, я делаю это:
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
}
Теперь эта функция есть много времени. Конечно, есть еще один способ сделать это, вы можете думать о чем-то, что я могу использовать?
предварительно выделить результирующие векторы и заполнить их, а не с помощью push_back –