python - 获取 numpy.poly1d 曲线的最小点

标签 python numpy scipy

我有一个 numpy.poly1d多项式如下:

c = np.poly1d([2,-4,-28,62,122,-256,-196,140,392,240,72])

-2.5 <= x <= 2.5 范围内绘制时,曲线看起来像这样:

enter image description here

如何在给定范围内找到该曲线的最小点,使用用于绘制曲线的离散值(我的意思是仅使用连续的 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()

result

图片 1:结果。请注意,在您的范围之外还有另一个局部最小值;)

关于python - 获取 numpy.poly1d 曲线的最小点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634217/

相关文章:

python - 'numpy.ndarray' object is not callable error with optimize.minimize

python - 如何在Python中动态检索模型列值

python - numpy 与 python : convert 3d array to 2d

python - 如何使 mpmath 函数返回 python float?

Python Numpy - 创建长度基于一维数组的二维数组

python - 二维 numpy 数组的重采样

python - 如何从按连续变量分层的 Pandas 数据框中获取分层随机样本

python - 如何从子函数将模块导入 main()?

python - 如何根据Python中的现有列更新新列

python - 实现 Waterman-Eggert 算法