使用Sympy求解方程时出现NotImplementedError错误如何修复
问题原因
你调用的sympy.solve()是用于求解方程解析解的接口,你提供的属于超越方程,sympy没有内置对应的解析解求解算法,因此触发报错。改用数值求解方法即可正常运行。
修复方案1:使用sympy内置数值求解接口nsolve
仅需要把求解逻辑替换为nsolve,传入你手动计算得到的初始猜测值即可,修改后代码如下:
import sympy as sy x = sy.symbols("x", real=True) u = x**3 eq1 = sy.Eq(u - 6*sy.sin(u) + 10*x - 6*x -1, 0) # 数值求解,初始猜测值可根据你手动计算的根的范围调整,示例给出的猜测值为1 sol1 = sy.nsolve(eq1, x, 1) print(sol1)
运行后输出数值解,示例输出:0.986621755765375
修复方案2:使用scipy做数值求解(更适合数值计算场景)
如果后续需要做更多数值运算,也可以使用scipy的求解接口,代码如下:
import numpy as np from scipy.optimize import root_scalar def equation(x): u = x**3 return u - 6*np.sin(u) + 4*x - 1 # 求解,可根据你手动计算的结果调整根所在的区间范围 sol = root_scalar(equation, bracket=[0, 2], method='brentq') print(sol.root)
运行输出结果与sympy的nsolve结果一致。
内容的提问来源于stack exchange,提问作者Meimei Leigh
相关产品推荐
相关产品推荐

