|
3.9.6 数値解析による根の探索
NSolveは整方程式の解を数値近似するために使う. 3.4.2で説明したように,多項式よりさらに一般化された方程式を数値的に解くことは極めて難しい.それでも, FindRootを使って任意な単一方程式や連立方程式の数値解を探索することは可能である.

数値解析による根の探索
の曲線が の直線と1点で交差している.
In[1]:= Plot[{Cos[x], x}, {x, -1, 1}]

Out[1]= 
交点における の値を数値解析的に求める. FindRootの記述にある 0は の初期値の点で探索の始点を示す.
In[2]:= FindRoot[Cos[x] == x, {x, 0}]
Out[2]= 
FindRootを使った解の探索では,指定した初期値の点を始点として,そこから徐々に解に向かって接近していく.複数の方程式を解くときでも,最初に見付かった解だけが返される.見付かった答がどの解に相当するのかは初期値により違ってくる.与えた初期値が特定の解に十分近付いていれば通常はその解が求まる.
方程式 の解を探す.解は で与えられ,無数にある.特定の解に十分近い初期値を与えると,その解は必ず求まる.
In[3]:= FindRoot[Sin[x] == 0, {x, 3}]
Out[3]= 
を初期値として解を探す. の解の近似値が求まる.
In[4]:= FindRoot[Sin[x] == 0, {x, 6}]
Out[4]= 
解を複素平面上で探すときは,初期値として複素数を与える.
In[5]:= FindRoot[Sin[x] == 2, {x, I}]
Out[5]= 
リーマンゼータ関数がゼロになる点を求める.
In[6]:= FindRoot[Zeta[1/2 + I t] == 0, {t, 12}]
Out[6]= 
このようにして連立方程式系を解く.
In[7]:= FindRoot[{Sin[x] == Cos[y], x + y == 1}, {{x, 1}, {y, 1}}]
Out[7]= 
FindRootが使う変数はリストを値として持つことができる.これにより,ベクトルを引数に取る関数の根を求めることができる.
このようにして変数xについての線形方程式を解く.
In[8]:= FindRoot[{{1, 2}, {3, 4}} . x == {5, 6}, {x, {1, 1}}]
Out[8]= 
これで正規化された固有ベクトルxと固有値aを求める.
In[9]:= FindRoot[{{{1, 2}, {3, 4}} . x == a x, x.x == 1}, {{x, {1, 1}}, {a, 1}}]
Out[9]= 
|