2016-04-25 123 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

你是男人,男人。 –