Comments
Description
Transcript
実習メモ
1 2007年度・数理解析・計算機数学2・第4回 ● 前回の講義のまとめ • 浮動小数点計算において, 「近い値を持つ2つの数の差」を計算すると, その結果は, 有効桁の末尾 にある「誤差を含む」数値が上位桁にあらわれ, 計算結果に大きな誤差が生じることがある. これを 「桁落ち」または「相殺」と呼ぶ. • 桁落ちが発生する一つの例として, 「多角形近似による π の計算」を考察した. この場合, 内接多角形の周長(の半分)を計算する際に桁落ちが発生し, その原因は sin(x) の半角の 公式にあった. 半角の公式を改良することで桁落ちを避けることができた. • π の近似値を計算する他の方法としては, arctan(x) のテイラー展開 arctan(x) = (−1)k k=0 x2k+1 (2k + 1)! を用いる方法がある. – 右辺の巾級数の収束半径は 1 であるため, 右辺は |x| < 1 の時に絶対収束する. また, x = 1 で は右辺は収束する. – arctan(x) のテイラー展開は arctan(x) = Rn (x) = 0 x n (−1)k k=0 (−1)n x2k+1 + Rn (x), (2k + 1)! t2n+1 (2n + 1)! と書くことができる. このとき |Rn (x)| は arctan(x) の近似値として, テイラー級数を第 n 項 まで計算したときの打ち切り誤差であり, 以下の評価をみたす. |Rn (x)| ≤ O(n−1 ), O(x2n+2 ), x = 1, |x| < 1. – このことから, π 1 1 = 1 − + + ··· 4 3 5 によって π の近似値を計算する方法は, 極めて収束が遅いことがわかる. (|x| < 1 では収束が 速い.) – したがって, π = 4 arctan(1) の値を近似するには, arctan(1) = 4 arctan(1/5) − arctan(1/239) などの公式を利用することとなる. ex04.tex,v 1.2 2007-05-02 07:57:25+09 naito Exp 2 2007年度・数理解析・計算機数学2・第4回 ● 講義資料 【ニュートン法】 1 1 "newton_sqrt2.txt" (x+1)(x-1)^2 (x+1)(x-1)^3 (x+1)(x-1)^4 0.1 0.01 0.01 0.0001 0.001 0.0001 1e-06 1e-05 1e-08 1e-06 1e-07 1e-10 1e-08 1e-12 1e-09 0 0.5 1 1.5 2 2.5 3 3.5 4 0 5 2 10 15 20 25 30 35 k x −2=0 (x + 1)(x − 1) , k = 2, 3, 4 z2 + 1 = 0 z3 + 1 = 0 z4 + 1 = 0 【逐次近似で 21/3 を求めたときの誤差のグラフ】 1 1 2 0.01 0.0001 1e-06 1e-08 1e-10 1e-12 1e-14 1e-16 0 10 20 30 40 50 60 ex04.tex,v 1.2 2007-05-02 07:57:25+09 naito Exp 3 2007年度・数理解析・計算機数学2・第4回 ● 実習内容 以下では, 近似値の計算において, 第 n 回目の計算で得られた近似値を xn , 真の値を x∞ , その誤差を εn = |xn − x∞ | とおく. 1. 「区間分割法」を用いて √ 2 の値を絶対誤差 10−6 以内で求めなさい. 2. 「区間分割法」を用いて 21/3 の値を絶対誤差 10−6 以内で求めなさい. √ 3. 「ニュートン法」を用いて 2 の値を相対誤差 10−7 以内で求めなさい. √ 4. 「ニュートン法」を用いて 2 の値を求めるとき, 近似値と真の値との誤差 εn をグラフであらわし なさい. 5. k = 2, 3 に対して, 「ニュートン法」を f (x) = (x − 1)k に対して適用し, f (x) = 0 の解の近似値を 求めるとき, εn をグラフであらわしなさい. また, 上の問題とこの問題で得られたグラフをみて, ど のような知見が得られるかを議論しなさい. 6. 逐次近似 xn+1 = f (xn ) を f (x) = (2x)1/3 , f (x) = (2/x)1/2 , f (x) = x4 /2 に対して適用し, 収束す る場合には εn をグラフであらわしなさい. 7. 「ニュートン法」で f を計算するところを「微分商」に置き換えたものを割線法と呼ぶ. すなわち, xn+1 = xn − f (xn ) xn − xn−1 f (xn ) − f (xn−1 ) によって f (x) = 0 の解を求める. f がニュートン法での近似計算が収束するときと同じ条件をみたすときには, 割線法による近似計算 も収束することを証明し, その誤差は, ある L > 0 が存在して, εn+1 ≤ Lεn εn−1 , εn+1 ≤ εpn , √ 1+ 5 p= 2 をみたすことを証明しなさい. 8. 多項式 f (x) = n k=0 ak xk の値を計算する方法の一つは, 以下に述べる「ホーナ法」である. x を指定して, 次の繰り返しを計算する. b n = an , bn−k = bn−k+1 x + an−k−1 , k = 1, . . . , n これが終了したとき, b0 = f (x) である. また, f (x) は, x を指定して, 次の繰り返しを計算する. cn−1 = an , cn−k = cn−k+1 x + an−k , k = 2, . . . , n これが終了したとき, c0 = f (x) である. このアルゴリズムによって f (x), f (x) が計算できることを証明しなさい. また, 高階微分の値 f (k) (x), k = 2, · · · , n はどのように計算すればよいかを考察しなさい. ex04.tex,v 1.2 2007-05-02 07:57:25+09 naito Exp