复数的 Python 程序
正数总是有两个实根。例如,如果 x2 为 25,则 x 为 ±5。但是,如果 x2 为 -25,则不存在实根。任何负数的平方根都是其绝对值的平方根乘以虚数单位 j = √−1。
因此 √−25 = √25 𝑋−1 = √25 × √−1 = 5j
复数由实部和虚部组成。它表示为 x+yj。x 和 y 都是实数。 Y 乘以虚数单位形成复数的虚部。
示例:3+2j、10-5.5J、9.55+2.3j、5.11e-6+4j
Python 具有内置的复数数据类型。可以通过文字表示创建复数对象,如下所示 −
>>> x = 2+3j >>> type(x)
复数对象有两个属性 real(返回实部)和 imag(返回不包括虚数单位 j 的虚部)
>>> x.real 2.0 >>> x.imag 3.0
它还具有 curriculum() 方法。复数的共轭具有相同的实部和虚部,但符号相反。因此,2+3j 的共轭是 2-3j
>>> x.curriculum() (2-3j)
Python 还具有内置的 complex() 函数,该函数返回复数对象。该函数接受两个参数,一个用于实部,一个用于虚部。它们可以是任何数字类型(int、float 或 complex)
>>> complex(9,5) (9+5j) >>> complex(-6, -2.5) (-6-2.5j) >>> complex(1.5j, 2.5j) (-2.5+1.5j)
如果只给出一个参数,则将其视为实部,虚部假定为零。
>>> complex(15) (15+0j)
该函数还可以将字符串作为参数,前提是它包含数字表示。
>>> complex('51') (51+0j) >>> complex('1.5') (1.5+0j)
复数的加减运算与整数或浮点数的加减运算类似。实部和虚部分别加/减。
>>> a = 6+4j >>> b = 3+6j >>> a+b (9+10j) >>> a-b (3-2j)
对于乘法,将复数视为二项式,并将第一个数字中的每个项乘以第二个数字中的每个项。
a = 6+4j b = 3+2j c = a*b c = (6+4j)*(3+2j) c = (18+12j+12j+8*-1) c = 10+24j
在 Python 控制台中,结果验证了这一点 −
>>> a = 6+4j >>> b = 3+2j >>> a*b (10+24j)
复数的除法如下 −
设两个数为
a = 2+4j
b = 1-2j
我们想计算 a/b。
求分母的共轭,即 1+2j
将分子和分母乘以分母的共轭,得到除法结果
c = a/b c = (2+4j)*(1+2j)/(1-2j)(1+2j) c = (2+4j+4j+8*-1)/(1+2j-2j-4*-1) c = (-6+8j)/5 c = -1.2+1.6j
以下 Python 控制台会话验证了上述处理。
>>> a = 2+4j >>> b = 1-2j >>> a/b (-1.2+1.6j)
cmath 模块
Python 标准库 math 模块中定义的数学函数处理浮点数。对于复数,Python 库包含 cmath 模块。
复数 z = x+yj 是笛卡尔表示。它在内部以极坐标表示,其模数为 r(由内置 abs() 函数返回)和相位角 Φ(发音为 phi),该角是 x 轴与 x 和原点连线之间的逆时针角度(以弧度为单位)。下图说明了复数的极坐标表示 −
cmath 模块中的函数允许将笛卡尔表示转换为极坐标表示,反之亦然。
polar() − 此函数返回复数笛卡尔符号的极坐标表示。返回值是由模数和相位组成的元组。
>>> import cmath >>> a = 2+4j >>> cmath.polar(a) (4.47213595499958, 1.1071487177940904)
请注意,模数由 abs() 函数返回
>>> abs(a) 4.47213595499958
phase() − 此函数返回 x 轴与连接 a 和原点的线段之间的逆时针角度。该角度以弧度表示,介于 π 和 -π 之间。
>>> cmath.phase(a) 1.1071487177940904 z = x+yj Φ
rect() − 此函数返回以极坐标形式(即模数和相位)表示的复数的笛卡尔表示形式。
>>> cmath.rect(4.47213595499958, 1.1071487177940904) (2.00000000000000004+4j)
cmath 模块包含 math 模块中定义的所有数学函数的替代方案。有三角函数和对数函数,如下所述 −
cmath.sin() − 此函数返回以弧度表示的相位角的正弦三角比。
>>> import cmath >>> a = 2+4j >>> p = cmath.phase(a) >>> cmath.sin(p) (0.8944271909999159+0j)
类似地,cmath 模块中定义了其他比率函数 cos()、tan()、asin()、acos() 和 atan()。
cmath.exp() − 与 math.exp() 类似,此函数返回 ex,其中 x 是复数,e 为 2.71828
>>> cmath.exp(a) (-1.1312043837568135+2.4717266720048188j)
cmath.log10() − 此函数计算以 10 为底的复数的对数值
>>> a = 1+2j >>> cmath.log10(a) (0.3494850021680094+0.480828578784234j)
cmath.sqrt() − 此函数返回复数的平方根。
>>> cmath.sqrt(a) (1.272019649514069+0.7861513777574233j)
在本文中,我们了解了 Python 复数数据类型的重要特性以及如何对其进行算术运算。我们还探索了 cmath 模块中定义的各种函数。