数の表現と誤差
-丸め誤差と打切り誤差-
1st. 2020/04/19 Lst. 2021/08/01
数値計算誤差の分類
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.51, McGraw Hill, 2006
① Round-off error 丸め誤差
② Truncation error 打切り誤差
① コンピュータのメモリー制限で、無限小数は有限桁でしか扱 えない。(どこかの桁で四捨五入して丸めている)→ 数値を 有限桁のディジタル表示する際の表現精度とも言える。
② 数値解は何らかの近似を取り入れた結果である。(本来は 無限小の分割幅を有限幅で近似的に扱ったり、無限級数を 有限級数で扱わざるを得ない)
→解析解を近似表現する際 の精度とも言える。
どちらも「無限」を「有限」で表現しようとする所から生じる誤差 数値計算誤差=解析解(厳密解)と数値解(近似解)との相違
の2種類 2種類の誤差の説明
有効数字
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.51, McGraw Hill, 2006
3
40
50 4 8 . 5
確か 不確か
有効数字3桁 certain uncertain アナログメータの例
ディジタルメータの例
8 7 3 2 4 445
8 7 3 2 4 . 4 5 確か 不確か certain uncertain
有効数字7桁
「有効数字」とは・・・自信を持って使える数値のことで,複数の確かな 数値と1つの見積り数値から成る。
(自信がある) (自信がない)
.
丸め誤差の例(1)
4エクセルの組み込み関数 π = pi() の表示例
① デフォルトでは小数点以下の桁数6桁(有効桁7桁)
② アルファベットの書いてある列の右端をクリックして表示桁 を自動拡張すると,小数点以下の桁数9桁(有効桁10桁)
③ セルの書式設定で「数値」→「小数点以下の桁数」を16に すると17桁表示になるが,このうち有効なのは15桁のみ つまり,Excelにおいて,πは有効数字15桁に丸めて計算 されること(丸め誤差の発生)を意味している。
π=pi() ① ② ③
の表示 default double crick セル書式設定(小数16桁)
3.141593 3.141592654 3.1415926535897900
π= 3.14159 26535 89793 23846 26433 83279 50288 …
17桁 10桁(小数9桁)
7桁(小数6桁)
丸め誤差の例(2)
分数5/3の計算結果の表示
Excel セルの書式設定
表示形式 小数点以下の桁数 分数5/3 の計算結果 有効桁
標準 9 1.666666667 10
数値 16 1.6666666666666700 15
数値 30 1.666666666666670000000000000000 15
指数表示 0 2.E+00 1
指数表示 10 1.6666666667E+00 11
指数表示 14 1.66666666666667E+00 15 指数表示 20 1.66666666666667000000E+00 15
Excel表示形式は,該当するセルで右クリック,セルの書式設定→
表示形式→標準 or 指数表示 を選択
セルの書式設定で小数点以下の桁数を変更して色々試すと,無限 小数の5/3も有効桁15桁に丸めて計算されることが分かる。
打切り誤差の例(1)
sinx x
1 3
sinx x 6x
3 5
1 1
sinx x 6x 120x
1
stapprox.
3rdapprox.
5
thapprox.
正弦関数 y=sin(x) のマクローリン級数表示例
-3 -2 -1 0 1 2 3 4
0 1 2 3
y=sin(x)
x [rad]
true value 1st 3rd 5th
周期性を利用すれば、π/2までの展開で任意のxについて の関数をプログラミングできる。
sin(x) のマクローリン級数表示
72 3 ( )
(0) (0) (0)
( ) (0) (0)
2! 3! !
n n
f f f
f x f f x x x
n
( ) sin (0) 0 f x x f
( ) cos (0) 1 f x x f
( ) sin (0) 0
f x x f
(3)( ) cos (3)(0) 1
f x x f
2 3 4 5
0 1 0 1
( ) 0 1
2! 3! 4! 5!
f x x x x x x
3 5
1 1
sinx x 6x 120x
(4)( ) sin (4)(0) 0
f x x f
(5)( ) cos (5)(0) 1
f x x f
f(x)=sin(x)をx=0の近傍でテイラー級数展開(マクローリン級数展開)すると,
右辺各項の導関数を計算すると,
求めた導関数を級数展開の式に戻すと,
整理すると,
正確さと精密さ
8標的に対して バラツキが少 なく的の中心 に近い バラツキは小
さいが的外れ
Accuracy Precision
Imprecision, Uncertainty Inaccuracy
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.53, McGraw Hill, 2006
正確さ
精密さ
誤差の定義
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.53, McGraw Hill, 2006
真値
Round-off Truncation 真の誤差 (true error)
真のパーセント相対誤差 (true percent relative error)
しかし・・・,現実の問題で真値を求めることができるケースは,
手計算で理論的に解が得られる場合を除いてほとんどない。
数値計算 の場合
true value approximation
Et
true error true value 100%
t
True value = approximation + error
近似値 誤差
(1)
(2)
(3)
真の誤差
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.53, ex.3.1, McGraw Hill, 2006
【例題1】 長さ10,000 cmの橋と,長さ10 cmの釘がある。それぞれの 測定値が9,999 cmと9 cmであったとき,E
tとε
tを求めよ。
10000 9999 1 cm Et
1 100 0.01%
10000
t
10 9 1 cm Et
1 100 10%
t 10
同じ真の誤差1 cmでも,釘の相対誤差の方がずっと大きい。
橋 釘 橋 釘
True value : 10000
【解答】
True value : 10Approx. : 9999 Approx. : 1
橋 釘
近似値の誤差
11S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.53, McGraw Hill, 2006
近似値のパーセント相対誤差
approximate errorapproximation 100%
a
current approximatation previous approximation current approximation 100%
a
近似値のパーセント相対誤差
真値が分からない大半の現実問題では,真の誤差は定義はできて も求められないので,代替えとして近似値の誤差が使われる。
繰り返し計算をして近似精度を上げようとするとき,次式が使われ ることもある。(近似精度が改善される前の近似値を使う)
ε
aの値として,一般に2-3%が判定基準として使われることが多い が,要求レベルはシステムによって異なる。
(1)
(2)
近似値の誤差
12S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.56, ex.3.2, McGraw Hill, 2006
【例題2】 e
0.5をマクローリン級数展開して得られる近似値のパーセント 相対誤差をエクセルの表計算を使って求めよ。
True value : e0.5 1.648721
2 3
1 2 3! !
n
x x x x
e x
n
x n Approx. TRUE Et=True-App. εt [%] Ea εa [%]
0.5 1 1 1.648721271 0.648721271 39.34693403 #VALUE! #VALUE!
0.5 2 1.5 1.648721271 0.148721271 9.020401043 0.5 33.33333333 0.5 3 1.625 1.648721271 0.023721271 1.438767797 0.125 7.692307692 0.5 4 1.645833333 1.648721271 0.002887937 0.175162256 0.020833333 1.265822785 0.5 5 1.6484375 1.648721271 0.000283771 0.017211563 0.002604167 0.157977883 0.5 6 1.648697917 1.648721271 2.3354E-05 0.001416494 0.000260417 0.015795293
このケースでは近似値はn=4で1.3%程度、n=5で0.16%程度の相対誤 差となることが分かる。
(1)
1.648721 1
100% 39.3%
1.648721
t
(2)
1.5 1
100% 33.3%
a 1.5
【解答】
数値の表現方法
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.51, McGraw Hill, 2006
① Fixed point representation 固定小数点
② Floating point representation 浮動小数点
① 大きさの変動幅が小さい数値,主に整数に適用される。
シンプルだが,表現できる数の範囲は狭い。
② べき乗で表現することにより,対数スケールとの相性が 良くなる。大きさの変動幅が大きい数値(ミクロオーダー からマクロオーダーの数まで一緒に扱える。)に適用され る。表現できる数の範囲は広いが,数値刻み幅(分解 能)が変化するデメリットもある。
数値の表現方法
2種類の表現方法の説明
固定小数点による整数の表現
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, McGraw Hill, 2006
16 bit コンピュータの場合
0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1
符号 1 bit
2
132
122
112
102
92
82
72
62
52
42
32
22
12
02
14±
1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1
173
173
15 bit
0 : 1 :
7 5 3 2 0
(2 2 2 2 2 ) 173
7 5 3 2 0
(2 2 2 2 2 ) 173
上の例では,
①
②
①
②
整数の表現
15S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, ex.3.3, McGraw Hill, 2006
2
132
122
112
102
92
82
72
62
52
42
32
22
12
02
14±
【例題3】 16ビットコンピュータで表現できる10進数整数の範囲を求め よ。
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32767 ( 2 151) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32767
32768
①
②
③
④
④は③で表現できており,冗長なのでこれを-32768に割り当てる。
つまり,-32768 から 32767 を表現できることになる。(実際のコン ピュータでは負の数を表現するのに2の補数表現を利用している)
【解答】
最大 ゼロ
負の最大
負のゼロ
浮動小数点の表現
16S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, McGraw Hill, 2006
R m b e
仮数 底,基数 指数
156.78 0.15678 10 3
例2) 1/34=0.02941176470… を仮数4桁,基数10の浮動小数 点で表現すると
①は有効桁3桁(10
-4×10
0の精度)なので,仮数部を10倍して指数 部を1/10すると,②のように有効桁を4桁に増やすことができる
(10
-4×10
-1の精度まで保証される)。この処理を正規化と呼ぶ。
例1) 156.78 を仮数5桁,
基数10の浮動小数点で 表すと
0.0294 10 0
①
0.2941 10 1
②
exponent mantissa base
指数部 exponent part
1 0 1
1
b m b m
b
b=10なら、mは0.1以上1未満
浮動小数点の表現1
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.61, ex.3.4, McGraw Hill, 2006
【例題4】 7 bit浮動小数点で
表現される数 0111100 を10進数で求めよ。
0 1 1 1 1 0 0
2
12
02
-12
-22
-3仮数
m指数の
大きさ 指数符号
e(0:+, 1:-)
数値符号
(0:+, 1:-)
± ±
1 0
(1 2 1 2 ) 3 e
1 2 3
1 2 0 2 0 2 0.5 m
7 bit
0.5 2 3 0.0625 R m b e
上の例では,
【解答】
浮動小数点の表現2
【例題4】 7 bit 浮動小数点で表現できる数を全て求めて図示せよ。
0 1 1 1 1 1 0
1 2 3 3
(1 2 1 2 1 2 ) 2 7 0 0 1 1 1 1 1
1 2 3 3
(1 2 1 2 0 2 ) 2 0.09375 0 1 1 1 1 1 1 (1 2 1 1 22 1 2 ) 23 3 0.109375
1 2 3 3
(1 2 1 2 0 2 ) 2 6 0 0 1 1 1 1 0
2
12
02
-12
-22
-3± ±
1 2 3 3
(1 2 0 2 1 2 ) 2 5 0 0 1 1 1 0 1
0 1 1 1 1 0 1 (1 2 1 0 22 1 2 ) 23 3 0.078125
刻み幅 0.015625
=2
-3×2
-3刻み幅 1
=2
-3×2
+3…
2
-32
+3浮動小数点表示では,同じ仮数mでも指数部b
eの違いに よって表現できる数値の刻み幅(分解能)が変化する。
…
最大値
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.61, ex.3.4, McGraw Hill, 2006
0 1 2 3 4 5 6 7 8
Linear scale
浮動小数点の表現3
192+3 2+1
2-3 2-2 2-1 20 2+2 0.01 0.1 1 10
Log scale
2+3
2+1
2-3 2-2
2-1 20
2+2 刻み幅 1
=2-3×2+3
刻み幅 0.015625
=2-3×2-3
【解答】
リニアスケール ログスケール
be
m
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.61, ex.3.4, McGraw Hill, 2006
オーバーフローとアンダーフロー
20S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, McGraw Hill, 2006
0 1 1 1 0 0 1 (0 2 1 0 22 1 2 ) 23 3 0.015625 0 1 1 1 0 0 0 (0 2 1 0 22 0 2 ) 23 3 0
刻み幅 0.015625
=2
-3×2
-31 2 3 3
(1 2 1 2 1 2 ) 2 7 0 0 1 1 1 1 1
1 2 3 3
(1 2 1 2 0 2 ) 2 6 0 0 1 1 1 1 0
最小値 0.015625 よりも小さい数は7bit浮動小数点では 表現できない。これをアンダーフローホールと呼ぶ。
最大値 7 よりも大きい数は7bit浮動小数点では表現できない。
これをオーバーフローと呼ぶ。
例え,有理数で有限桁の小数(例えば13/2=6.5)のような区切 りの良い小数であっても,上の場合は刻み幅が 1.0 なので 0.5 の丸め誤差を生じる。これを量子化誤差と呼ぶ。
刻み幅 1
=2
-3×2
+32
12
02
-12
-22
-3± ±
2
12
02
-12
-22
-3± ±
IEEE方式(IEEE754形式)
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, McGraw Hill, 2006
232221202-12-2 2-23
±
0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
① 単精度浮動小数点数型(32ビット=4バイト)
± 262524 2-32-4 2-22
仮数 m : 23bit 指数 e : 8 bit
(符号 1bit含む)
符号 1bit
6 5 4 3 2 1 0
1 2 1 2 1 2 1 2 1 2 1 2 1 2 127 e
23 7
1 2 1.19209 10 m
23 127 7 38
1 2 2 1.19209 10 10 R m b e
上の例では,
( 27 1)
7 7
2 2 128 128
2 2 2 2
be
38 39
10 10
23 0
2 2
m
1.19209 107 1
表現 範囲
Single precision floating point number (略して float, real など とも呼ぶ)
IEEE方式(IEEE754形式)
S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, McGraw Hill, 2006
② 倍精度浮動小数点数型(64ビット=8バイト)
2-52
±±29
m : 52bit e : 11 bit
Sign 1
2-1 21
2-10
±
③ 半精度浮動小数点数型(16ビット=2バイト)
±23
m : 10bit e : 5 bit
Sign 1
2-1 21
2-112
±
④ 4倍精度浮動小数点数型(128ビット=16バイト)
±214
m : 112bit e : 15 bit
Sign 1
2-1 21
1024 1024
2 2
be
308 308
10 10
16 16
2 2
be
5 5
10 10
32768 32768
2 2
be
9864 9864
10 10
指数部表現範囲
Excelは倍精度を使っている
Double precision floating point number (略して Double と呼ぶ)
エクセルの数値表示限界
23S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, McGraw Hill, 2006
【例題5】 エクセルは倍精度浮動小数点数型を使って数値計算を行っ ている。2
nと2
-nの計算をスプレッドシート上で計算し,表示可能な最小 値と最大値を確認せよ。
0 1E-252 1E-196 1E-140 1E-84 1E-28 1E+28 1E+84 1E+140 1E+196 1E+252 1E+308
0 200 400 600 800 1000 1200
Log scale
n
2^n 2^-n
1020 1.1236E+307 8.9003E-308 1021 2.2471E+307 4.4501E-308 1022 4.4942E+307 2.2251E-308 1023 8.9885E+307 0
1024 #NUM! 0
1025 #NUM! 0
1026 #NUM! 0
n 2n 2-n
0 1 1
1 2 0.5
2 4 0.25
3 8 0.125
4 16 0.0625
5 32 0.03125
…
オーバーフロー アンダーフロー
【解答】
(1E-308)