我有適合二次多項式以下列方式的一些X/Y點:得到一個polyfit的反函數在numpy的
poly = np.polyfit(x, y, 2)
我怎樣才能反轉在Python此功能,以獲得兩個x值對應於特定的y值?
我有適合二次多項式以下列方式的一些X/Y點:得到一個polyfit的反函數在numpy的
poly = np.polyfit(x, y, 2)
我怎樣才能反轉在Python此功能,以獲得兩個x值對應於特定的y值?
下面是一個例子,說明如何結合您的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.])
np.polyfit
返回最佳擬合多項式的係數,最高優先。因此,你的poly
包含c2, c1, c0
,你必須解決
. 2
. c x + c x + c = y
. 2 1 0
該解決方案可在很多地方,例如here找到。
你看到這個http://stackoverflow.com/questions/32847605/reverse-output-of- polyfit-numpy的? – Chuck
也看看http://stackoverflow.com/questions/23749610/inverse-function-of-numpy-polyval –