• 検索結果がありません。

数の表現と誤差

N/A
N/A
Protected

Academic year: 2021

シェア "数の表現と誤差"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

数の表現と誤差

-丸め誤差と打切り誤差-

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 44

5

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)

丸め誤差の例(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

st

approx.

3rdapprox.

5

th

approx.

正弦関数 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) のマクローリン級数表示

7

2 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

正確さ

精密さ

(3)

誤差の定義

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 : 10

Approx. : 9999 Approx. : 1

橋 釘

近似値の誤差

11

S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.53, McGraw Hill, 2006

近似値のパーセント相対誤差

approximate error

approximation 100%

a  

current approximatation previous approximation current approximation 100%

a

近似値のパーセント相対誤差

真値が分からない大半の現実問題では,真の誤差は定義はできて も求められないので,代替えとして近似値の誤差が使われる。

繰り返し計算をして近似精度を上げようとするとき,次式が使われ ることもある。(近似精度が改善される前の近似値を使う)

ε

a

の値として,一般に2-3%が判定基準として使われることが多い が,要求レベルはシステムによって異なる。

(1)

(2)

近似値の誤差

12

S. 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

   

【解答】

(4)

数値の表現方法

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

13

2

12

2

11

2

10

2

9

2

8

2

7

2

6

2

5

2

4

2

3

2

2

2

1

2

0

2

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

      

上の例では,

整数の表現

15

S. C. Chapra, Numerical Methods for Engineers, 5thEdition, p.60, ex.3.3, McGraw Hill, 2006

2

13

2

12

2

11

2

10

2

9

2

8

2

7

2

6

2

5

2

4

2

3

2

2

2

1

2

0

2

14

±

【例題3】 16ビットコンピュータで表現できる10進数整数の範囲を求め よ。

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1  32767 ( 2 151) 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の補数表現を利用している)

【解答】

最大 ゼロ

負の最大

負のゼロ

浮動小数点の表現

16

S. 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未満

(5)

浮動小数点の表現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

1

2

0

2

-1

2

-2

2

-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 ) 233 0.109375

1 2 3 3

(1 2  1 2  0 2 ) 2 6 0 0 1 1 1 1 0

2

1

2

0

2

-1

2

-2

2

-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 ) 233 0.078125

刻み幅 0.015625

=2

-3

×2

-3

刻み幅 1

=2

-3

×2

+3

2

-3

2

+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

19

2+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

オーバーフローとアンダーフロー

20

S. 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 ) 233 0.015625 0 1 1 1 0 0 0 (0 2 1 0 22 0 2 ) 233 0

刻み幅 0.015625

=2

-3

×2

-3

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 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

+3

2

1

2

0

2

-1

2

-2

2

-3

± ±

2

1

2

0

2

-1

2

-2

2

-3

± ±

(6)

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 と呼ぶ)

エクセルの数値表示限界

23

S. 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)

確認テスト

24

1. 数値計算誤差について2種類に分けて説明せよ。

2. 有効数字について説明せよ。

3. 真の誤差と近似値の誤差について説明せよ。

4. 浮動小数点のメリットとデメリットを述べよ。

5. オバーフローとアンダーフローホールについて説明せよ。

6. 16ビットコンピュータで表現できる10進数の整数の範囲を求 めよ。

7. 7 bit 浮動小数点で表現される数 0111100 を10進数で求め よ。

8. エクセルは倍精度浮動小数点数型を使って数値計算を行っ

ている。2

n

と2

-n

の計算をスプレッドシート上で計算し,表示可

能な最小値と最大値を求めよ。

参照

関連したドキュメント

One of the procedures employed here is based on a simple tool like the “truncated” Gaussian rule conveniently modified to remove numerical cancellation and overflow phenomena..

Among all the useful tools for theoretical and numerical treatment to variational inequalities, nonlinear complementarity problems, and other related optimization problems, the

This review is devoted to the optimal with respect to accuracy algorithms of the calculation of singular integrals with fixed singu- larity, Cauchy and Hilbert kernels, polysingular

This review is devoted to the optimal with respect to accuracy algorithms of the calculation of singular integrals with fixed singu- larity, Cauchy and Hilbert kernels, polysingular

This review is devoted to the optimal with respect to accuracy algorithms of the calculation of singular integrals with fixed singu- larity, Cauchy and Hilbert kernels, polysingular

In this section we apply approximate solutions to obtain existence results for weak solutions of the initial-boundary value problem for Navier-Stokes- type

heat equation; non-local boundary condition; fifth-order numerical methods; method of lines; parallel algorithm.... JJ J

Example 4.1: Solution of the error-free linear system (1.2) (blue curve), approximate solution determined without imposing nonnegativity in Step 2 of Algorithm 3.1 (black