はじめに
この記事では、lmfitライブラリを使用して減衰高調波発振器モデルによるカーブフィッティングを行う方法について解説します。lmfitはScipy.optimize.curve_fitの拡張版として、非線形最小二乗法を用いたデータ分析に役立つツールです。減衰高調波発振器モデルは、時間とともに減衰する振動データの解析に適しており、物理学や工学分野でよく使用されます。
解説
モジュールのインポート
バージョン
データの生成
\[ f(x; A, \mu, \sigma, \gamma) = \frac{A\sigma}{\pi [1 – \exp(-x/\gamma)]}
\Big[ \frac{1}{(x-\mu)^2 + \sigma^2} – \frac{1}{(x+\mu)^2 + \sigma^2} \Big]\]
上記の関数を使用してデータを作成します。生成されたデータは以下のようになります。

モデルの定義
lmfit.models
の DampedHarmonicOscillatorModel
をモデル関数として用います。
初期パタメータの推定
damp_mod.guess(y, x=x)
により、初期値を推定します。
カーブフィット
out = damp_mod.fit(y, pars, x=x)
により、カーブフィッティングを実行します。
フィッティング結果の表示
print(result.fit_report())
により、フィッティングの結果を見ることができます。
result.plot_fit()
によりデータとフィッティングカーブが表示されます。

result.plot()
とすることで残差とともにフィッティング結果が表示される。

まとめ
減衰高調波発振器モデルによるカーブフィッティングは、振動データの解析において非常に有用なツールです。lmfitライブラリを活用することで、パラメータの制約や初期値の設定が容易になり、より柔軟なモデリングが可能になります。このアプローチは特に物理系の減衰振動現象や機械振動、構造解析などの分野で広く応用されています。
コメント