2016-04-25 126 views
1

我想用sympy求解太阳风一维稳态模型的方程。我有以下代码Sympy求解不会返回答案

from sympy import Eq, var, solve 
var('r',real=True) 
eq = Eq((1./2.)*((CF**2)/(r))+CT*r**(gamma)+bm/(2.*muo) - CM) 
a = solve(eq,r) 

其中CF,CT,CM,伽马,muo和bm只是实数。我正在试图解决r值超过bm值的范围,但它不会返回任何数字。在运行代码块时,我的python笔记本只显示代码正在运行,但不返回值,也不停止。有没有其他的功能或者我应该给sympy的某种命令,以使它更快地工作?

回答

3

该方程涉及r的两个幂的和,包括r ** gamma。除非伽玛是一个非常小的整数(在-4和4之间),否则没有希望象征性地解决这个问题(这是sympy的目的)。

要解决它的数值,你需要scipy而不是sympy。例如:

from scipy.optimize import fsolve 
func = lambda r : (1./2.)*((CF**2)/(r))+CT*r**(gamma)+bm/(2.*muo) - CM 
# assign some numeric values to CF, CT, gamma, bm, muo, CM 
sol = fsolve(func, 1) # 1 is the initial guess for the solver 
+0

你是男人,男人。 –