基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成21年 秋期 基本情報技術者 午後 問08
問08   必須問題

 次のアルゴリズムの説明及びプログラムを読んで,設問に答えよ。

 方程式の解の一つを求めるアルゴリズムである。任意に定めた解の予測値から始めて, 計算を繰り返しながらその値を真の値に近づけていく。この方法は,ニュートン法と呼ばれる。

〔アルゴリズム1の説明〕

 

〔アルゴリズム2の説明〕

 

〔プログラム1〕

(行番号)

 

〔プログラム2〕

(行番号)

 

設問 次の記述中の に入れる正しい答えを,解答群の中から選べ。

 

 

   図1 プログラム1の印字結果

    図2 係数ak,bkの値の格納

 プログラム2の行番号9〜 11 は,アルゴリズム2の手順 (2) の処理である。 この部分のプログラムは,次のようになる。

[プログラム2の一部]

(行番号)

 また,行番号 13 〜 18 は,アルゴリズム2の手順 (3) の@とAの処理である。

プログラム1では,例えばの値a33+a22+ a1x+a0を求める式を,

f ← ((a3 × x +a2) × x + a1 ) × x + 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から遠かってしまっている。 その原因を調べるため,を求める式に実際の数値を当てはめて,

として,(A) の部分の中間結果を印字するプログラムを作り,同じ処理系で実行した。 印字結果は −16.00000 であり,正確な値 −15.99999999999999999999 と 有効数字7けたで一致した。しかし,行番号1で印字されたの値は, 正確な値である 10-20 (印字の表記では 1.000000(-20)) とは異なっている。

 これらのことから判断して,(A) の部分では演算の過程で が徐々に 累積し,(A) の計算結果に 16.0 を加算するときに,けた落ちが発生したと考えられる。

a に関する解答群

ア x6 =x7 である       イ x6 ≠x7 である

ウ x6 =x7 とも x6 ≠x7 ともいえない

b に関する解答群 ア b[k-1] ← (k-1) × a[k]       イ b[k-1] ← k × a[k]

ウ b[k] ← k × a[k+1]        エ b[k] ← (k+1) × a[k+1]

c, d に関する解答群 ア b[k-1]         イ b[k]

ウ b[k+1]         エ b[n-1]

オ b[n-1] × x      カ b[n-1] × x + b[n-2]

e に関する解答群 ア けたあふれ           イ けた落ち

ウ 指数下位けたあふれ       エ 丸め誤差

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]