~級数展開の不思議-桁落ち 現場数学(その2)

更新日

投稿日



♦ 発想の転換で“桁落ち”回避


 有限桁数の計算機を使って計算することによって起こる深刻な問題の例を挙げましょう。まずは、簡単そうに見える級数展開の問題を考えます。例えば、e-10を求めたいとします。それには、指数関数の級数展開

 

 を用いて、C、BASIC、Fortranとか何らかの言語でプログラムを作成し、xに-10を代入して計算を実行すれば良いだけのはずです。パソコンでも、あっという間に収束し、

 e-10=0.00055095・・・    (2)

 という値が得られます。簡単ですよね?しかし、e-10の本当の値は、何と一桁も違って、

 e-10=0.0000454・・・     (3)

 なのです。プログラムを何度見直しても間違ってはいません。では、何故、どこも間違っていないのに全く異なる答えが出るのでしょうか?その原因は「桁落ち」です。実は(1)の公式で、xに負の大きな値を指定すると、展開の最初の数項にわたって正と負の大きい値が交互に現れ、それらの差し引き合計として、極めて小さい値が得られるのです。32ビットの精度で計算した途中結果は以下のようになります。

     -9.00000000
     41.00000000
  -125.6666560
   290.99975600
  -542.33349600
   846.55517600
-1137.57178000
 1342.58691000
-1413.14478000
  1342.58667000
 -1162.62256000
    925.05297900
   -680.85205100
    466.22338900
   -298.49365200
    179.45434600
   -101.69165000
      54.50067140
         ・
     ・
     ・
        0.00055852
        0.00054884
        0.00055153
        0.00055080
        0.00055099
        0.00055094
        0.00055096
        0.00055095
        0.00055095
        0.00055095

 と約40項目で収束します。ところが、32ビットの数値を10進数で記述すると、実は6桁程度しか精度がないのです。そのため、途中の13桁ほど書いている部分の小数点以下には意味がないことが分かります。すなわち、収束して得られた値である0.00055095・・・という数値には何の意味もないのです。
 では、どうやって、 e-10の値を正しく求めるのでしょうか?倍精度で解決。これも一つの手です。しかし、そういう力ずくではなく、実に発想の転換によって可能となるのです。つまり

 

 を使うのです。正の値の指数関数の級数展開は問題なく収束します。その逆数を求めることによって、正しい値が得られるのです。
 似ている他の問題として、正負が交互に現れる交代級数の和の値の求め方として、正の値と負の値を別々に集めて計算し、その結果得られた2つの値の差によって桁落ちを免れた正しい値を得るという方法も良く使われます。

 

 も有名な例題です。この問題には、倍精度も何も効きません。何倍精度であろうと収束した結果は全て間違いなのです!ご存知のように、(5)の結果は無限大で、数値計算で求めることは出来ません。

...



♦ 発想の転換で“桁落ち”回避


 有限桁数の計算機を使って計算することによって起こる深刻な問題の例を挙げましょう。まずは、簡単そうに見える級数展開の問題を考えます。例えば、e-10を求めたいとします。それには、指数関数の級数展開

 

 を用いて、C、BASIC、Fortranとか何らかの言語でプログラムを作成し、xに-10を代入して計算を実行すれば良いだけのはずです。パソコンでも、あっという間に収束し、

 e-10=0.00055095・・・    (2)

 という値が得られます。簡単ですよね?しかし、e-10の本当の値は、何と一桁も違って、

 e-10=0.0000454・・・     (3)

 なのです。プログラムを何度見直しても間違ってはいません。では、何故、どこも間違っていないのに全く異なる答えが出るのでしょうか?その原因は「桁落ち」です。実は(1)の公式で、xに負の大きな値を指定すると、展開の最初の数項にわたって正と負の大きい値が交互に現れ、それらの差し引き合計として、極めて小さい値が得られるのです。32ビットの精度で計算した途中結果は以下のようになります。

     -9.00000000
     41.00000000
  -125.6666560
   290.99975600
  -542.33349600
   846.55517600
-1137.57178000
 1342.58691000
