解决()执行中止
solve() execution aborted
我在使用 Sympy 求解方程时遇到问题。当我运行代码时,例如:
print(correction(10))
我希望它打印一个数字 f。相反,它给我错误:执行中止。
def correction(r):
from sympy import cosh, log, exp, symbols, solve
f = symbols('f')
def equation():
return cosh(((r - 1.0)/(r + 1.0))*(log(2.0)/f)) - 0.5*exp(log(2.0)/f)
correction = solve(equation(),f)
return correction
有什么问题?
你的方程是高度非线性的,我的猜测是找不到封闭形式的解。这就是 sympy.solve
失败的原因。您唯一的选择是用数值方法求解方程。 Sympy 为此目的提供了 nsolve
函数,这在数值求解器中很典型,需要对解进行估计。
import sympy as sp
r, f = sp.symbols('r, f')
expr = sp.cosh(((r - 1)/(r + 1))*(sp.log(2)/f)) - sp.Rational(1,2)*sp.exp(sp.log(2)/f)
sol = sp.nsolve(expr.subs({r:10}), f, 0.5)
print(sol)
0.699259455239414
我在使用 Sympy 求解方程时遇到问题。当我运行代码时,例如:
print(correction(10))
我希望它打印一个数字 f。相反,它给我错误:执行中止。
def correction(r):
from sympy import cosh, log, exp, symbols, solve
f = symbols('f')
def equation():
return cosh(((r - 1.0)/(r + 1.0))*(log(2.0)/f)) - 0.5*exp(log(2.0)/f)
correction = solve(equation(),f)
return correction
有什么问题?
你的方程是高度非线性的,我的猜测是找不到封闭形式的解。这就是 sympy.solve
失败的原因。您唯一的选择是用数值方法求解方程。 Sympy 为此目的提供了 nsolve
函数,这在数值求解器中很典型,需要对解进行估计。
import sympy as sp
r, f = sp.symbols('r, f')
expr = sp.cosh(((r - 1)/(r + 1))*(sp.log(2)/f)) - sp.Rational(1,2)*sp.exp(sp.log(2)/f)
sol = sp.nsolve(expr.subs({r:10}), f, 0.5)
print(sol)
0.699259455239414