Sympy绝对值和复杂符号的参数

时间:2015-04-02 17:01:48

标签: sympy simplification

在使用Sympy进行符号数学运算时遇到了以下问题:

from sympy import *
txx, tyx, txy, tyy, tp, tn = symbols('t_xx t_yx t_xy t_yy t_p t_n', complex=True)

#define a complex symbol
tp = txx-I*tyx

Abs(tp), arg(tp)
#will just return |txx-i*tyx|, arg(txx-i*tyx)

但是,返回的绝对值和参数不是sqrt(txx**2+tyx**2), atan(tyx/txx)的形式,正如您对复数所期望的那样。

我也试过

simplify(Abs(tp).expand(complex=True))
#returns |Retxx-i*Retyx+i*Imtxx+Imtxy|, but no further simplification

再次为复数而工作,但不是这里定义的复杂符号的符号。这还没有实现,还是我做得不对?

1 个答案:

答案 0 :(得分:0)

如果您使用属性real = True定义符号列表,那么您将获得Abs(tp)的正确表达式。由于你的同情符号是复杂的,所以Abs()不知道这些部分的真实和想象部分txx,tyx等,所以Abs()的输出不能给你你所期望的。