pin_drop当前位置:知识文库 ❯ 图文
Python复数类型complex详解
复数(Complex)是Python内置的数字类型之一,用于表示形如a + bj的复数,其中a为实部,b为虚部,j为虚数单位(满足j² = -1)。Python是少数将复数作为内置数据类型的编程语言之一,这使得它在科学计算和工程领域有着天然的优势。复数在信号处理、电气工程、量子力学等领域有广泛应用。
复数定义
字面量定义
Python使用j(或J)作为虚数单位,而非数学中常用的i:
代码示例
c1 = 3 + 4j
c2 = 2j
c3 = -1 - 2j
c4 = 5 + 0j
print(type(c1))
print(c1)
print(c2)
print(c3)
print(c4)输出:
代码示例
<class 'complex'>
(3+4j)
2j
(-1-2j)
(5+0j)提示:虚数单位使用
j而非i,这是工程学中的惯例。纯虚数写作2j,不能写成j2。
使用complex()函数
代码示例
c1 = complex(3, 4)
c2 = complex(2)
c3 = complex(0, 2)
c4 = complex('3+4j')
print(c1)
print(c2)
print(c3)
print(c4)输出:
代码示例
(3+4j)
(2+0j)
2j
(3+4j)提示:使用字符串构造复数时,字符串中不能包含空格,否则会报错。例如
complex('3 + 4j')是错误的。
实部与虚部
复数由实部和虚部组成,可以通过.real和.imag属性访问:
代码示例
c = 3 + 4j
print(c.real)
print(c.imag)
print(type(c.real))
print(type(c.imag))输出:
代码示例
3.0
4.0
<class 'float'>
<class 'float'>提示:实部和虚部都是浮点数类型,即使定义时使用的是整数。
共轭复数
使用.conjugate()方法获取共轭复数:
代码示例
c = 3 + 4j
print(c.conjugate())输出:
代码示例
(3-4j)复数的模
使用abs()函数计算复数的模(绝对值):
代码示例
c = 3 + 4j
print(abs(c))输出:
代码示例
5.0复数的模计算公式为:|a + bj| = √(a² + b²)
复数运算
基本算术运算
代码示例
a = 3 + 4j
b = 1 + 2j
print(a + b)
print(a - b)
print(a * b)
print(a / b)输出:
代码示例
(4+6j)
(2+2j)
(-5+10j)
(2.2-0.4j)运算详解
乘法运算的推导:
代码示例
(3 + 4j) * (1 + 2j)
= 3*1 + 3*2j + 4j*1 + 4j*2j
= 3 + 6j + 4j + 8j²
= 3 + 10j + 8*(-1)
= 3 + 10j - 8
= -5 + 10j复数不支持整除和取模
代码示例
c = 3 + 4j
# c // 2 # TypeError: can't take floor of complex number.
# c % 2 # TypeError: can't mod complex numbers.提示:复数不支持
//(整除)和%(取模)运算,也不支持比较运算(<、>、<=、>=),但支持==和!=。
cmath模块
cmath模块是math模块的复数版本,提供了复数域的数学函数:
代码示例
import cmath
c = 3 + 4j
print(cmath.phase(c))
print(cmath.polar(c))
print(cmath.rect(5, 0.9272952180016122))
print(cmath.sqrt(-1))
print(cmath.exp(1j * cmath.pi))输出:
代码示例
0.9272952180016122
(5.0, 0.9272952180016122)
(3+4j)
1j
(6.123233995736766e-17+1.2246467991473532e-16j)cmath常用函数
代码示例
示例1:复数运算器
代码示例
def complex_calculator(a_real, a_imag, b_real, b_imag, op):
a = complex(a_real, a_imag)
b = complex(b_real, b_imag)
if op == '+':
return a + b
elif op == '-':
return a - b
elif op == '*':
return a * b
elif op == '/':
return a / b
else:
return None
result = complex_calculator(3, 4, 1, 2, '*')
print(f"(3+4j) * (1+2j) = {result}")输出:
代码示例
(3+4j) * (1+2j) = (-5+10j)示例2:极坐标与直角坐标转换
代码示例
import cmath
c = 1 + 1j
r, phi = cmath.polar(c)
print(f"直角坐标: {c}")
print(f"极坐标: 模={r:.4f}, 辐角={phi:.4f}弧度")
print(f"辐角(角度): {phi * 180 / cmath.pi:.4f}°")
recovered = cmath.rect(r, phi)
print(f"还原为直角坐标: {recovered}")输出:
代码示例
直角坐标: (1+1j)
极坐标: 模=1.4142, 辐角=0.7854弧度
辐角(角度): 45.0000°
还原为直角坐标: (1.0000000000000002+1j)注意事项
虚数单位是
j或J,不是i。纯虚数必须写成
2j,不能写成j2,单独的j会被当作变量名。复数的实部和虚部都是浮点数类型。
复数不支持整除
//、取模%和大小比较运算。使用
complex()函数从字符串创建时,字符串中不能有空格。
math模块的函数不支持复数参数,需使用cmath模块。复数支持
==和!=比较,但不支持<、>等大小比较。
小结
本节介绍了Python复数类型的核心知识:
-
复数使用
a + bj格式定义,虚数单位为j -
complex()函数可以创建复数 -
.real和.imag属性分别获取实部和虚部 -
.conjugate()方法获取共轭复数 -
abs()函数计算复数的模 -
cmath模块提供了复数域的数学函数 -
复数不支持整除、取模和大小比较运算
练习题
练习1
编写一个函数,接受一个复数,返回它的模、辐角(角度制)和共轭复数。
提示:使用abs()、cmath.phase()和.conjugate(),角度转换公式为弧度 * 180 / π。
练习2
验证欧拉公式:e^(iπ) + 1 = 0。使用cmath.exp()计算cmath.exp(1j * cmath.pi),观察结果是否接近0。
提示:由于浮点数精度问题,结果不会精确为0,但虚部和实部都应非常接近0。
常见问题
为什么Python用j而不是i表示虚数单位?
这是工程学和电子领域的惯例。在电气工程中,i通常表示电流,所以虚数单位用j表示。Python继承了这一惯例。
复数在哪些实际场景中有应用?
复数广泛应用于信号处理(傅里叶变换)、电气工程(交流电路分析)、量子力学、图像处理、流体力学等领域。Python的内置复数支持使其成为科学计算的理想选择。
cmath和math模块有什么区别?
math模块只支持实数运算,对复数会报错;cmath模块是math的复数版本,支持复数域的数学运算,如复数平方根、复数三角函数等。
如何获取复数的模和相位角?
使用abs()函数获取复数的模,使用cmath.phase()获取相位角(弧度制),使用cmath.polar()可以同时获取模和相位角。
本文涉及AI创作
内容由AI创作,请仔细甄别