情報領域演習第一:P演習

電気通信大学情報理工学域I類 (情報系)
2023年度後学期


[一覧に戻る]


課題B3

問題

コンピュータで代数方程式を近似的に解く方法の1つにニュートン法と呼ばれるものがある.例えば,ニュートン法に従うと,方程式 $x^2 - 2 = 0$ の正の解である $\sqrt{2}$ は次の漸化式を満たす数列 $\{x_n\}$ の極限として計算できる. \[ x_n = \begin{cases} a & (n = 1 \text{ のとき})\\ \dfrac{x_{n-1}}{2} + \dfrac{1}{x_{n-1}} & (n \geq 2 \text{ のとき}).\\ \end{cases} \] ただし,$a > 0$ とする. この漸化式に従って $x_n$ を計算したとき,$x_n$ と $\sqrt{2}$ の差の絶対値が与えられた数 $\varepsilon$ 以下となるための最小の $n$ が何であるか,求めるためのメソッド newton($a$, $\varepsilon$) を作成せよ.

入力仕様

出力仕様

ヒント

Rubyにおいて,x の絶対値は x.abs で計算でき,xの (正の) 平方根は Math.sqrt(x) で計算できる.

irb> newton 1.0, 0.001
=> 4
irb> newton 1.0, 0.0000001
=> 5
irb> newton 1.0, 1.0e-7
=> 5
irb> newton 1.415, 0.001
=> 1
irb> newton 0.1, 1.0e-15
=> 9
irb> newton 100000.0, 1.0e-15
=> 22

提出法

CEDにて,プログラムを作成したディレクトリで以下を実行せよ.
% ~ta001026/enshu1p/checker_b3.rb ファイル名
「Submission successfully completed.」と表示されれば,提出が完了したことになる.


[一覧に戻る]