天天看點

Python曲線拟合1、多項式拟合範例2、指定函數拟合參考

1、多項式拟合範例

Python曲線拟合1、多項式拟合範例2、指定函數拟合參考
# _*_coding:utf-8_*_
__author__ = 'Alex_XT'
# Python imports
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(, , )
y = np.array([, , , , , , , , , , , , , , , ])
z1 = np.polyfit(x, y, )  # 用3次多項式拟合
p1 = np.poly1d(z1)
print(p1)  # 在螢幕上列印拟合多項式
yvals = p1(x)  # 也可以使用yvals=np.polyval(z1,x)
plot1 = plt.plot(x, y, 'k.', markersize=, label='$original values$')
plot2 = plt.plot(x, yvals, 'r', lw=, label='$polyfit values$')
plt.xlabel('$X$')
plt.ylabel('$Y$')
plt.legend(loc=)  # 指定legend的位置,讀者可以自己help它的用法
plt.title('polyfitting')
plt.show()

           
Python曲線拟合1、多項式拟合範例2、指定函數拟合參考
# _*_coding:utf-8_*_
__author__ = 'Alex_XT'
# Python imports
import matplotlib.pyplot as plt
import numpy as np

x = [,,,,,,,,,]
y = np.array([,,,,-,,-,-,-,-])
z1 = np.polyfit(x, y, )  # 用3次多項式拟合
p1 = np.poly1d(z1)
print(p1)  # 在螢幕上列印拟合多項式
yvals = p1(x)  # 也可以使用yvals=np.polyval(z1,x)
plot1 = plt.plot(x, y, 'k.', markersize=, label='original values')
plot2 = plt.plot(x, yvals, 'r', lw=, label='overfit')
plot3=plt.plot([,],[,-],'b',label='best fit')
plt.xlabel('$X$')
plt.ylabel('$Y$')
plt.legend(loc=)  # 指定legend的位置,讀者可以自己help它的用法
plt.title('polyfitting')
plt.show()
           

2、指定函數拟合

Python曲線拟合1、多項式拟合範例2、指定函數拟合參考
# _*_coding:utf-8_*_
__author__ = 'Alex_XT'
# Python imports
#使用非線性最小二乘法拟合
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import numpy as np

#用指數形式來拟合
x = np.arange(, , )
y = np.array([, , , , , , , , , , , , , , , ])
def func(x,a,b):
    return a*np.exp(b/x)

popt, pcov = curve_fit(func, x, y)
a=popt[]#popt裡面是拟合系數,讀者可以自己help其用法
b=popt[]
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=)#指定legend的位置,讀者可以自己help它的用法
plt.title('curve_fit')
plt.show()
           

參考

【1】python曲線拟合panhaidongphd新浪部落格

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