为什么 sympy.arg() 函数不返回预期的输出



我正在尝试提取 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打电话两次

最新更新