非線形方程式の数値計算(ニュートン法) | akusanのブログ

akusanのブログ

ゲーム、プログラミングなどなど種々雑多に興味あるものをのせております。プログラミングはたまにコード自体を載せております。

非線形方程式の1つの解を求める手法としてNewton法があると思います。
久しぶりにNewton法をコーディングしてみました。すっかり忘れてましたので、自分で
Newton法の式を導き出していたら、
間違えていたことに後で気づき修正を余儀なくすることに・・・。
そのためなぜか実行しても一向に収束する気配がなく・・・。

アルゴリズムとしてはシンプルで、以下のような感じになります。
図に書き込んでおきました。

ニュートン・ラプソン法

akusanのブログ-ニューロン・ラプソン法


Newton法は初期値を設定しなければなりません。しかもその設定のしかたがよろしくないと
関数によっては解をえることができません。また、解が複数存在する場合は、
それぞれの解に応じて、初期値を設定する必要があります。
代数方程式に落とし込める場合は、当方のブログで以前紹介した二次法や
カルダノ(cardano)法を使用することによっていっぺんに求めることができます。

初期値を決めないで求める方法ってないの???となりますよね。
実はあるんですが、アルゴリズムの詳細は知らなくて、名前だけは知っています。
ホモトピー法という手法を使用すると収束は遅いらしいですが、初期値を適当に指定しても、
解へ収束するそうです。詳しい原理は関数解析の知識が必要になるため、相当に難しいようです。
時間のある時にでも調べたいです。