在numpy中获得polyfit的反函数

use*_*212 3 python numpy polynomials

我通过以下方式将二阶多项式拟合到多个x/y点:

poly  = np.polyfit(x, y, 2)
Run Code Online (Sandbox Code Playgroud)

如何在python中反转此函数,以获得对应于特定y值的两个x值?

War*_*ser 8

这是一个示例,说明如何将您的poly 答案与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])
Run Code Online (Sandbox Code Playgroud)

将多项式拟合到数据:

In [46]: poly = np.polyfit(x, y, 2)
Run Code Online (Sandbox Code Playgroud)

找到多项式具有值的位置 y0

In [47]: y0 = 4
Run Code Online (Sandbox Code Playgroud)

为此,请创建一个poly1d对象:

In [48]: p = np.poly1d(poly)
Run Code Online (Sandbox Code Playgroud)

并找到根源p - y0:

In [49]: (p - y0).roots
Out[49]: array([ 5.21787721,  0.90644711])
Run Code Online (Sandbox Code Playgroud)

校验:

In [54]: x0 = (p - y0).roots

In [55]: p(x0)
Out[55]: array([ 4.,  4.])
Run Code Online (Sandbox Code Playgroud)

  • 我不明白这个答案。你想求4处的倒数,结果却是2个值?? (2认同)