区間初等関数の作成
2004MM002 青木 啓介
指導教員: 杉浦 洋
はじめに
1
本研究は,精度保証付き数値計算システムの構築を目
的とする.電子計算機は実数を2進有限桁の浮動小数点
数で近似して(丸めて)扱うため,丸め誤差が発生する.ま
た一般に関数は近似関数で計算され,方程式は近似方程
式で置き換えられるので,理論誤差が発生する.
そのため,計算機による数値計算の結果は厳密に正し
いことが保証されていない,したがって,数値計算結果が
どの程度正しいか評価することが必要となってくる.こ
のような目的に対し,適切な計算環境を与えるシステム
が精度保証付き数値計算システムである.
本研究では,初等関数sineとcosineの区間関数を作成し
た.まず,構成の容易な区間象限sine関数,区間象限cosine
関数を作成し,それにより,区間sine関数と区間cosine関
数を作る.ここで,象限sine関数,象限cosine関数は,
sinq(x) = sin π2 x, cosq(x) = cos π2 x.
これらの周期は4となり,2進計算機で扱いやすい.
2
IEEE754
IEEE754とは,近年コンピュータで標準的に用いられ
ている浮動小数点数システムの規格である.IEEE754は,
浮動小数点集合の定義と,その上の四則演算と開平の規
格からなる.これにより四則演算と開平の精度保証が可
能となる.また,多様な精度保証付き数値計算を効果的
に行うには,初等関数の区間関数を開発する必要がある.
2.1
浮動小数点数の規格
2.3
機械四則演算の規格
機械四則演算は,真の四則演算の結果を丸めたものと完
全に一致するように定められている.すなわち,指定され
た丸め⃝ ∈ {a}における,真の四則演算· ∈ {+, −, ×, ÷}
に対応する機械四則演算⊙は
[x] ⊙ [y] = ⃝[x] · [y],
(x, y ∈ F)
である.
3
区間関数
区間解析において,区間とは,閉区間
[x, x] = {x ∈ R | x ≤ x ≤ x}
1. 上向き丸め(round upward)c以上の最小の浮動小数
点数に丸める.これを△:R → Fと表す.
2. 下向き丸め(round downward)c以下の最大の浮動小
数点数に丸める.これを▽:R → Fと表す.
3. 最近点への丸め(round to nearest)cに最も近い浮動
小数点数に丸める.これを¤:R → Fと表す.もし,
このような浮動小数点が2つある場合には,仮数部の
最後のビットが0である浮動小数点に丸める.
4. 切捨て(round toward 0)絶対値が|c|以下の浮動小数
点数の中でcに最も近いものに丸める.
(2)
である.ただし, x ≤ x ∈ R.区間を[x] = [x, x] と表すこ
ともある. 区間全体の集合をI(R)と書く.
連続関数f : D ⊂ R → R は
f ([x]) = {f (x)|x ∈ [x]}
(3)
によりI(R)上の関数に拡張できる.これをf の区間関数と
いう.
4
ホーナー法の丸め誤差解析
与えられたxに対し,多項式の値
y = yn =
n
∑
ak xk
(4)
k=0
の計算法するホーナー法のアルゴリズムは
{
y0 = an
yk = xyk−1 + an−k (k = 1, 2, · · · , n)
2進規格化浮動小数点数とは,
∑N
a = ± i=0 di 2−i × 2e : di ∈ {0, 1},
と書ける数をいう.小数部の桁数N はシステムの定数で, である.
倍精度ではN = 53,拡張倍精度ではN = 64である.
機械計算によるホーナー法は
また拡張倍精度では-32767≤ e ≤32768になる.2進規格
{
化浮動小数点数全体の集合をFとする.
yˆ0 = an
yˆk = (x̂ £ yk−1
ˆ ) ¢ an−k (k = 1, 2, · · · , n)
2.2 丸めモード
計算機上では,一般の実数は,Fの数に丸められ,メモ
リに格納される.IEEE754では次の丸めモードが指定で
きる.cを実数(c ∈ R)とし以下にまとめる.
(1)
(5)
(6)
である.そして,多項式の計算は
ŷ = yˆn ∼
=y
となる.その丸め誤差e = ŷ − y について,次の定理が成
立する.
[定理] 式(6)によるホーナー法の機械計算の結果は,
|x| ≤ r のとき
ŷ = y + e
e ≤ Mr ≡ |an |rn
+
n
∑
j=1
n(t + 2)
1 − n(t + 2)u
|an−j |rn−j
{(n − j)(t + 2) + 1}u
1 − {(n − j)(t + 2) + 1}u
ここでuは丸め誤差単位u = 2−64 である.
4.1
sinq(x), (|x| ≤
5
sinq関数の近似関数xsinqを
sinq(2n + t) = (−1)n sinq(t),
の形式で作る.ここでP (x)は二宮(文献[1])の設計した14
次多項式で
7
∑
P (x) =
ak x2k
より,x ∈ [− 12 , 21 ]の点区間関数に帰着できる.
k=0
である.xP (x)をホーナー法を用いて機械計算したもの
をŷ とおくと,ここで,理論誤差評価と丸め誤差は,それ
ぞれ,
|xsinq(x) − sinq(x)| ≤ |x|Mt ,
(7)
|xsinq(x) − yˆ7 | ≤ |x|Mr
(8)
となる.Mr は,第4章の定理による定まる定数である.
式(7)の不等式は精度保証付き計算で確認した.ゆえに
|sinq(x) − ŷ| ≤ M |x|,
−19
M = Mt + Mr = 2.37 · · · 10
6
sinq(x) ∈ [ŷ − M |x|, ŷ + M |x|] =: psinq(x)
である.
区間sinq関数,区間cosq関数
点区間関数psinq, pcosqを用いて,区間関数sinq, cosqを
構成する.
区間[x] = [x, x]に対して,
sinq([x]) =
ȷ
sinq([x]) =
ȷ
cosq([x]) =
ȷ
cosq([x]) =
ȷ
cosq(x)(|x| ≤ 12 )の区間包囲
(4Z + 3) ∩ [x] ̸= ϕ,
(4Z + 3) ∩ [x] = ϕ,
(11)
1,
max{psinq(x), psinq(x)},
(4Z + 1) ∩ [x] ̸= ϕ,
(4Z + 1) ∩ [x] = ϕ
(12)
−1,
min{pcosq(x), pcosq(x)},
(4Z + 2) ∩ [x] ̸= ϕ,
(4Z + 2) ∩ [x] = ϕ,
(13)
1,
max{pcosq(x), pcosq(x)},
4Z ∩ [x] ̸= ϕ,
4Z ∩ [x] = ϕ
(14)
cosq − 1関数の近似関数
である.
xcosq(x) = x2 P (x) ∼
= cosq(x) − 1
7
7
∑
ak x2k
k=0
である.ここで,理論誤差評価と丸め誤差は,それぞれ,
|xcosq(x) + 1 − cosq(x)| ≤ |x|2 Mt
(9)
|xcosq(x) − yˆ7 | ≤ |x|2 Mr
(10)
となる.Mr は第4章により定まる定数である.
式(9)の不等式は精度保証計算で確認した.ゆえに
|cosq(x) − ŷ| ≤ M |x|,
M = Mt + Mr = 1.22 · · · × 10−19
これにより,
cosq(x) ∈ [ŷ + 1 − M (|x|)2 , ŷ + 1 + M (|x|)2 ] =: pcosq(x)
区間sin関数,区間cos関数
sin(x) = sinq( π2 x), cos(x) = cosq( π2 x)ゆえ,
[ ]
2
sin[x] = sinq(
[x])
π
[ ]
2
cos[x] = cosq(
[x])
π
を作る.ここでP (x)は二宮の設計した
である
−1,
min{psinq(x), psinq(x)},
また,ここでZは整数全体である.cosq([x])の上下限は
これにより,sinq(x)の区間包囲が次式で与えられる.
P (x) =
n∈Z
cosq(2n + t) = (−1)n cosq(t),
1
sinq( − t) = cosq(t),
2
1
cosq( − t) = sinq(t),
2
xsinq(x) = xP (x) ∼
= sinq(x)
4.2
x ∈ Fの点区間関数
x ∈ Fの点区間関数は
1
2 )の区間包囲
で計算する.ここで,[ π2 ]は π2 を含む機械区間とする.
これらの右辺を機械計算してsin[x], cos[x]の包囲区間を計
算する.
8
おわりに
今回の研究では,区間sin関数,区間cos関数の実装を完
了することができた.今後の課題は,残りすべての初等
関数の区間関数を実現することである.
参考文献
[1] 二宮市三:関数システム, 私信(2007).
[2] 大石進一:数値計算, 裳華房 (1999).
[3] 大石進一:精度保証付き数値計算, コロナ社 (2000).
ダウンロード

区間初等関数の作成