はじめMath! Javaでコンピュータ数学

第67回 微分・積分の数学 ニュートン・ラフソン法 [前編]

この記事を読むのに必要な時間:およそ 2 分

離れたところに飛んでくるテニスボールに対して,プレイヤーは先ず大股で駆け寄ります。ボールの落下点が近くなったら次第にステップを小刻みに,いよいよと言うところではすり足,そして最後の一歩を大きく踏み出してインパクト。

かつてソフトテニス部の副顧問をしていた時,この練習を見ていてニュートン・ラフソン法を思い出しました。人間はこのような動作アルゴリズムを練習で身につければ,ほぼ無意識に実行し,ボールとラケットのインパクトという1つの解を得ます。人間の身体コントロール能力というのは,本当に素晴らしいものだと感じます。

今回学習するのは,微分とコンピュータを活用した方程式の近似解法です。原理は大変シンプルですから,気負わずに取り組んでください。そう。力んでラケットを振ると,空振りするのと同じだと思って。

図67.1 目的に向けて的確に歩みをすすめる

図67.1 目的に向けて的確に歩みをすすめる

ニュートン・ラフソン法とは

ニュートン・ラフソン法※1とは,関数 f(x) がx軸と交わる点xa の近似値を反復計算により得る方法です。そもそもx軸との交点がない場合や,初期値の取り方を誤ると値が得られません。その点を理解し,上手に問題に適用すれば,きわめて効率よく解の近似値を得られます。

ニュートン・ラフソン法適用の条件は,解を得ようとする定義域※2の範囲で微分可能なことです。微分可能とは,接線がひけるということです。更にその接線がx軸と交わることが必要です。

ニュートン・ラフソン法は,微分の性質とコンピュータの計算力を上手く活用した好例です。

※1)
Newton-Raphson method. 単にニュートン法と呼ぶこともあります。
※2)
domain. 定義域とは,例えば y=ax において変数 x のとる値の範囲のこと。これに対応する変数 y の値のとる範囲を値域(range)といいます。

ニュートン・ラフソン法のアルゴリズム

ニュートン・ラフソン法の仕組みは大変シンプルです。図67.2を見ながら読んでください。

ニュートン・ラフソン法のアルゴリズム
  • (1)目的の解にできるだけ近い初期値 x0 を与える。
  • (2)座標x0, f ( x0 ))における f(x) の接線を描く。
  • (3)接線とx軸との交点を得る。このときのx座標を x1 とする。
  • (4) x1の値を新しい初期値 x0 として,(2)にもどる。
  • (5)(2)から(4)のループは実行可能な限り繰り返し, x の値を更新する。繰り返し回数が多いほど真の x の値に近くなる。

図67.2 ニュートン・ラフソン法のアルゴリズム

図67.2 ニュートン・ラフソン法のアルゴリズム

このアルゴリズムは,次の漸化式※3に値を当てはめて計算することと同じです。

ニュートン法で解を求めるためには,導関数 f'(x) を導く必要があります。微分の公式を知らなければ,公式集が出版されていますからそちらを利用しましょう。Webにも数学公式を集めたサイトがたくさんありますが,出来ればしっかりした書籍にあたって確認することをお勧めします。

学生時代は記憶することが仕事でしたが,社会人になってしまえば,それをどこで探せばいいかを知っていることが大切なのです。遠慮無く,公式集にあたりましょう。

※3)
recurrence formula.砕いて言えば,ある数列の n 番目の値が, n-1 番目までの値を計算操作することで決まる場合,その計算式のことを漸化式といいます。数学的には「漸化式とは,数列の各値を帰納的に定める式のことである」となります。

例題  f(x)=x2-2 の解をニュートン・ラフソン法で求めましょう。

漸化式をたてましょう

ニュートン・ラフソン法を使うために,先ずは漸化式をたてる必要があります。適当な初期値から,より解に近い次の値を求めるための式です。

この例題の意図するところは,の値を計算すると言うことです。共役※4な解があるのですが,正の値のみ求めましょう。

ニュートン・ラフソン法の定義から,漸化式は次のように導きます。

※4)
conjugate. 共役とは「2つのものがセットになっている」という意味。共役な解とは,ここでは「2乗して2になる数はのふたつある。ふたつセットで解である」ということになります。

著者プロフィール

平田敦(ひらたあつし)

地方都市の公立工業高等学校教諭。趣味はプログラミングと日本の端っこ踏破旅行。2010年のLotYはRuby。結城浩氏のような仕事をしたいと妄想する30代後半♂。

コメント

コメントの記入