実現したいこと
y = a sin(bx + c) + d という関数でフィッティングをしたいのですが、scipyのcurve_fitでうまくできませんでした。改善点、アドバイスいただけると幸いです。
発生している問題・エラーメッセージ
現在の出力
[-0.24459067 0.88349125 1.9100531 5.00003073]
正しい出力
[2 3 4 5 ]
該当のソースコード
python
import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit # サンプルデータx = np.arange(0,10, 0.1)y = 2 * np.sin(3 * x + 4) + 5 # フィッティング関数def func(x, a, b, c, d): return a * np.sin(b * x + c) + d # フィッティングを実行param, cov = curve_fit(func, x, y)print(param)y_fit = func(x, param[0], param[1], param[2], param[3]) # グラフの描画plt.scatter(x, y, c="r", s=5, label="data")plt.plot(x, y_fit, c='b', linewidth=1, label="fitting")plt.legend();
0 コメント