Я работаю со сложными функциями в sympy (python 3), и у меня проблемы с получением 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 недостаточно силен, чтобы распознать это упрощение? Заранее спасибо!
compVel
в терминах действительной частиU
,R
и т. Д. Если вы объявляете переменные как вещественные с помощьюU,z,R,theta=sym.symbols('U z R theta', real = True)
, sympy возвращает ожидаемый результат. - person Stelios   schedule 30.05.2017