gpt4 book ai didi

c++ - 复数除法类

转载 作者:行者123 更新时间:2023-11-28 02:14:55 27 4
gpt4 key购买 nike

我正在尝试重载运算符以除以两个复数

用 3+2i/4 - 3i 测试

    complex g(3, 2);
complex f(4,-3);

cout << g / f << endl;

我添加了 * -1.0 因为我们走了(4*4) + (3 * -3)i^2 在数学上是 25

((3*4) + (3 * -3)* -1) 是我的意图

测试我得到 -0.545455 - 1.72727i

在我添加 * 1.0 之前我得到了

0.24 +0.76i

这是非常接近

0.24 + 0.68i

答案

complex complex :: operator/ (complex& x) {
complex conjugate = x.conj();
double j = (real * conjugate.real) + (imag * conjugate.imag); // real
double u = (real * conjugate.imag) + (imag * conjugate.real); // imag
double h = (((conjugate.imag * imag)* -1.0) + (real * conjugate.real)) + ( (real*conjugate.imag) + (imag * conjugate.real));


return complex(j/h,u/h);
}

最佳答案

这是错误的:

double j = (real * conjugate.real) + (imag * conjugate.imag); // real

应该是-,而不是+

这是对的:

double u = (real * conjugate.imag) + (imag * conjugate.real); // imag

尽管ju 都是毫无意义的命名。

这是怎么回事?

double h = (((conjugate.imag * imag)* -1.0) + (real * conjugate.real)) + ( (real*conjugate.imag) + (imag * conjugate.real));

分母只是x*conjugate,即:

double denom = x.real * x.real  + x.imag * x.imag;

旁注,您想通过引用 const 来表达您的论点。

关于c++ - 复数除法类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34303544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com