![]()
平成21年 秋期 基本情報技術者 午後 問08
問08 必須問題次のアルゴリズムの説明及びプログラムを読んで,設問に答えよ。 方程式の解の一つを求めるアルゴリズムである。任意に定めた解の予測値から始めて, 計算を繰り返しながらその値を真の値に近づけていく。この方法は,ニュートン法と呼ばれる。 〔アルゴリズム1の説明〕
〔アルゴリズム2の説明〕
〔プログラム1〕 (行番号)
〔プログラム2〕 (行番号)
設問 次の記述中の
![]() 図1 プログラム1の印字結果
![]()
図2 係数ak,bkの値の格納 プログラム2の行番号9〜 11 は,アルゴリズム2の手順 (2) の処理である。 この部分のプログラムは,次のようになる。 [プログラム2の一部] (行番号)
また,行番号 13 〜 18 は,アルゴリズム2の手順 (3) の@とAの処理である。 プログラム1では,例えば f の値a3x3+a2x2+ a1x+a0を求める式を,
と変形して,演算回数を減らす工夫をしている。この部分にも同様の工夫をすると, プログラムは次のようになる。 〔プログラム2の一部〕 (行番号)
(3) 次数 n=4,係数a4=1,a3=−8,a2=24,a1=−32, a0=16 として,4次方程式 x4−8x3+ 24 x2−32 x+ 16 =0 の解を求める(4個の解がすべて2)。 解の予測値をx=2.00001 として,ある処理系でプログラム2を実行したところ, 図3に示すとおりの印字結果となった.
![]() 図3 プログラム2の印字結果 この印字結果の行番号2では,xの値(網掛けの部分)が解である2から遠かってしまっている。 その原因を調べるため, f を求める式に実際の数値を当てはめて,
![]() として,(A) の部分の中間結果を印字するプログラムを作り,同じ処理系で実行した。 印字結果は −16.00000 であり,正確な値 −15.99999999999999999999 と 有効数字7けたで一致した。しかし,行番号1で印字された f の値は, 正確な値である 10-20 (印字の表記では 1.000000(-20)) とは異なっている。
これらのことから判断して,(A) の部分では演算の過程で a に関する解答群 ウ x6 =x7 とも x6 ≠x7 ともいえない ウ b[k] ← k × a[k+1] エ b[k] ← (k+1) × a[k+1] ウ b[k+1] エ b[n-1] オ b[n-1] × x カ b[n-1] × x + b[n-2] ウ 指数下位けたあふれ エ 丸め誤差
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|