2014-09-19 46 views
2

我想为下面的程序分离输出的实部和虚部。使用Sympy分离实部和虚部

import sympy as sp 
a = sp.symbols('a', imaginary=True) 
b=sp.symbols('b',real=True) 
V=sp.symbols('V',imaginary=True) 
a=4*sp.I 
b=5 
V=a+b 
print V 

请帮忙。提前致谢。

回答

2

线条

b=sp.symbols('b',real=True) 
V=sp.symbols('V',imaginary=True) 

没有任何效果,因为你覆盖变量b,并在线路

b=5 
V=a+b 

了解Python的变量和SymPy符号之间的区别是很重要的使用SymPy时V 。无论何时使用=,您都在分配一个Python变量,它只是指向您分配给它的数字或表达式的指针。再次赋值会改变指针,而不是表达式。见http://docs.sympy.org/latest/tutorial/intro.htmlhttp://nedbatchelder.com/text/names.html

做你想做什么,可以使用as_real_imag()方法,像

In [1]: expr = 4*I + 5 

In [2]: expr.as_real_imag() 
Out[2]: (5, 4) 

您还可以使用re()im()功能:

In [3]: re(expr) 
Out[3]: 5 

In [4]: im(expr) 
Out[4]: 4