solve()执行中止

2024-05-16 21:42:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用Sympy解方程时遇到了麻烦。当我运行代码时,例如:

print(correction(10))

我希望它能打印出一个f的数字,但它却给了我一个错误:executionaborted。在

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

有什么问题吗?在


Tags: 代码fromlogreturndef错误数字print
1条回答
网友
1楼 · 发布于 2024-05-16 21:42:47

你的方程是高度非线性的,我的猜测是,一个封闭形式的解是找不到的。这就是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

相关问题 更多 >