1

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

複素数に対しては再び機能しましたが、ここで定義された複素シンボルのシンボルでは機能しませんでした。これはまだ実装されていませんか、それとも正しく実行していませんか?

4

1 に答える 1

0

シンボル リストを属性 real=True で定義すると、Abs(tp) の正しい式が得られます。複雑な sympy シンボルを指定すると、Abs() はこれらの部分 txx、tyx などの実数部と虚数部を認識しないため、Abs() の出力は期待どおりになりません。

于 2015-04-02T21:11:12.320 に答える