-1413.14478000
  1342.58667000
 -1162.62256000
    925.05297900
   -680.85205100
    466.22338900
   -298.49365200
    179.45434600
   -101.69165000
      54.50067140
         ・
     ・
     ・
        0.00055852
        0.00054884
        0.00055153
        0.00055080
        0.00055099
        0.00055094
        0.00055096
        0.00055095
        0.00055095
        0.00055095

 と約40項目で収束します。ところが、32ビットの数値を10進数で記述すると、実は6桁程度しか精度がないのです。そのため、途中の13桁ほど書いている部分の小数点以下には意味がないことが分かります。すなわち、収束して得られた値である0.00055095・・・という数値には何の意味もないのです。
 では、どうやって、 e-10の値を正しく求めるのでしょうか?倍精度で解決。これも一つの手です。しかし、そういう力ずくではなく、実に発想の転換によって可能となるのです。つまり

 

 を使うのです。正の値の指数関数の級数展開は問題なく収束します。その逆数を求めることによって、正しい値が得られるのです。
 似ている他の問題として、正負が交互に現れる交代級数の和の値の求め方として、正の値と負の値を別々に集めて計算し、その結果得られた2つの値の差によって桁落ちを免れた正しい値を得るという方法も良く使われます。

 

 も有名な例題です。この問題には、倍精度も何も効きません。何倍精度であろうと収束した結果は全て間違いなのです!ご存知のように、(5)の結果は無限大で、数値計算で求めることは出来ません。

   続きを読むには・・・


この記事の著者

川添 良幸

市販の材料設計シミュレーションプログラムでは満足できない御社技術者に、本当に意味のある物理の基本に基づいた設計法を伝授します。我々の計算と実験結果が合わない場合は実験の方に問題があると言えるレベルを達成しています。

市販の材料設計シミュレーションプログラムでは満足できない御社技術者に、本当に意味のある物理の基本に基づいた設計法を伝授します。我々の計算と実験結果が合わな...


「SQC一般」の他のキーワード解説記事

もっと見る
~長方形の面積S=a×b?-誤差の概念、誤差の伝播― 現場数学(その3)

  1. 誤差の概念について  子どもの頃、面積を求める問題は分かりやすく、誰でも算数が出来た気になりました。その時、悩みもせず、例えば...

  1. 誤差の概念について  子どもの頃、面積を求める問題は分かりやすく、誰でも算数が出来た気になりました。その時、悩みもせず、例えば...


~公式とは? 現場数学(その4)

   力学、流体力学、電磁気学、光学、熱力学、統計力学、量子力学…、さらには遺伝子工学まで、多くの数学公式が現れ、その数値解...

   力学、流体力学、電磁気学、光学、熱力学、統計力学、量子力学…、さらには遺伝子工学まで、多くの数学公式が現れ、その数値解...


天体は音楽を奏でる? ~奇跡的一致の不思議 現場数学(その5)

  1. 天体運動に思い馳せたピタゴラス  数学といえば、現場数学であろうが純粋数学であろうが、何と言ってもピタゴラスです。紀元前500...

  1. 天体運動に思い馳せたピタゴラス  数学といえば、現場数学であろうが純粋数学であろうが、何と言ってもピタゴラスです。紀元前500...


「SQC一般」の活用事例

もっと見る
DPMOとは何か

 DPMOとはDefects Per Million Opportunityのイニシャルを取ったものです。DPMOを百万個当りの欠陥数(製品百万個当りの不...

 DPMOとはDefects Per Million Opportunityのイニシャルを取ったものです。DPMOを百万個当りの欠陥数(製品百万個当りの不...


統計手法による 2018年LPGA公式記録データの解析事例(その1)

【統計手法による 2018年LPGA公式記録データの解析 連載目次】 統計手法による 2018年LPGA公式記録データの解析事例(その1) 統...

【統計手法による 2018年LPGA公式記録データの解析 連載目次】 統計手法による 2018年LPGA公式記録データの解析事例(その1) 統...


信頼できる結果を得るために統計的手法の活用を

昔の事になりますが、配属された職場の先輩の下である実験を手伝いました。先輩は図1のような計画をたてました。2つの量的因子A、Bの効果を確認する実験でした。...

昔の事になりますが、配属された職場の先輩の下である実験を手伝いました。先輩は図1のような計画をたてました。2つの量的因子A、Bの効果を確認する実験でした。...