如何解决在python中找到函数的根
我需要在python中找到一些函数的根,我只有数值数据,没有实际的函数形式。我尝试使用 scipy.optimize.root
,但得到了一些奇怪的结果。这是重现问题的最小代码:
import numpy as np
from scipy.interpolate import CubicSpline
from scipy import optimize
def func(x):
return (x-4)*(np.exp(x)+1)
x = np.random.rand(1000)*10
y = func(x)
data = np.column_stack((x,y))
p = data[:,0].argsort()
x = data[:,0][p]
y = data[:,1][p]
cs = CubicSpline(x,y)
sol = optimize.root(cs,[0],method='hybr')
print(sol.x)
代码的输出是 -5.42024365
,这显然不是我选择的函数的根。如果我尝试 cs(-5.42024365)
我得到 -0.00305901
(初始数据是随机生成的,因此该值会有所改变,但显然不是零)。如果我尝试 cs(4)
,我会得到 -4.46575001e-07
,它看起来更像一个根(它实际上是我试图找到的根)。我究竟做错了什么。为什么 scipy.optimize.root
没有给我正确的根,即使是这个简单的问题?谢谢!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。