Comments
Description
Transcript
レポート課題および解答
レポート課題および解答 (2007 年度 数値計算) レポート課題 1. x についての 2 次方程式 ax2 + bx + c = 0(ただし,a = 0 とする)のふたつの解は解の公 式から, x1 = −b + √ b2 − 4ac , 2a x2 = −b − √ b2 − 4ac 2a で与えられる.これを用いて,x1 あるいは x2 を数値的に計算するときに,桁落ちが起きる場合がある.それ (10/3 出題,10/10 8:40 締切) はどういう時か.具体例を挙げよ.また,それを防ぐ方法を提示せよ. 解答. 桁落ちが起きる例.4ac が b2 に比べて非常に小さい場合,b > 0 であれば x1 において,また,b < 0 で √ あれば x2 において,桁落ちが起きる可能性がある.実際,b > 0 のとき, b2 − 4ac ≈ √ b2 = b となり,x1 の分子は b と b に非常に近い数の差(近接する 2 つの数の引き算)となり,そこで桁落ちが起きる.同様に, √ √ b < 0 のとき, b2 − 4ac ≈ b2 = −b となり,x2 の分子は −b と −b に非常に近い数の差(近接する 2 つの 数の引き算)となり,そこで桁落ちが起きる.その具体例は, a = 0.1, b = 100, c=1 このとき,Scilab で有効数字 7 桁で計算を行うと, x1 = −1.000000D − 02, x2 = −9.999900D + 02 となる.一方倍精度の桁で計算を行うと x1 = −1.0000100001974D − 02, x2 = −9.9998999990000D + 02 となり,これらの値を有効数字 8 桁目で四捨五入すると, x1 = −1.000010D − 02, x2 = −9.999900 + 02 であるから,x2 は一致するが x1 は 7 桁目に違いが出る.これは桁落ちによる誤差と考えられる. 桁落ちを防ぐには,2 次方程式の解と係数の関係 x1 x2 = c/a を利用するとよい.x1 に桁落ちが起きる場合 には,x2 を解の公式で求めた上で,x1 = c/(ax2 ) とすればよく,x2 に桁落ちが起きる場合には,x1 を解の公 式で求めた上で,x2 = c/(ax1 ) とすればよい.先ほどの,例について,x1 = c/(ax2 ) を用いて有効数字 7 桁 で計算を行った結果, x1 = −1.000010D − 02 となり,倍精度の桁で計算を行った場合と一致する. 【参考】桁落ちとは,近接する 2 つの数の引き算で有効桁数が失われる現象のことをいう. 【評価の観点】桁落ちが起きる a, b, c を具体的に例示していること.それを防ぐ方法を明示していること. 1 レポート課題 2. 1. 例題 3 において,S2 ,すなわち i = 100000 から i = 1 の順で加えたほうが,S1 ,すなわ ち i = 1 から i = 100000 の順で加えた場合よりも精度がよくなる理由を述べよ. 2.(第 1 章の問題の 1)x̂ に εx の誤差が含まれるとき,y = exp(x̂) に含まれる誤差を評価せよ. (10/9 出題,10/24 8:40 締切) 解答. 1. √ 1 i(i+1) の i = 1 から i = 100000 までの和であり,約 11.53 である.i = 100000 のとき √ 1 i(i+1) ≈ 1 × 10−5 程度である.したがって,i = 1 から i = 99999 までの和(これはほとんど 11.53 に近い値)にこの ような小さな数を加えれば単制度の計算では,i = 100000 のときの値が 0 に丸められ,情報落ちがおき 0 に丸 められてしまう. 逆に,i = 100000 から i = 1 までこの順に足すことにより,i = 100000 のような i が大きいときの √ 1 i(i+1) の値が有効数字の範囲内で保たれ,情報落ちを避けることができるので精度がよくなる. 2. 真の値 x とすると,x = x̂ + εx である.exp(x̂) に含まれる誤差 ε は, ε = exp(x) − exp(x̂) = exp(+̂εx ) − exp(x̂) = exp(x̂)(exp εx − 1) ここでテーラー展開を用いて,εx が十分小さいときには, exp εx = 1 + εx + O(ε2x ) であることに注意すると, ε∼ = exp(x̂)εx , ∴ |ε| ∼ = |εx | |x̂| すなわち,exp(x̂) の相対誤差は |εx | にほぼ等しい. レポート課題 3. 補間点 x0 = 0, x1 = 0.5, x2 = 1 に対して,関数値 y0 = 0, y1 = 1, y2 = 0 が与えられたとき, ラグランジュの補間公式を用いて fN (x) を求めよ. (10/10 出題,10/24 8:40 締切) 解答. N = 2 である. (x − x1 )(x − x2 ) (x − x0 )(x − x2 ) (x − x0 )(x − x1 ) y0 + y1 + y2 (x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x0 ) (x − 0)(x − 1) = 4x(1 − x) = (0.5 − 0)(0.5 − 1) f2 (x) = 2 レポート課題 4. I = N −1 xi+1 i=0 xi (i) f1 (x)dx を計算し,(3.4) 式を導け. (10/24 出題,10/31 8:40 締切) 解答. レポート課題 5. 1. 第 1 章例題 4 を Scilab を用いて検証し,そのときの入力と出力結果を提出せよ(必須問 題:これは全員解答してください). 2. 配布プリントの 2 ページ,lagrange.sci のプログラムを解説せよ(発展問題:解答すれば,ボーナス点と (10/31 出題,11/7 8:40 締切) してレポート点に加算します). 3