我正在尝试提取 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)
这是真的,但并不是那么有用。 为什么这么简单的情况会发生这种情况?
看起来函数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)
也许你可以实现自己的参数:
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
打电话两次