● 前回の講義のまとめ
• 数列 an = (1 + 1/n)n に対して, e = limn→∞an の値を求めるために, 十分大きな n に対して
(1 + 1/n)n を浮動小数点計算を用いて計算しようと考ると,最終的に以下の結果を得た.
(1 + 1/n)n−e∼e
1
2n−1+ 2nδ
+O(n−2) +O(δ2).
したがって,期待できる計算精度は,n∼(1/√
δ)のとき,
|(1 + 1/n)n−e| ≤e√ δ≤3√
δ 程度となる.
• 自然対数の底 eの近似値を求める通常の方法は,exのテイラー展開 ex=
k=0
xk k! を用いる方法である.
– これを用いると,
e=
k=0
1 k! となるが,N 次の項までで計算を打ち切ったとき,
e−N
k=0
1
k! =
k=N+1
1 k! ≤ 1
N!
が成り立つ. したがって,eの近似値を誤差εで求めるためには, 1
N! < ε を満たす最小のN まで計算すればよい.
– このとき,この計算に要する演算回数は高々O(N)回であるため,丸め誤差はCNδ程度となる.
従って, 求めた値は
e−
N
k=0
1
k! < ε+CNδ をみたす.
– テイラー展開を計算する際には, 高次の項から計算する必要がある. 低次の項から計算すると,
「100のオーダの数」と「10−k のように低いオーダの数」との加算を行なうこととなり,「積み
● 講義資料
【多角形近似による π の計算】
半径1 の円に内接する正n角形の周長を{n},外接する正n角形の周長を{Ln}とすると,それら の間には次の関係式が成り立つ.
2n= 2n
1−
1−(n/n)2
2 , (1)
L2n=2n2 Ln
−1 +
1 + (Ln/n)2
(2) 特に,
L2n = 2nLn
n+Ln (3)
が成り立つ.
1e-09 1e-08 1e-07 1e-06 1e-05 0.0001 0.001 0.01 0.1 1 10
1 10 100 1000 10000 100000 1e+06 1e+07 1e+08 1e+09 1e+10 Inner
Outer (0) Outer (1)
• “inner” : (1)による計算
• “outer(0)” : (2)による計算
• “outer(1)” : (3)による計算
【改良した多角形近似による πの計算】
{n},{Ln}の間には次の関係式が成り立つ.
2n=
√2n
1 +
1−(n/n)2
(4)
1e-16 1e-14 1e-12 1e-10 1e-08 1e-06 0.0001 0.01 1
1 10 100 1000 10000 100000 1e+06 1e+07 1e+08 1e+09 1e+10 Inner
Outer
【更なる改良】
q2n=pn+qn
2 , p2n=√pnq2n, pn= 1/n, qn= 1/Ln. (5)
1e-08 1e-06 0.0001 0.01 1
Inner Outer
【arctan(x), log(1 +x) のテイラー級数による計算】
arctan(x) =
∞
n=0
(−1)nx2n+1
2n+ 1, |x|<1, log(1 +x) =∞
n=1
(−1)n+1xn
n , |x|<1
arctan(x)
1e-14 1e-12 1e-10 1e-08 1e-06 0.0001 0.01 1
1 10 100 1000 10000 100000
x=0.90 x=0.95 x=0.990 x=0.995 x=0.9990 x=1.0000
log(1 +x)
1e-14 1e-12 1e-10 1e-08 1e-06 0.0001 0.01 1
1 10 100 1000 10000 100000
x=0.90 x=0.95 x=0.990 x=0.995 x=0.9990 x=1.0000
● 実習内容
1. 上記の多角形近似による πの値の近似計算
• (1), (2) を使う.
• (1), (3) を使う.
• (4), (2) を使う.
• (5)を使う.
の4種類をプログラムし, πの値と計算値との誤差のグラフを書きなさい.
2. arctan(x)のテイラー級数の収束の様子の図を書きなさい.