2013年度・前期・数理解析・計算機数学3・第3回 1
● 講義資料
▼ 講義予定
• 自然定数の底の近似値の計算と浮動小数点演算の誤差
● 前回の講義のまとめ
▼ 浮動小数点数について
• 計算機における浮動小数点数は,(倍精度浮動小数点数の場合には)(二進)有効桁数53桁 であるので,それ以上の精度で計算を行うことはできない. (以下では,「浮動小数点数」と 書いたら,倍精度浮動小数点数のことである.)
• 2つの浮動小数点数x,yの「誤差」のはかりかたには,ǫ=|x−y|を考える「絶対誤差」と,
|x−y|=ǫ|x| を考える「相対誤差」がある.
• 有限桁の精度の浮動小数点数では,その桁数に応じて,表示できる数の精度が異る. たとえば, x∼20 の時には, 2−53 の細かさで数を表示可能であるが,x∼21 の時には, 2−52 の細かさ でしか表示可能とならない.
• したがって, 誤差をはかるためには「相対誤差」を用いる必要があり, 相対誤差 2−53 程度
(4.0×10−16 程度)がその限界となる.
● 講義資料
▼ 自然対数の底の近似値を求める
以下の図は, (1 + 1/n)nを計算して,eの近似値を求めた例である. (eと近似値の値との絶対誤 差を表示している)
1e-08 1e-07 1e-06 1e-05 0.0001 0.001 0.01 0.1 1
1 100 10000 1e+06 1e+08 1e+10 1e+12 1e+14 1e+16
高速乗算・pow関数を利用して計算した結果
Oct. 16, 2013, Version: 1.0 [email protected]
2013年度・前期・数理解析・計算機数学3・第3回 2
1e-10 1e-08 1e-06 0.0001 0.01 1 100
1 100 10000 1e+06 1e+08 1e+10 1e+12 1e+14 1e+16
(1+1/n)^n Floating Point Arithmetics Error by Rounding Mode nearest upward downward toward zero
丸めモードを変更して計算した結果
(計算方法は高速乗算)
● 実習内容
(以下で「★」の数は推奨の程度を示します. 多いほど推奨の度合いが大きい. また,「†」は 難易度またはマニアックな程度を表します. 多いほど難しいかマニアックかです.)
1. (★★★)前回の問題5, 6, 7で求めた計算結果を,この資料の図のように書き出しなさい.
2. (†††)通常,浮動小数点演算の丸めモードは“nearest neighbour”である. 他の丸めモー ドを用いても, (1 + 1/n)nの計算値とeとの誤差の挙動は変化が無いことを確かめなさい. な お,浮動小数点演算の丸めモードは,fesetround関数で設定できる. WEBで“fesetround”
として検索すれば,この関数の使い方がわかる.
3. (★★★)exの x= 0におけるテイラー級数 ex=X
k=0
xk k!
を用いて,e の近似値を絶対誤差10−12以内で計算しなさい. また,相対誤差10−12 でも計 算しなさい.
Oct. 16, 2013, Version: 1.0 [email protected]