最適化(共役勾配法)

  テキストフィールドおよびテキストエリアには,例として,以下に示すような関数の最小値を求める場合に対する値(一次元最適化を行わない場合は,刻み幅を 0.003 にしてみて下さい)が設定されています(他の問題を実行する場合は,それらを適切に修正してください).

n 変数関数 f(x) に対する共役勾配法においては,現在の点 x における傾き,

の結果から共役勾配の方向 p を求め、その方向にαだけ進んだ点の関数値 f( x + αp) を計算する,という処理を繰り返します.目的関数の箇所には,この例に対する f( x + αp) の計算式,また,目的関数の微分の箇所には,g の計算式が与えられています.ただし,プログラム内では,変数 x は,この例の x と y からなる配列,変数 dx は g に対応し,関数 f を x 及び y で微分したものからなる配列,また,k はαに対応する変数として表現されています.なお,目的関数及び目的関数の微分は,JavaScript の仕様に適合した形式で記述してあることに注意してください.
変数の数(n):  最大繰り返し回数:  刻み幅:
初期値(n個):  1次元最適化:

目的関数: f(x+αp) =

目的関数の微分: f'(x) =



結果: