sympy.nsolve函数是sympy包中用于给出非线性方程数值解的函数。solve函数只能解具有解析解的方程,对于不能给出解析解的方程,则需要用nsolve解决。
格式如下:
nsolve(f, [args,] x0, modules=['mpmath'], **kwargs)
f
:待求解方程的符号表达式
args
:未知变量
x0
:初始解
modules
:解方程模式
**kwargs
:其他参数,详见官方文档
当待求f(x)函数图像特别陡峭时,会导致nsolve无法正常求解。例:
f = cos(x)*cosh(x) - 1
nsolve(f, 3.14*100)
输出:
Traceback (most recent call last):
ValueError: Could not find root within given tolerance. (1.39267e+230 > 2.1684e-19)
此时可添加参数verify=False
,代码如下:
ans = nsolve(f, 3.14*100, verify=False)
ans
输出:
312.588469032184