python曲線擬合

http://blog.sina.com.cn/s/blog_aed5bd1d0102vid7.htmlhtml

1.多項式擬合範例:函數

import matplotlib.pyplot as plt import numpy as np x = np.arange(1, 17, 1) y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60]) z1 = np.polyfit(x, y, 3) # 用3次多項式擬合
p1 = np.poly1d(z1) print(p1) # 在屏幕上打印擬合多項式
yvals=p1(x) # 也可使用yvals=np.polyval(z1,x)
plot1=plt.plot(x, y, '*',label='original values') plot2=plt.plot(x, yvals, 'r',label='polyfit values') plt.xlabel('x axis') plt.ylabel('y axis') plt.legend(loc=4) # 指定legend的位置,讀者能夠本身help它的用法
plt.title('polyfitting') plt.show() plt.savefig('p1.png')

2.指定函數擬合spa

# 使用非線性最小二乘法擬合
import matplotlib.pyplot as plt from scipy.optimize import curve_fit import numpy as np # 用指數形式來擬合
x = np.arange(1, 17, 1) y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60]) def func(x,a,b): return a*np.exp(b/x) popt, pcov = curve_fit(func, x, y) a=popt[0] # popt裏面是擬合係數,讀者能夠本身help其用法
b=popt[1] yvals=func(x,a,b) plot1=plt.plot(x, y, '*',label='original values') plot2=plt.plot(x, yvals, 'r',label='curve_fit values') plt.xlabel('x axis') plt.ylabel('y axis') plt.legend(loc=4) # 指定legend的位置,讀者能夠本身help它的用法
plt.title('curve_fit') plt.show() plt.savefig('p2.png')
相關文章
相關標籤/搜索