┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃宿題メール 基本情報編              .&&&& **** %%%%. ┃ ┃                         &&&&&&******%%%%%% ┃ ┃from 斎藤末広 jhomework@yscon.co.jp        '&┃&''*┃*''%┃%' ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━┻━━┻━━┛ 宿題メール勉強部屋:http://www.yscon.co.jp/j/homework/hwlinks.htm ========================================================================  2003年9月15日分 宿題 基本情報編  9月15日号のその2です。  宿題が無い特別号です。 ======================================================================== 特別講義 近似解法と方程式 (分野:コンピュータ科学)  方程式をコンピュータを利用して解く場合,コンピュータの高速性を生かして, 手当たり次第にそれらしい数字を入れながら,より正確な答えに近づけていく方法 がある。コンピュータの計算には誤差があるため,ある程度の近似値を求めるこ とで,計算を打ち切ることになる。  この分野で出題された問題をみてみよう。 【問題】基本情報技術者午前平成15年春問05  関数 f(x) は引数も返却値も実数型である。この関数を使った (1) 〜 (5) か ら成る手続きを考える。手続を実行開始して十分な回数を繰り返した後に,(3) で表示される y の値に変化がなくなった。このとき成立する関係式はどれか。 (1) x ← a (2) y ← f(x) (3) y の値を表示 (4) x ← y (5) (2)に戻る  ア f(a) = y  イ f(y) = 0  ウ f(y) = a  エ f(y) = y 【解説】  求めた値を,さらに引数として,値を求める,を繰り返して変化しなくなる代表 的な関数に,f(x) = SQRT(x+2)がある。ここで,引数は正と仮定,SQRTは,平方根 を意味します。  a = 2 とすると (1) x = 2 (2) y = SQRT(2+2),y = 2 (3) 2 を表示 (4) x = 2 (5) (2)に戻る で,x = 2 で変化をしなくなる。 a= 10 として,小数点第9桁まで求まるコンピュータでやると (1) x = 10 (2) y = SQRT(10+2), y = 3.464101615 (3) 3.464101615 を表示 (4) x = 3.464101615 (5) (2)に戻る (2) y = SQRT(3.464101615 + 2),y = 2.337541789 (3) 3.464101615 を表示 … と繰りかえす。(2)のところのみをここに書くと y=SQRT(10+2), y = 3.464101615 y=SQRT(3.464101615+2), y = 2.337541789 y=SQRT(2.337541789+2), y = 2.082676593 y=SQRT(2.082676593+2), y = 2.020563434 15回目には y=SQRT(2.000000005+2), y = 2.000000001 16回目には y=SQRT(2.000000001+2), y = 2.000000000 17回目移行は, y=SQRT(2.000000000+2), y = 2.000000000 となり,y の値に変化はなくなる。 ここにおいて,y =SQRT(x+2) は,x と y は同じ値になる。よって, y = f(y) が,これを表していることになる。  具体的な例を出して問題を解説したが,このような問題文に慣れておれば,問 題文を読むだけで,y = f(y) であることは分かる。試験の場合は,問題文のみ を読んで,答える必要がある。 〔解答〕ウ