非線形方程式の根を数値的に求める方法について

----
#contents
----


*線形方程式と非線型方程式 [#z051bb79]
&ref(rootfinding.eq1.gif,nolink,70%);についての方程式&ref(rootfinding.eq2.gif,nolink,70%);の解を求めたい.
もし,&ref(rootfinding.eq3.gif,nolink,70%);が
#ref(rootfinding.eq4.gif,nolink,70%)

のような線形方程式(1次方程式)であるならば,その解は,
#ref(rootfinding.eq5.gif,nolink,70%)

と計算できる(ただし,&ref(rootfinding.eq6.gif,nolink,70%);).
しかし,&ref(rootfinding.eq3.gif,nolink,70%);が非線形方程式であったならどうだろうか.
たとえば,以下の&ref(rootfinding.eq7.gif,nolink,70%);次代数方程式(algebraic equation)を考える.
#ref(rootfinding.eq8.gif,nolink,70%)

2次方程式(&ref(rootfinding.eq9.gif,nolink,70%);)ならば解の方程式,3次や4次方程式の場合はカルダノ(Cardano)やフェラリ(Ferrari)の公式で
解析的に解くことができるが,5次以上だと直接的な解法はない.

また,超越方程式(transcendental equation)と呼ばれる無限次代数方程式(&ref(rootfinding.eq10.gif,nolink,70%);)もある.
たとえば,&ref(rootfinding.eq11.gif,nolink,70%);は無限べき級数で表されるため,&ref(rootfinding.eq11.gif,nolink,70%);を含む方程式は超越方程式となる.
超越方程式に関してもほとんどの場合直接的な解法がない.

以下では非線形方程式を数値的に解く方法として,
-2分法
-ニュートン・ラフソン法
-多次元のニュートン・ラフソン法
-ホーナー法
-DKA法

について述べる.

*2分法 [#a273a108]
#include(2分法,title)

*ニュートン・ラフソン法 [#daa02208]
#include(ニュートン・ラフソン法,title)

*多次元のニュートン・ラフソン法 [#p1959a72]
#include(多次元のニュートン・ラフソン法,title)

*ホーナー法(組立除法) [#ia8c4b4d]
#include(ホーナー法,title)

*DKA法 [#t3a86f44]
#include(DKA法,title)


*ソースコード [#k90fe13f]
上記のコードを含むVisual Studio 2010用のソースコードを以下に置く.

#ref(rootfinding.zip)


*参考文献 [#j925424d]
-佐藤次男, 中村理一郎, ``よくわかる数値計算 アルゴリズムと誤差解析の実際'', 日刊工業新聞社, 2001. 
-川上一郎, ``数値計算の基礎'', http://www7.ocn.ne.jp/~kawa1/

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS