1051 复数乘法(15)
复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i2=−1;也可以写成极坐标下的指数形式 (R×e(Pi)),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (R(cos(P)+isin(P))。
现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。
输入格式:
输入在一行中依次给出两个复数的R1, R2, P1, P2数字间以空格分隔。
输出格式:
在一行中按照 A+Bi 的格式输出两数乘积的常规形式,实部和虚部均保留 2 位小数。注意:如果 B 是负数,则应该写成 A-|B|i 的形式。
输入样例:
2.3 3.5 5.2 0.4
输出样例:
-8.68-8.23i
Solution:
需要补充(复习)一下复数的运算法则:(a+ib) + (c+id) = (a+c)+(b+d)i
(a+ib) - (c+id) = (a-c)+(b-d)i
复数的乘法:
(a+ib) * (c+id) = ac + adi + bci + bdi^2
= ac + (ad+bc)i - bd
= (ac-bd) + (ad+bc)i
这题里面给出的三角形式有问题, 给出的公式少了一个括号, 如果按照 R*cos(P) + i*sin(p)
进行转换的话, 是有问题的.
因为正确的公式是 R * ( cos(p) + i*sin(p) )
, 带入后可以得到最终的A+Bi
double A = r1 * r2 * cos(p1) * cos(p2) - r1 * r2 * sin(p1) * sin(p2); |
另外这题要注意的是, 要把-0.00-0.00i ==转换成==> 0.00+0.00i
如果A实际比0小, 但是很接近0, 不处理的话, 会出现-0.00的情况,
同理B是一样的, 但无论是什么情况, B都要带上i
|