• Tidak ada hasil yang ditemukan

実数の浮動小数点表現とその誤差の例

N/A
N/A
Protected

Academic year: 2025

Membagikan "実数の浮動小数点表現とその誤差の例"

Copied!
3
0
0

Teks penuh

(1)

GFDワークノート 誤差の定義と蓄積 1

実数の浮動小数点表現とその誤差の例

実際,我々は計算機を用いて関数f(x, y)を計算し,興味のある値zを獲得する.よっ て,∆cにはf(x, y)の計算の過程で生じた「計算誤差」が含まれている. 今日,計算 機の性能が向上したからといって,この計算誤差が無視できるほどに小さくできる ようになったわけではない. 計算誤差の例を以下に3つほど挙げる. 各自実際に計 算し,結果を考察されたい.

例 1

n = 1,2,· · · ,10に対してn2, n3,1/nを求め,表を出力する. 実際に手元の計算機で

計算すると,以下の表のようになる. プログラム例はex1 d.f90を参照されたい.

1 n nˆ2 nˆ3 1/n

2 1 1.00000000 1.00000000 1.00000000

3 2 4.00000000 8.00000000 0.50000000

4 3 9.00000000 27.00000000 0.33333333

5 4 16.00000000 64.00000000 0.25000000

6 5 25.00000000 125.00000000 0.20000000

7 6 36.00000000 216.00000000 0.16666667

8 7 49.00000000 343.00000000 0.14285714

9 8 64.00000000 512.00000000 0.12500000

10 9 81.00000000 729.00000000 0.11111111

11 10 100.00000000 1000.00000000 0.10000000

表を見ると, 特におかしなことは起こっていない. しかし, 伊理テキストによる と, 同様の計算を大型機の FORTRAN で行うと, 1/10 = 0.1 とならずに 1/10 = 0.09999996となったという1 ).

1 )伊理テキストp.2に出てくるFORTRANFORMAT, F14.8は,出力する値を14桁分の欄に小

2011˙0407-takuya˙03.tex 2011/04/07(川畑拓也)

(2)

GFDワークノート 誤差の定義と蓄積 2

例 2

0.01を10,000回足すプログラムを作り, 結果を出力する. 伊理テキストによると,

パソコンBASICと大型機FORTRANでは,

10000X

n=1

0.01 =

( 100.003 (パソコンBASIC)

99.95277 (大型機FORTRAN) (1.1)

という結果になったという. 実際に手元の計算機2 )で計算すると,

10000X

n=1

0.01 =

(100.00295 (単精度) 

100.00000000001425 (倍精度) (1.2)

と言う結果になる. プログラム例は単精度,倍精度それぞれex2 e.f90, ex2 d.f90を 参照されたい.

例 3

x = 0.0,0.1,· · ·,0.9,1.0に対してx2 を計算し合計するプログラムを,伊理テキス トのように,

x= 0.0 ; s = 0.0 ; whilex≤1.0 do

begins =s+x2 ; x=x+ 0.1 end ; prints

というような構造で作成する. 用いて作成する. 伊理テキストによると, X10

n=0

(0.1n)2 =

(2.85 (パソコンBASIC)

3.85 (大型機FORTRAN) (1.3)

という値になったという. 手元の計算機では, X10

n=0

(0.1n)2 =

(2.8500004 (単精度)

3.8499999999999996 (倍精度) (1.4)

数点以下8桁の精度で書くという意味である.この14桁分の欄には符号,小数点を含むことに注意 されたい.

2 )手元の計算機のプロセッサは「Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz」である. FOR- TRANコンパイラはgfortran (GNU Fortran (Debian 4.4.5-8) 4.4.5)を用いた.

2011˙0407-takuya˙03.tex 2011/04/07(川畑拓也)

(3)

GFDワークノート 誤差の定義と蓄積 3

という結果となった. プログラム例は単精度,倍精度それぞれex3 e.f90, ex3 d.f90 を参照されたい. なお,正答は,

X10

n=0

(0.1n)2 = 3.85 (1.5)

であり,これは数列の和の公式, Xn

k=0

k2 = 1

6n(n+ 1)(2n+ 1) (1.6)

から容易に確かめられる3 ). 正答と比較すると, パソコンBASIC,あるいは単精度 計算において,最後のx= 1.0に対する項の加算をしないらしいことがうかがえる.

3 )(1.13)を導出する.恒等式,

