SymPy 中的参数化复数

问题描述 投票:0回答:1

考虑以下 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() 函数。有办法吗?

尝试过:

  • re() 和 im() 函数代替 as_real_imag(),
  • sympify() 而不是 parse_expr(),
  • 简化()和扩展()。 但一切都没有改变。
python sympy complex-numbers
1个回答
0
投票

您使用

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⎠
© www.soinside.com 2019 - 2024. All rights reserved.