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

时间:2019-07-18 15:58:41

标签: python sympy

我试图用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),这是正确的,但并不是全部有用。为什么在如此简单的情况下会发生这种情况?

1 个答案:

答案 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