cmath 是 Python 专用于复数计算的标准库,功能与 math 模块类似,但支持复数作为参数与结果。当需要处理复数时,就应使用 cmath 模块。
常见应用场景:
(1)电路计算中的复阻抗。
(2)频域分析、信号处理。
(3)复平面绘图(如曼德布罗集)。
(4)高等数学中涉及复数的函数(如 log(-1)、sqrt(-3))。
◆◆ ◆
核心概念
1、cmath 与 math 模块类似,提供三角函数、对数、指数、幂运算等数学函数,但都适用于复数。
2、输入参数和返回值都是复数类型(complex)。
3、默认使用弧度制(角度请先转换)。
4、提供极坐标和直角坐标系之间的转换函数。
◆◆ ◆
应用举例
例 1:计算复数的平方根
import cmath
z = -4
result = cmath.sqrt(z) # sqrt(-4) 会返回复数结果
print("√-4 =", result) # 输出:2j例 2:将复数转换为极坐标
import cmath
z = 1 + 1j
r, theta = cmath.polar(z) # 极坐标:模长 r,角度 theta(弧度)
print("模长:", r)
print("幅角:", theta)例 3:从极坐标生成复数
import cmath
z = cmath.rect(2, cmath.pi/4) # 2∠45° = √2 + √2j
print("复数:", z)例 4:验证欧拉公式 e^(iπ) + 1 = 0
import cmath
z = cmath.exp(cmath.pi * 1j) # e^(iπ)
print("e^(iπ) =", z) # ≈ -1 + 0j
print("e^(iπ) + 1 =", z + 1) # ≈ 0j欧拉公式是复数与指数函数的重要连接桥梁。该示例输出 0j,即复平面上的原点。
例 5:复数乘方运算
import cmath
z = 1 + 1j
result = z ** 3 # 复数的立方
print("(1 + i)^3 =", result)Python 原生支持复数的幂运算,但使用 cmath 保证更高的数学兼容性与可解释性。
◆◆ ◆
常用函数速览
cmath.acos(z) / asin(z) / atan(z)
复数的反余弦、反正弦、反正切函数。
参数:复数 z
返回:复数
cmath.cos(z) / sin(z) / tan(z)
三角函数(支持复数)。
参数:复数 z
返回:复数
cmath.exp(z)
e 的 z 次幂。
参数:复数 z
返回:复数
cmath.isclose(a, b, rel_tol=1e-9, abs_tol=0.0)
判断两个复数是否近似相等。
参数:a, b 为复数;rel_tol 为相对容差;abs_tol 为绝对容差
返回:布尔值
cmath.log(z, base=cmath.e)
返回复数的对数(自然对数或指定底)。
参数:复数 z,底数 base
返回:复数
示例:cmath.log(-1) = πj
cmath.phase(z)
返回复数的幅角(极角),单位为弧度。
参数:复数 z
返回:浮点数(弧度)
cmath.polar(z)
将复数转为极坐标形式 (r, θ)。
返回:元组(模长 r,角度 θ)
cmath.rect(r, θ)
从极坐标还原复数 r∠θ。
参数:r 为模长,θ 为角度(弧度)
返回:复数
cmath.sqrt(z)
返回复数 z 的平方根。
参数:复数
返回:复数
内置常量
cmath.pi
圆周率,值约为 3.141592653589793,用于角度与弧度之间的转换。
cmath.e
自然对数的底数,值约为 2.718281828459045。
cmath.tau
圆周常数 τ = 2π,值约为 6.283185307179586,常用于完整周期、频域计算中。
cmath.inf
表示正无穷大(infinity),可用于极限比较或避免除零错误。
cmath.nan
表示“不是一个数”(Not a Number)。
通常由非法操作(如 0/0、sqrt(-∞))产生。
示例:
import cmath
z = cmath.sqrt(cmath.inf + 1j) # √(∞ + i)
print(z)
z2 = cmath.log(-1) / cmath.pi # = iπ / π = i
print(z2)◆◆ ◆
补充说明
1、当需要计算涉及负数开方、复数三角函数、对数等运算时,应使用 cmath,避免 math domain error。
2、cmath 中所有运算都安全地返回复数,即使结果是实数,也会以复数表示,如 1+0j。
3、对于科学、工程类任务(尤其是电子学、信号处理),cmath 是基础工具。
“点赞有美意,赞赏是鼓励”
热门跟贴