在 numpy 中获取 polyfit 的反函数
Get the inverse function of a polyfit in numpy
我通过以下方式将二阶多项式拟合到多个 x/y 点:
poly = np.polyfit(x, y, 2)
如何在 python 中反转此函数以获得对应于特定 y 值的两个 x 值?
np.polyfit
returns 最佳拟合多项式的系数,从大到大。因此你的 poly
包含 c2, c1, c0
并且你必须解决
. 2
. c x + c x + c = y
. 2 1 0
可以在许多地方找到解决方案,例如 here。
这是一个示例,说明如何将 poly
我的回答在 Inverse function of numpy.polyval().
首先是一些数据:
In [44]: x
Out[44]: array([0, 1, 2, 3, 4, 5, 6, 7])
In [45]: y
Out[45]: array([ 9, 4, 0, -1, -1, 4, 8, 16])
对数据拟合多项式:
In [46]: poly = np.polyfit(x, y, 2)
找出多项式的值为y0
的位置
In [47]: y0 = 4
为此,创建一个 poly1d
对象:
In [48]: p = np.poly1d(poly)
并找到 p - y0
的根:
In [49]: (p - y0).roots
Out[49]: array([ 5.21787721, 0.90644711])
检查:
In [54]: x0 = (p - y0).roots
In [55]: p(x0)
Out[55]: array([ 4., 4.])
关注 Warren 的回答
p = np.poly1d(m1)
print(p)
y0 = returns[sr.argmax()]
x0 = p(y0)
#x0 = p((p - y0).roots)
print(x0)
print(y0)
我通过以下方式将二阶多项式拟合到多个 x/y 点:
poly = np.polyfit(x, y, 2)
如何在 python 中反转此函数以获得对应于特定 y 值的两个 x 值?
np.polyfit
returns 最佳拟合多项式的系数,从大到大。因此你的 poly
包含 c2, c1, c0
并且你必须解决
. 2
. c x + c x + c = y
. 2 1 0
可以在许多地方找到解决方案,例如 here。
这是一个示例,说明如何将 poly
我的回答在 Inverse function of numpy.polyval().
首先是一些数据:
In [44]: x
Out[44]: array([0, 1, 2, 3, 4, 5, 6, 7])
In [45]: y
Out[45]: array([ 9, 4, 0, -1, -1, 4, 8, 16])
对数据拟合多项式:
In [46]: poly = np.polyfit(x, y, 2)
找出多项式的值为y0
In [47]: y0 = 4
为此,创建一个 poly1d
对象:
In [48]: p = np.poly1d(poly)
并找到 p - y0
的根:
In [49]: (p - y0).roots
Out[49]: array([ 5.21787721, 0.90644711])
检查:
In [54]: x0 = (p - y0).roots
In [55]: p(x0)
Out[55]: array([ 4., 4.])
关注 Warren 的回答
p = np.poly1d(m1)
print(p)
y0 = returns[sr.argmax()]
x0 = p(y0)
#x0 = p((p - y0).roots)
print(x0)
print(y0)