Sympy解决不会回答

时间:2016-04-25 10:13:14

标签: python performance sympy equation

我试图用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,gamma,muo和bm只是实数。我试图在bm的一系列值上求解r的等式,但它不会返回任何数字。在运行代码块时,我的python笔记本只显示代码正在运行但是没有返回值也没有停止。是否有替代功能或某种命令我应该给予同情以使其更快地工作?

1 个答案:

答案 0 :(得分:3)

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

要在数字上解决它,你需要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