プロが教える店舗&オフィスのセキュリティ対策術

無限大-無限大の計算の仕方


Excel2010を使っています。


(coth x /x) - (1/ x^2)

という関数をExcelあるいはVBAを使ってプロットしたいのですが
x → 0で無限大-無限大の計算となるため

けた落ちしてしまって、うまく計算することができません。
正確には1/3 = 0.33333という値に収束するはずです。
Excelでは有効数字を15桁以上にすることができないそうで、これが問題となっています。

Matlabなどの他のプログラムソフトウェアを使わずに
この計算を行いたいのですがどうすれば良いでしょうか?

恐らく、計算の順番を工夫すれば計算できると思うのですが
どなたか教えて下さい。

A 回答 (2件)

 cosh,sinh,cothの定義は、当然ご存知だと思うのですが、これらはe^xのよって定義されます。

またコンピューターの中では、e^xは基本的に、マクローリン級数、

  e^x=1+x+1/2!・x^2++1/3!・x^3++1/4!・x^4++1/5!・x^5+・・・   (1)

で計算されます。

 またExcelに限らずコンピューターの中では、有効数字は15~16桁です。これはCPUのレジスターが、最大で20くらいの桁数しか持ってないからです。なので必要精度が15~16桁を越えれば、必然的に桁落ちが起きます。

 そういう目で(1)を見て下さい。例えば、x=10^(-6)なら、(1)の2項目のxまでなら何とかなりますが、3項目はx^2なので10^(-12)となり、それに1/2!=1/2までかかってるので、もう桁落ちし兼ねません。4項目以降は確実に0と、CPUに解釈されます。そうすると結果の精度は、6桁程度と覚悟すべきです。15桁のフル桁は実現されません。

 (1)のような無限級数のxは、0に近いほど(絶対値が小さいほど)数値的に正しい結果を与えそうですが、有限桁数しか持たない機械的なコンピューターには、こういう事情もあります


 確認のため、実際にExcel2010でやってみました。結果は、x=10^(-3)辺りが良い所です。それ以上に小さいxについては、#1さんの方法が、実用的と思います。

http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2% …
    • good
    • 0

cothxを展開してやればどうかな?


A1をx,B1を(coth x /x) - (1/ x^2)とすれば
B1=1/3-A1^2/45+2*A1^4/945-2*A1^6/9450+2*A1^8/93555-A1^10/462021
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!