python擬合曲線比較簡單的一般模板
注釋都是個人理解,可能會有錯誤
但是為了數學建模之類的算一下是沒有問題啦
#導入各種需要的包#
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
#定義所需要擬合的帶參數的一般函數類型#
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'''
#輸入數據#
x=np.arange(1,13,1)
x1=np.arange(1,13,0.01)
#第1、2個參數為坐標范圍的起始點和終止點,第3個參數為最小刻度#
#這里的x和y就是實際數據的量一定要一樣,但是擬合的曲線就不一定啦#
ymax=np.array([17, 19, 21, 28, 33, 38, 37, 37, 31, 23, 19, 18 ])
'''
np.arange(a,b,c)其實返回的也是一個數組
np.arange(1,3)
返回array([1, 2])
'''
fita,fitb=optimize.curve_fit(fmax,x,ymax,[1,1,1])
#最后的數組是對所求函數除x外參數的大小限制#
'''
參數分別為函數一般形式、橫坐標范圍、縱坐標范圍、
返回兩個數組,第一個是定義的函數中除x外各個參數的值,第二個是協方差
'''
print(fita)
plt.plot(x,ymax)
#畫出原來實際數據的圖形#
plt.plot(x1,fmax(x1,fita[0],fita[1],fita[2]))
#畫出擬合后獲得曲線的圖形#
plt.show()