3.1 方針

C, Python, Julia などのプログラミング言語でも解いてみよう。 このゼミでは、C と Julia のサポートをするが、 Python を使いたければそうしても構わない。

Mathematica の FindRoot[] のところをどうするかが問題となる。 Newton 法を使うと良い。

Newton法
$ f(x)=0$ を解くために、適当な初期値 $ x_0$ を選んで、

( $ \heartsuit$) $\displaystyle x_{n+1}=x_{n}-f'(x_n)^{-1} f(x_n)$   ( $ n=0,1,2,\cdots$)

により $ \{x_n\}$ を定めると、多くの場合に解に収束することが期待できる。
( $ \heartsuit$)の意味     $ x_n$ の十分近くでは、$ f(x)$

$\displaystyle f'(x_n)(x-x_n)+f(x_n)
$

により近似できる。 $ f'(x_n)(x-x_n)+f(x_n)=0$ を解いて、 $ x=x_n-f'(x_n)^{-1}f(x_n)$. これを $ x_{n+1}$ に採用した、 ということである。

$ a$ $ \det f'(a)\ne 0$ を満たすならば (重解でないならば)、 $ \{x_n\}$ は “2次の収束” をする (とても速く真の解に近づく) ことが期待できる。



桂田 祐史