考虑以下 Python 代码:
import sympy as sp
t = sp.symbols('t', real=True)
y = sp.parse_expr(input("y = "))
real_imag = y.as_real_imag()
print("Real:", real_imag[0])
print("Imaginary:", real_imag[1])
当y变量的输入为“t**2 + t*I”时,输出为:
Real: re(t)**2 - im(t)**2 - im(t)
Imaginary: 2*re(t)*im(t) + re(t)
为什么输出不是这样的?
Real: t**2
Imaginary: t
输入必须来自用户,这是必不可少的。并且输出必须不包含 re() 和 im() 函数。有办法吗?
尝试过:
您使用
real=True
创建的符号将不会被 parse_expr
使用,除非您将其传入:
In [11]: t = symbols('t', real=True)
In [12]: y = parse_expr('t**2 + I*t', local_dict={'t':t})
In [13]: y
Out[13]:
2
t + ⅈ⋅t
In [14]: y.as_real_imag()
Out[14]:
⎛ 2 ⎞
⎝t , t⎠