我有以下x,y數據(綠色)。我想獲得適合我曲線的多項式函數。 Python中適合的曲線看起來很好(藍色)。 當我使用多項式的係數,我自己建立函數時,結果不在藍色曲線上。對於X的小值,這可能仍然適合,但對於大值是完全錯誤的。在圖像中,顯示了x = 15和2.5的y(大點)。python多項式曲線擬合 - 係數不正確
數據:
x, y
0.5883596178 18562.5
0.6656014904 20850
0.7407008741 22700
0.8310800498 24525
0.9479506185 26370
1.0768193651 27922
1.1983161945 29070
1.3837939534 30410
1.6650549531 31800
1.946640319 32740
2.3811442965 33655
2.9126326549 34290
3.6970654824 34800
4.2868951065 34987.5
4.8297935972 35102
5.7876198835 35175
7.3463468386 35050
8.9861037519 34725
10.5490727095 34285
13.2260016159 33450
16.5822270413 32795
20.5352502646 32472
25.7462680049 32475
代碼:
data = plb.loadtxt('fig3_1_tiltingRL.dat')
x = data[:,0]
y= data[:,1]
#plt.xscale('log')#plt.set_xscale('log')
coefs = poly.polyfit(x, y, 10)
ffit = poly.polyval(x, coefs)
plt.plot(x, ffit)
plt.plot(x, y, 'o')
print(coefs)
xPoints =15.
yPt = (-6.98662492e+03 * xPoints**0 + 6.57987934e+04 * xPoints**1 -\
4.65689536e+04 * xPoints**2 + 1.85406629e+04 * xPoints**3 -\
4.49987278e+03 * xPoints**4 + 6.92952944e+02 * xPoints**5 -\
6.87501257e+01 * xPoints**6 + 4.35851202e+00 * xPoints**7 -\
1.69771617e-01 * xPoints**8 + 3.68535224e-03 * xPoints**9 -\
3.39940049e-05 * xPoints**10)
print(yPt)
plt.plot(xPoints, yPt , 'or',label="test" ,markersize=18, color='black')
plt.show()
請發表一個簡短而自成體系'.py'源文件:http://sscce.org/ – pts
這是一種可疑的是,即使係數均爲負,奇怪的人都是積極的。 'print(coefs)'的確切輸出是什麼? –