XLPack ソルバー 非線形最小二乗法

非線形最小二乗問題の解を求めます.

次の最小二乗問題を解く例を示します (出典 https://www.itl.nist.gov/div898/strd/nls/data/misra1a.shtml).

モデル関数 \(f(x) = p_1(1 – e^{-p_2 x})\) で次のデータを最小二乗近似するパラメータ \(p_1\), \(p_2\) を求める.

x      y
77.6   10.07
114.9  14.73
141.1  17.94
190.8  23.93
239.9  29.61
289.0  35.18
332.8  40.02
378.4  44.82
434.8  50.76
477.3  55.05
536.8  61.01
593.1  66.4
689.1  75.47
760.0  81.78

 
変数セル範囲 (この場合 B8 ~ B9) にはプログラムが \(p_1\) および \(p_2\) の値を書き込みます. 関数値セル範囲 (この場合 G7 ~ G20) にはこの \(p_1\) および \(p_2\) を使って \(f(x)\) を求める計算式を入力しておきます. この場合, G7 は =F7-B$8*(1-EXP(-B$9*E7)), G8 は =F8-B$8*(1-EXP(-B$9*E8)), ・・・ とします.

ヤコビ行列セル範囲にはヤコビ行列の計算式が入ったセルを指定します. これは, 解法として Lmder1 または N2g を選択した場合にのみ必要となります.

変数の初期値セル範囲には \(p_1\) および \(p_2\) の初期値が入ったセルを指定します. これを省略 (ブランクのまま) した場合には変数セルに初期値が入力されているものとみなします.

出力セル範囲には結果を出力するセルを指定します. これを省略 (ブランクのまま) した場合には変数セル範囲に出力します.

使用するプログラムは Lmdif1, Lmder1, N2f および N2g から選ぶことができます.

計算精度の標準値は \(10^{-8}\) です. Lmdif1 および Lmder1 では Tol に, N2f および N2g では Xctol にこれを設定します.

「計算開始」をクリックすると解を求め出力します. なお, それぞれのセル範囲は必要な範囲よりも大きく指定することができ, その場合には左上より必要なだけの大きさの範囲を使います.

非線形最小二乗法では局所的には複数の解が存在する場合があり, 初期値によりどの解が求められるか異なります. また, 同じ初期値でも解法により異なる解が求められる場合があります. できるだけ求めたい解の近くの初期値を与えるようにしてください.

解が求められない場合には #NUM! エラーになります. その場合の主な原因は, 初期値が悪いため収束しない, 与えられた方程式に解が存在しないなどが考えられます.

「保存/読込」についてはこちらを参照ください.

「ヘルプ」をクリックするとネット接続中であればこのページを表示します.

右上の「?」は正しく動作しません. 「ヘルプ」ボタンを使用してください.