红色圆圈是原始值,蓝色十字是使用 的线性插值numpy.interp
。
我想使用scipy.optimize.bisect
(例如)找到这个numpy数组(红色圆圈)的过零的横坐标。由于这是一个 numpy 数组(而不是函数),我无法将其直接传递给scipy.optimize.bisect
. 所以我想传递一个函数,将 numpy 数组插值平分。这是我目前使用的代码:
def Inter_F(x,xp,fp):
return np.interp(x,xp,fp)
Numpyroot = scp.optimize.bisect(Inter_F,0,9,args=(XNumpy,YNumpy))
我找到了一个看起来正确的值,Numpyroot = 3.376425289196618。
我想知道:
- 如果这是在 numpy 数组上使用 scipy.optimize.bisect 的正确技术方法?特别是当我要对不同的 numpy 值集执行 10^6 次时。
- 如果执行线性插值不会影响 bisect 将要找到的结果,如果是,是否有更好的选择?
这是两个numpy数组:
XNumpy = array([ 0. , 1.125, 2.25 , 3.375, 4.5 , 5.625, 6.75 , 7.875, 9. ])
YNumpy = array([ -2.70584242e+04, -2.46925289e+04, -1.53211676e+04,
-2.30000000e+01, 1.81312104e+04, 3.41662461e+04,
4.80466863e+04, 5.75113178e+04, 6.41718009e+04])