我有一个 numpy.poly1d
多项式如下:
c = np.poly1d([2,-4,-28,62,122,-256,-196,140,392,240,72])
在 -2.5 <= x <= 2.5
范围内绘制时,曲线看起来像这样:
如何在给定范围内找到该曲线的最小点,不使用用于绘制曲线的离散值(我的意思是仅使用连续的 poly1d
对象)?
最佳答案
好的,与@matiasg 的功能有点不同,目的是制作更多可复制的代码并使用尽可能多的矢量化代码。
import numpy as np
from matplotlib.pyplot import *
c = np.poly1d([2,-4,-28,62,122,-256,-196,140,392,240,72])
crit = c.deriv().r
r_crit = crit[crit.imag==0].real
test = c.deriv(2)(r_crit)
# compute local minima
# excluding range boundaries
x_min = r_crit[test>0]
y_min = c(x_min)
plot( x_min, y_min, 'o' )
xc = np.arange(-2.5, 2.6, 0.02)
yc = c(xc)
plot( xc, yc)
xlim([-2.5,2.5])
show()
图片 1:结果。请注意,在您的范围之外还有另一个局部最小值;)
关于python - 获取 numpy.poly1d 曲线的最小点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634217/