私はいくつかのパラメーター推定を行おうとしていますが、約30変数にわたって予測方程式の二乗誤差を最小化するパラメーター推定を選択したいと思います。方程式が線形の場合、30個の偏導関数を計算し、それらをすべてゼロに設定して、線形方程式ソルバーを使用します。しかし残念ながら、方程式は非線形であり、その導関数も非線形です。
方程式が単一の変数を超えている場合は、ニュートン法(ニュートンラプソンとも呼ばれます)を使用します。Webには、単一変数の関数に対してニュートン法を実装するための例とコードが豊富にあります。
約30個の変数があるとすると、ニュートン法を使用してこの問題の数値解をプログラムするにはどうすればよいですか?私は閉じた形の方程式を持っており、一次および二次導関数を計算できますが、そこからどのように進めるかはよくわかりません。私はウェブ上で多数の処理を見つけましたが、それらはすぐに重い行列表記になります。ウィキペディアで適度に役立つものを見つけましたが、それをコードに変換するのに問題があります。
分解が心配なのは、行列代数と行列反転です。一次方程式ソルバーを使用して行列を反転することはできますが、正しい行と列を取得したり、転置エラーを回避したりすることなどが心配です。
具体的には:
変数をそれらの値にマッピングするテーブルを操作したいと思います。そのようなテーブルを引数として与えられた場合に二乗誤差を返すようなテーブルの関数を書くことができます。また、任意の変数に関する偏導関数を返す関数を作成することもできます。
表の値について妥当な開始見積もりがあるので、収束について心配する必要はありません。
推定値(各変数の値のテーブル)、関数、および偏微分関数のテーブルを使用して新しい推定値を生成するループを作成する方法がわかりません。
最後は私が助けて欲しいものです。直接の助けや良い情報源へのポインタは大歓迎です。
編集:私は閉じた形で一次および二次導関数を持っているので、それらを利用して、シンプレックス検索のようなよりゆっくりと収束する方法を避けたいと思います。