私は lmfit python パッケージhttps://lmfit.github.io/lmfit-py/を使用して、一部のパラメーターの特定の許容変動範囲内で指定された非線形関数にデータを適合させています (これが主に、lmfit が魅力的であると感じた理由です) )。
一般に、lmfit の重要なコードは次の 2 行です。
def fcn2min(params, x_data, y_data):
result = minimize(fcn2min, params, args=(x_data, y_data))
私のアプリケーションは、36 のデータ グラフにわたってグローバル フィットを実行することです。問題は、いくつかのパラメーターが適合していない (vary=None) ことであり、それらは既知の量であり、36 のグラフすべてで変化しますが、それぞれのグラフ内では同じままです。現在、これらの既知のパラメーターを関連する x_data および y_data ポイントに渡すために、次の構文を実装しようとしています。
def fcn2min(params, x_data, y_data, known_params):
result = minimize(fcn2min, params, args=(x_data, y_data, known_params))
ここで、x_data、y_data、および known_params は同じ長さの配列です。x_data と y_data は 36 個のグラフすべての 1 つの配列で構成され、known_params は各グラフで固定されているパラメーターの繰り返しエントリを含む 3 列の配列です。
現在、プログラムの実行速度はかなり遅いです (実行が完了するまで 30 分)。また、現時点では、適合曲線はすべてのグラフで同じですが、各ローカル グラフを既知のパラメーターに適合させ、グローバル パラメーターのみに適合させたいと考えています。
私はこれを適切に行っているかどうかを尋ねたいと思いますか?y_data への参照が必要な理由はわかりましたが、なぜ fcn2min() は入力として y_data を必要とするのでしょうか? フィッティング プログラムが y_data または known_params 配列のどちらをフィッティングするかで混乱する可能性はありますか? lmfit を使用してこれを行うより良い方法はありますか、それとも別の数値パッケージを探す必要がありますか?