(k+ 1)3k3= 3k2+ 3k+ 1

を考え,k1,2,· · · , nを代入し,n個の式の辺辺を加えると,

(n+ 1)31 = 3(12+ 22+· · ·+n2) + 3(1 + 2 +· · ·+n) +n となる.よって,

3(12+ 22+· · ·+n2) = (n+ 1)33(1 + 2 +· · ·+n)(n+ 1)

= (n+ 1)33n(n+ 1)

2 (n+ 1)

= n(2n+ 1)(n+ 1)

2 .

ゆえに, Xn

k=0

k2= 1

6n(n+ 1)(2n+ 1).

2011˙0407-takuya˙03.tex 2011/04/07(川畑拓也)

Referensi

Dokumen terkait

13 8 43 ○整数の筆算の仕方をもとに小数 ÷1位数の筆算の仕方を考え,筆 算で計算することができる。 ・小数÷1位数の筆算 態度整数のわり算の筆算をもとに して,小数÷1 位数の筆算の仕 方を考えようとしている。《発言・ ノート》 知技小数÷1 位数の筆算の仕方 を理解し,筆算で計算することが できる。《ノート》 9 44

1 以下はどんな関数? 戻り値が void型なしで,関数名が hogeで, 引数がない関数.関数の中身は省略されているの で不明. 2 以下はどんな関数? 戻り値の型がint型で,関数名がpiyoで,引数 がない関数.関数の中身は省略されているので不 明.戻り値の型はint型と分かるが,関数の中 身が省略されているので戻り値の値は不明. 3

RSA暗号の安全性 結局、RSA暗号の安全性は、 素因数分解問題の(計算量的)困難さ に掛かっている 現在の所、 充分速い計算法(多項式時間アルゴリズム)は 知られていない −→ 多くの数学者・計算機科学者が鋭意研究中... RSA暗号の安全性 結局、RSA暗号の安全性は、 素因数分解問題の(計算量的)困難さ に掛かっている 現在の所、

一方、原始関数も、 定数だけ違ってもやはり原始関数 (微分したら同じ)なので、 普通は定数の差を気にしない 微分積分学の基本定理 f:連続のとき、 不定積分 ≡ 原始関数 −→ 原始関数(逆微分)を知れば積分が計算できる −→ 計算は今までに馴染みの 諸公式・手法によれば良い... 一方、原始関数も、 定数だけ違ってもやはり原始関数

上智大学社会福祉研究1992.3 10 れる(吼 その他,クリアリングハウスの機能としては,問題をもった当事者たちが共同的行為を起こす のを容易にさせ,狭い意味での「病気」のみを考える構え(Krankheitsorientierung)に代えて, 社会生活全体を包括する予防的な保健を考える構え(Gesundheitsorientierung)を促進させるこ

GFDワークノート 第10章 一次元移流方程式の数値解法 2 この方法の精度は誤差 ²≡unj −uj∆x, n∆t を計算することで分かる.. 第8章での考察から, ²=O∆t,∆x 時間方向,

IPSJ SIG Technical Report 誤差のあるデータからの内部拘束を持つ3次元運動の計算法 と幾何学的モデル選択への応用 本田 卓士1,a 松永 力2,b 金谷 健一1,c 概要:空間をわずかに移動する複数の点の移動前後の位置を3次元センサーで計測し,どのような並進,

IPSJ SIG Technical Report 不均一な誤差分布をもつ空間データからの 3 次元回転の最適計算 原 裕 貴†1 新 妻 弘 崇†1 金 谷 健 一†1 3次元データ間の回転を最適に計算する新しい方法を示す.3次元データは2次元 データと異なり,その計測の過程から空間的に不均一な非等方正誤差分布をもつこと