复数运算

实践练习C++17

复数写作 z = a + b*i,a 是实部,b 是虚部,虚数单位 i 满足 i² = -1。实部和虚部本身都是实数。

任务说明

复数表示为 z = a + b * i,其中:

  • a 是实部,为实数。

  • b 是虚部,也为实数。

  • i 是虚数单位,满足 i^2 = -1。

复数运算

共轭

z = a + b * i 的共轭为:

zc = a - b * i

绝对值

复数的绝对值,也称模,定义为:

|z| = sqrt(a^2 + b^2)

模的平方等于 z 与其共轭 zc 的乘积:

|z|^2 = z * zc = a^2 + b^2

加法

z1 = a + b * i 与 z2 = c + d * i 相加时,分别相加实部与虚部:

z1 + z2 = (a + b * i) + (c + d * i)
        = (a + c) + (b + d) * i

减法

分别相减实部与虚部:

z1 - z2 = (a + b * i) - (c + d * i)
        = (a - c) + (b - d) * i

乘法

两个复数的乘积定义为:

z1 * z2 = (a + b * i) * (c + d * i)
        = (a * c - b * d) + (b * c + a * d) * i

倒数

非零复数的倒数为:

1 / z = 1 / (a + b * i)
      = a / (a^2 + b^2) - b / (a^2 + b^2) * i

除法

一个复数除以另一个复数,公式为:

z1 / z2 = z1 * (1 / z2)
        = (a + b * i) / (c + d * i)
        = (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i

指数运算

自然对数的底数 e 的复指数可以使用欧拉公式表示:

e^(a + b * i) = e^a * e^(b * i)
              = e^a * (cos(b) + i * sin(b))

实现要求

不要使用语言内置的复数支持,自行实现以下操作:

  • 两个复数相加。
  • 两个复数相减。
  • 两个复数相乘。
  • 两个复数相除。
  • 求共轭。
  • 求绝对值。
  • 计算 e 的复数次幂。