~級数展開の不思議-桁落ち 現場数学(その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一般」の他のキーワード解説記事

もっと見る
正規分布について

1.正規分布とは  一般に自然界のデータ分布は左右対称の釣鐘形状になります。例えば平均が50点の試験があれば、そこを中心に点数の分布が左右に広がります。...

1.正規分布とは  一般に自然界のデータ分布は左右対称の釣鐘形状になります。例えば平均が50点の試験があれば、そこを中心に点数の分布が左右に広がります。...


基礎統計のリスキリング 【厳選記事紹介】第一種と第二種の誤りとは

       ◆ 基礎統計のリスキリング 「あわて者の誤り」と「ぼんやり者の誤り」をご存知ですか、あわて者...

       ◆ 基礎統計のリスキリング 「あわて者の誤り」と「ぼんやり者の誤り」をご存知ですか、あわて者...


DPMO(Defects Per Million Opportunity) 工程能力の理解 (その3)

  【工程能力の理解 連載目次】  工程能力とは  工程能力指数-Cp/Cpk  ...

  【工程能力の理解 連載目次】  工程能力とは  工程能力指数-Cp/Cpk  ...


「SQC一般」の活用事例

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

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

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


ビックデータ時代と米国大統領戦

 ビックデータ時代を考える事例として、今回の第45代米国大統領選挙を見てみます。第45代の米国大統領に、ドナルド・トランプ氏が決まりましたが、トランプ氏当...

 ビックデータ時代を考える事例として、今回の第45代米国大統領選挙を見てみます。第45代の米国大統領に、ドナルド・トランプ氏が決まりましたが、トランプ氏当...


第1種の誤りと第2種の誤り

 「あわて者の誤り」と「ぼんやり者の誤り」をご存知ですか、あわて者の誤りは正式には『第一種の誤り』(Type Ⅰ error)と呼称し、ぼんやり者の誤りは...

 「あわて者の誤り」と「ぼんやり者の誤り」をご存知ですか、あわて者の誤りは正式には『第一種の誤り』(Type Ⅰ error)と呼称し、ぼんやり者の誤りは...