2015-04-02 150 views
1

在做象征性的数学与Sympy的论点我遇到了以下问题: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 

再次工作了复数而不是复杂的符号在这里定义的符号。这还没有执行还是我没有做对吗?

回答

0

如果您使用real = True属性定义您的符号列表,那么您将得到Abs(tp)的正确表达式。因为你的sympy符号是复杂的,所以Abs()不知道这些片段的实部和虚部,txx,tyx等等,所以Abs()的输出不能给你你所期望的。

+0

谢谢!尽管arg()仍然不起作用,但我试过了,你对Abs()的描述是真实的。但在我的情况txx,txy **应该是**一般复杂。 – Phyinmi 2015-04-02 22:28:36