実習メモ

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