ヒステリシスループがあります。私はerf関数を使ってデータに合わせたいと思っています。データにerf関数を適合
ループの一部が下のグラフで黒く表示されます。
私は次のコードでデータを合わせてscipy.optimize.curve_fit
とscipy.special.erf
機能を使用しようとしています:
import scipy.special
import scipy.optimize
def erfunc(x,a,b):
return mFL*scipy.special.erf((x-a)/(b*np.sqrt(2)))
params,extras = scipy.optimize.curve_fit(erfunc,x_data,y_data)
x_erf = list(range(-3000,3000,1))
y_erf = erfunc(x_erf,params[0],params[1])
mFL
は一定で、a
コントロールERF曲線の位置とb
曲線の傾きであります。 (私の知る限り)
しかし、私は得られたx_erfとy_erfのデータを(青で)プロットします。私は、控えめに言っても理想的ではないとする、次のフィッティングを得る:
私は適切なフィットを得ることができる方法はありますか?
編集:データファイルへのリンク :https://www.dropbox.com/s/o0uoieg3jkliun7/xydata.csv?dl=0 のparams [0] = 1.83289895、PARAMS 1 = 0.27837306
を再現するコードはありますか? x_dataとy_dataの実際の値を教えて、これを自分で実行することはできますか? – Eric
異なる開始値を試したことがありますか?おそらくローカルミニマムに最適化されているかもしれません。 – Glostas