copipe Python | 任意の関数でフィッティングする。

概要

scipy.optimizeが持つcurve_fit(関数名, x座標, y座標, p0=初期値)を使って、xyデータを自分で定義した任意の関数でフィッティングすることができる。戻り値は、結果のリストと誤差のリストとなる。

コード

from scipy.optimize import curve_fit
import numpy as np

def func(x, a, b, c):
    return a*np.exp(-(x-b)**2/c)

xData = np.arange(0,20,0.1)
yData = 3*np.exp(-(xData-10)**2/2)
coef, cov = curve_fit(func, xData, yData, p0=[2, 9, 3])
print(coef)

結果

[ 3. 10.  2.]