python擬合曲線比較簡(jiǎn)單的一般模板
注釋都是個(gè)人理解,可能會(huì)有錯(cuò)誤
但是為了數(shù)學(xué)建模之類(lèi)的算一下是沒(méi)有問(wèn)題啦
#導(dǎo)入各種需要的包#
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
#定義所需要擬合的帶參數(shù)的一般函數(shù)類(lèi)型#
def fmax(x,a,b,c):
return a*np.sin(x*np.pi/6+b)+c
'''
def func(x, a, b, c):
return a * np.exp(-b * x) + c'''
#輸入數(shù)據(jù)#
x=np.arange(1,13,1)
x1=np.arange(1,13,0.01)
#第1、2個(gè)參數(shù)為坐標(biāo)范圍的起始點(diǎn)和終止點(diǎn),第3個(gè)參數(shù)為最小刻度#
#這里的x和y就是實(shí)際數(shù)據(jù)的量一定要一樣,但是擬合的曲線就不一定啦#
ymax=np.array([17, 19, 21, 28, 33, 38, 37, 37, 31, 23, 19, 18 ])
'''
np.arange(a,b,c)其實(shí)返回的也是一個(gè)數(shù)組
np.arange(1,3)
返回array([1, 2])
'''
fita,fitb=optimize.curve_fit(fmax,x,ymax,[1,1,1])
#最后的數(shù)組是對(duì)所求函數(shù)除x外參數(shù)的大小限制#
'''
參數(shù)分別為函數(shù)一般形式、橫坐標(biāo)范圍、縱坐標(biāo)范圍、
返回兩個(gè)數(shù)組,第一個(gè)是定義的函數(shù)中除x外各個(gè)參數(shù)的值,第二個(gè)是協(xié)方差
'''
print(fita)
plt.plot(x,ymax)
#畫(huà)出原來(lái)實(shí)際數(shù)據(jù)的圖形#
plt.plot(x1,fmax(x1,fita[0],fita[1],fita[2]))
#畫(huà)出擬合后獲得曲線的圖形#
plt.show()