2017-02-11 60 views
2

我有適合二次多項式以下列方式的一些X/Y點:得到一個polyfit的反函數在numpy的

poly = np.polyfit(x, y, 2) 

我怎樣才能反轉在Python此功能,以獲得兩個x值對應於特定的y值?

+0

你看到這個http://stackoverflow.com/questions/32847605/reverse-output-of- polyfit-numpy的? – Chuck

+0

也看看http://stackoverflow.com/questions/23749610/inverse-function-of-numpy-polyval –

回答

4

下面是一個例子,說明如何結合您的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 object:

p - y0 10個
In [48]: p = np.poly1d(poly) 

,並找到根源:

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.]) 
3

np.polyfit返回最佳擬合多項式的係數,最高優先。因此,你的poly包含c2, c1, c0,你必須解決

.  2 
. c x + c x + c = y 
. 2  1  0 

該解決方案可在很多地方,例如here找到。