
No.2ベストアンサー
- 回答日時:
ANo.1です。
少し言葉足らずでした。
Nelder-Mead法は「関数の"局所的"最小値を探索する手法」です。
最適化問題のアルゴリズムは系統があり、大雑把には「導関数を用いないアルゴリズム」、「導関数を用いるアルゴリズム」に分かれます。
「導関数を用いないアルゴリズム」はNelder-Mead法、単体法、差分進化法等があります。
「導関数を用いるアルゴリズム」としては、ニュートン法、最急降下法、内点法等があります。
matlabは詳しくないのですが、fminsearchはfuncで定義した関数と初期値を設定して、funcで定義した関数の最小値を「導関数を用いないアルゴリズム」で探索する命令文です。
この「導関数を用いないアルゴリズム」で使われているのがNelder-Mead法です。
(おそらく最適化問題に応じて、複数の「導関数を用いないアルゴリズム」が用意されていると思われます)
mathworksにfminsearchの説明と事例が書いてあるので、そちらを参照してみて下さい。
https://jp.mathworks.com/help/matlab/ref/fminsea …
最小二乗法は、最小値を求めるのが目的ではなく、測定で得られた数値群に対し、近似度が高い関数を求めるのが目的です。
ご丁寧にありがとうございます。助かりました。Mathworksのサイトは見ていてどんな結果になるかは分かったのですが、仕組みが良くわからずにいたので質問しました。ありがとうございます。
No.1
- 回答日時:
違います。
最小二乗法:測定で得られた数値群を特定の関数で近似する際、近似の精度を高めるため、残差の二乗和を最小とするような係数を決める手法
Nelder-Mead法:最適化問題(特定の集合上で定義された関数について、その値が最小または最大になる状態を解析する問題)のアルゴリズムの一つで、単体(ある次元における最小の頂点を持つ直線図形、二次元であれば三角形、三次元であれば四面体等)を反射、膨張、収縮させて関数の最小値を探索する手法
ありがとうございます。勝手を言って申し訳ないのですが、もしよければ追加で質問させてください。
matlabスクリプトをみるとfminsearchの引数に別のfunctionが入っています。(fminsearchはNelder-Mead法を使ったものと読みました。)その関数内で(観測値ー理論値)を二乗しています。
このプログラムは最小二乗法とNelder-Mead法の両方を使ってパラメータの最適値を求めているという解釈であったいますでしょうか。
「理論上、y(m, n)=A m^2 + sin(n) + B についてA=3.2, B=5 だったものが、測定データを基に最適化するとA=3.4, B=4.8とした方がより正確なyが求められる」とあるのですが、 fminsearchが何をしているのかイメージがわきません。
Nelder-Mead法は「関数の最小値を探索する手法」とご説明いただきましたが、この場合、y(m, n)を最小化しているわけではないですよね?
独学なので聞ける先生などがいなくて。ごめんなさい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報