与えられた共鳴データにガウス型とローレンツ型を当てはめるプログラムを Python で書いています。使い始めたのですが、最適化されたパラメータの誤差を共分散行列から取り出すのに苦労し、scipy.optimize.leastsq
使い始めました。optimize.curve_fit
ガウスとローレンツの合計に適合する関数を定義しました。
def mix(x,*p):
ng = numg
p1 = p[:3*ng]
p2 = p[3*ng:]
a = sumarray(gaussian(x,p1),lorentzian(x,p2))
return a
ここp
で、 は適合パラメーターでの初期推定値の配列です。を使用して呼び出されるインスタンスは次のcurve_fit
とおりです。
leastsq,covar = opt.curve_fit(mix,energy,intensity,inputtot)
現時点ではnumg
(ガウス形状の数) はグローバル変数です。curve_fit
でできるように、代わりに追加の引数として組み込む方法はありleastsq
ますか?