Rumpの例題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/06 10:16 UTC 版)
「精度保証付き数値計算」の記事における「Rumpの例題」の解説
1980年代にRumpは次のような例を提示した(Rump (1988)を参照)。 f ( a , b ) = 333.75 b 6 + a 2 ( 11 a 2 b 2 − b 6 − 121 b 4 − 2 ) + 5.5 b 8 + a 2 b {\displaystyle f(a,b)=333.75b^{6}+a^{2}(11a^{2}b^{2}-b^{6}-121b^{4}-2)+5.5b^{8}+{\frac {a}{2b}}} という関数を考え、この関数に a = 77617.0 , b = 33096.0 {\displaystyle a=77617.0,b=33096.0} という値を与えて数値計算をしたときにどういう結果が得られるか実験した。計算機はIBMのメインフレームS/370を使用して、単精度、倍精度、拡張精度で実験を行い、それぞれ 単精度(10進約8桁): f ( a , b ) ∼ 1.172603... {\displaystyle f(a,b)\sim 1.172603...} 倍精度(10進約17桁): f ( a , b ) ∼ 1.1726039400531... {\displaystyle f(a,b)\sim 1.1726039400531...} 拡張精度(10進約34桁): f ( a , b ) ∼ 1.172603940053178... {\displaystyle f(a,b)\sim 1.172603940053178...} の結果を得た。この結果を見ると、それぞれの精度に応じて途中の桁まで正しい値が得られているように思えたが、実は真の値は f ( a , b ) = − 0.82739605... {\displaystyle f(a,b)=-0.82739605...} であり、真の値とは符号さえ合わないような結果が得られていた。これは、「ある演算精度で計算してそれよりも高い演算精度で計算したときに双方の結果が近ければある程度は結果の正しさを確認できる」とは限らないことを示す例である。
※この「Rumpの例題」の解説は、「精度保証付き数値計算」の解説の一部です。
「Rumpの例題」を含む「精度保証付き数値計算」の記事については、「精度保証付き数値計算」の概要を参照ください。
- Rumpの例題のページへのリンク