2002 年度「計算機基礎論3B」 2002-12-20

Newton 法

y = f(x) が微分可能関数のとき、 方程式 f(x) = 0 の根を計算機で近似的に求める方法のひとつに 「Newton 法」があります。

曲線 y = f(x) 上の点 (an, f(an)) におけるこの曲線の接線が x 軸に平行でないと仮定し、 その接線が x 軸と交わる点の x 座標を an+1 とします。 f(x) = 0 の根 α に近い数 a0 から始めて上のようにして数列 a0, a1, a2, ..., an, ... をつくると、数列 {an} は α に収束します。 この原理で根 α を求めるのが Newton 法です。 どのくらい a0 が根 α に「近い」と収束するのか、 の厳密な議論はちょっとおいておいて、 (紙に)グラフを書いてこの感じをつかんでください。

課題02

k を各自のユーザ id の最後の二文字(を十進二桁の数とみなしたもの)とします。 三次方程式 f(x) = x3 - kx - 1 = 0 の正の根を Newton 法で求めるCプログラムを書いてください。 以下でもう少しくわしく説明します。

漸化式を求める計算は紙と鉛筆でやってください。 初期値 a0 は適当に決めてください。 プログラムは n = 0, 1, 2, ... に対し n, an, f(an) の値を一行に並べて出力するようにしてください。 何項めまで計算するかは、実験しながら各自で決めてください。 小数点以下何桁まで出力するかも、各自の判断にまかせます。 最後のほうの f(an) は 0 に近い値のはずです。

できあがったら、次のような体裁でレポートにし、メールで送ってください。

※ メールでは x3 や an のような記法は使えないので、 代わりに x^3, a_n などと書くとよい。 an+1 は中カッコを用いて a_{n+1} とする。

※ 感想などがあれば添えてもよいが、 無理に書かなくてよろしい。

宛て先は私(岩瀬)の実習用アカウント cf2135@mailedu1.ipc.kanazawa-u.ac.jp です。 件名は「kadai02」(←全て半角文字、アルファベットは小文字、 途中にスペースをいれない)としてください。 自分の学籍番号、氏名(として大学に届けてあるもの) をメールの本文内に書くのを忘れずに。

私はメールを受けとったらプログラムを読み、コンパイルし、 貼り付けてあった実行結果のとおり動くことをチェックして、 「OK」なり「やり直し!」なりの返事をメールで送ります。 「やり直し!」だった人は「OK」 がもらえるまでやり直して再提出しないと課題を提出したことにはなりません。 誰が「OK」で誰が「やり直し!」かは、 ユーザ id の最後の二文字を理学部の“電子掲示板”に出すことで連絡します。

締め切りは 2003 年 01 月 31 日(金)12 時 30 分とします。 これは、 その日時までに私にメールを送るように、という意味です。 締め切り間際にメールを送ってくれた場合は私からの返事は締め切り後になるかもしれません。

※ 期限までに「OK」となればいいのだから、 途中での「やり直し!」はあまり気にする必要がないが、 締め切りまぎわに出して「やり直し!」だとまずいので、 できれば早めに提出するように。


岩瀬順一