1
私はsympy(python 3)で複雑な関数を扱っていますが、方程式を単純化するためsympyを得るのに問題があります。特に、複雑な指数関数を実数部と虚数部に分解するために、オイラーのアイデンティティをsympyに使用することはできません。ここに私のコードは次のとおりです。sympyの複素数:オイラーのアイデンティティを解決する
import sympy as sym
from sympy import I, init_printing
# setup printing
init_printing()
# complex potential cylinder in uniform flow
U,z,R,theta=sym.symbols('U z R theta')
F=U*z+U/z
# complex velocity cylinder in uniform flow
compVel=sym.diff(F,z)
exp1=sym.sympify('R*exp(I*theta)')
compVel=compVel.subs(z,exp1)
print(compVel)
phi,psi=sym.symbols('phi psi')
phi=sym.re(compVel)
psi=sym.im(compVel)
print(phi)
print(psi)
私はこのコードを実行すると、出力がされています
U - U*exp(-2*I*theta)/R**2
re(U) - re(U*exp(-2*I*theta)/R**2)
im(U) - im(U*exp(-2*I*theta)/R**2)
私は何かが足りないか、この単純化を認識行うのに十分強力でsympyではないだろうか?前もって感謝します!
Sympyはすべての変数が複雑であるとみなし、 'comp'の実数部を' U'、 'R'などの部分で正しく返します。変数を実数として宣言すると'U、z、R、theta = sym.symbols( 'U z R theta'、real = True)'、sympyは期待される出力を返します。 – Stelios
@Stelios答えが必要です。 – FTP
ありがとうございました。 – Mike