我试图用sympy提取复数的相位,但是.arg()
方法即使在简单的情况下也不会返回有用或预期的结果。
import sympy as s
A, theta = s.symbols('A theta', real = True)
expr = A*s.exp(theta*s.I)
angle = s.arg(expr)
print(angle) #Arg(A*exp(theta*I))
我希望输出仅为theta
,但它返回Arg(A*exp(theta*I)
,这是正确的,但并不是全部有用。为什么在如此简单的情况下会发生这种情况?
答案 0 :(得分:0)
函数arg
的参数必须是实际数字。没有符号。您可以从下面的页面中看到
from sympy import *
arg(1+2*I)
Out[5]: atan(2)
A=symbols('A',real=True)
arg(A+2*I)
Out[8]: arg(A + 2*I)
也许您可以实现自己的arg:
from sympy import *
A, theta = symbols('A theta', real = True)
expr = A*exp(theta*I)
simplify(simplify(atan(im(expr)/re(expr))),inverse=True)
给予
theta
ps。奇怪的是为什么这不起作用
simplify(atan(im(expr)/re(expr)),inverse=True)
---> atan(tan(theta))
但是必须打两次simplify