コンピュータ工学2③

6

369

0

まっつー

まっつー

テスト勉強用に作りました。よかったら活用して下さい。文字化けが酷いです。

PromotionBanner

ノートテキスト

ページ1:

コンピュータ工学2
まとめ③

ページ2:

コンピュータ内部での数値表現と誤差

ページ3:

有限桁のために生じる問題点
・コンピュータ内部での数値
• 有限桁(有限ビット) で表現
▲ 桁数はほとんどの場合一定
・数値データ
> 10進数形式
・ゾーン10進数
・パック10進数
■ 2進数形式
・固定小数点方式
・浮動小数点方式
「数値表現の誤差」 または 「数値演算による誤差」 が生じる

ページ4:

数値表現と誤差
・基本変換によって生じる誤差
・例:10進数(0.1)10を2進数(8桁)で表現
(0.1)10 = (0.00011)2
←
-
= (0.00011001100110011...)2
↓
* (0.00011001)2
-5
-8
= 2-4 + 2 5 + 2 = 0.0625+0.03125 + 0.00390625
= 0.0976525≠ (0.1) 10

ページ5:

浮動小数点方式と誤差
・ある程度以上細かい数値は表現できない
・数が大きくなればなるほど、数をおおざっぱにしか表現できな
い
↓ 定められた有限桁で数値を表現
•
細かい部分が切り捨てられ、 有限桁で表現可能な近似値を選択
・注意すべき場合
>
非常に小さな値を扱う場合
非常に大きな値を扱う場合
正確さが要求される大規模な計算の場合

ページ6:

数値演算による誤差
・丸め誤差
・桁落ち誤差
数値をどこかの桁で単数処理するときに発生
絶対値がほぼ等しい2数の減算を行う時に発生
・情報落ち誤差
絶対値の大きな数と小さな数を加減算するときに発生
積み残し、満員通過
・打ち切り誤差
◆計算処理の終了前に途中で計算を止めることにより発生

ページ7:

丸め誤差
・数値や演算結果を指定の有効桁数で表現する際、単数処理の際
に生じる誤差
例: 5桁10進の浮動小数点数を用いた減算
0.1 x 10+4 - 0.5×10+1 = 0.995 × 10+3
|答えの仮数部は3桁.一方, 規格は2桁.
答えの仮数部3桁に
+0.25 × 10-4
なんらかの処理 (丸め) が必要.
+ 2
4
⇒ 0.99 x 103 or 0.10 × 104
仮数部:
指数部:
符号を含め3桁 符号を含め2桁
28

ページ8:

桁落ち誤差
・2つの値の絶対値がほぼ等しく符号が同じ場合、 減算の結果、元
の有効桁数が大幅に失われること
■ 例: 仮数部が10進6桁の浮動小数点による数
■ +1.00000 × 106 - 9.99999 × 10 +5
100000
有効桁数6桁
正規化
減算後の正規化処理により桁落
ちが生じ, 有効桁数が激減.
| は有効な情報を持たないの
で有効桁数は1桁しかない.
+ 2 1
仮数部: 符号を含め7桁
指数部: 符号を含め2桁

ページ9:

•誤差
●
加算結果: (0.0000000463699)10
...誤差率0.000007%程度
・減算結果: (0.0000000192093)10
...誤差率20%程度

ページ10:

•
(実例) 桁落ち誤差
(1.0000101)10と(1.0000100) 10の加減算
・理想的には...
• 加算結果 : (2.0000201)10
減算結果: (0.0000001)10
・実行結果は...
加算結果: (2.0000201463699)10
減算結果: (0.0000001192093)10

ページ11:

情報落ち : 積み残し
計算(S+A)Sを行うことを考える.
||S|≫ |A|であるならば, 演算結果がAと著しく異なる .
原因: A の持つ情報が十分にSに伝わらなかった
S+ A = Sと処理された (積み残し)
例: 有効桁数6桁の10進浮動小数点
S = +1.00000 × 10+6, A = +1.00000 × 10-1
1000000
0.100000
+ 2 1 234 5
-
4
100000 0.1
仮数部: 符号を含め7桁 指数部: 符号を含め2桁

ページ12:

情報落ち:満員通過
•
72
計算 S = Σ
[仮定]
i=1
= x + x2+X3 +... + Xn
・各x; の値が小さい
項数nが十分大きい
満員通過: 部分和がある程度大きくなると,
それ以降の x を加算しても総和に影響を与えない .
例: 3桁の精度を持つ10進数
例えば...
各 x = +1.00 × 10° = 1
+ 1 2 3
-
4
仮数部:
指数部:
符号を含め4桁
符号を含め2桁
i = 1~1000 まで加算
⇒ S = 1000 = +1.00 × 10+3
これ以降はいくら1を加算しても
Sの値は変化しない (満員通過).

ページ13:

打ち切り誤差
・例)無限階級の計算
1 1 1
1+ + +
2 4 8
+
1
1
+
2"
2°
・現実的には、ある程度のところで計算を打ち切る
「最初から10回分だけ加算し、残りは無視
誤差=“無視された部分”
・計算時間と精度がトレードオフの関係

コメント

コメントはまだありません。

News