如何在Python中表示i + e^(i*pi)?cmath代码写法及j用法疑问
解答:Python复数表示与欧拉公式表达式优化
首先纠正一个关键错误:你用cmath.sqrt(-1j)来表示数学里的i(√(-1))完全没必要,而且结果不对——cmath.sqrt(-1j)算出来是(0.7071+0.7071j),也就是(1+i)/√2,根本不是你要的虚数单位。
关于虚数单位的写法
在Python里,复数的虚数单位是小写j,直接写1j就等价于数学中的i。你疑问的“无理数后加j是否正确”——答案是肯定的:只要是用来表示复数的虚部,不管前面是整数、浮点数(包括无理数的浮点近似),加j都是Python支持的合法写法,比如2j、cmath.pi*1j、cmath.e*1j都没问题。
正确的代码实现
根据欧拉公式,e^(iπ) = -1,所以你要的表达式i + e^(iπ)结果是-1 + i。用cmath模块的正确代码应该是:
import cmath # 直接用1j表示虚数单位i ans = 1j + cmath.e ** (cmath.pi * 1j) print(ans) # 输出近似值 (-1+1.2246467991473532e-16j),虚部接近0是浮点精度问题,实际等价于-1+1j
也可以用cmath.exp函数替代幂运算,效果完全一致:
ans = 1j + cmath.exp(cmath.pi * 1j)
内容的提问来源于stack exchange,提问作者Z-Ninja
相关产品推荐
相关产品推荐

