- ベストアンサー
指数関数の概算方法について
- 指数関数の概算について考えています。特に負の数の場合について、方法を知りたいです。
- ポアソン分布の確率関数における指数関数の概算方法について悩んでいます。テイラー展開では原点の近くでの概算はできますが、パラメータλがある場合にはずれが大きくなってしまいます。
- 指数関数の概算方法を頭の中で行うか、計算スペースを使わずに行う方法について教えてください。また、確率を直接概算する方法も知りたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
数値計算の立場でいうと, この例のように交項級数になるのは避けるべきです. 同じ e^-3 を計算するのでも, e^x のテイラー展開に直接 x=-3 を代入するよりも x=3 で計算して得られる e^3 の逆数を計算した方がよいです.
その他の回答 (5)
- siegmund
- ベストアンサー率64% (701/1090)
No.2 の siegmund です. 他の方の回答を見ていて思ったのですが, e = 2.71828・・・ は知っているとしていいんでしょうかね. e を既知として,e^(-3) に限るのなら (つまり,e^x の x が整数ならです.Poisson 分布ならそうですね), 難しいこと考えずに (1) e^(-3) ≒ 1/2.7^3 ≒ 0.508 あるいは (2) e^(-3) ≒ 1/2.72^3 ≒0.0496 が結構簡便な気がします. No.3 の Tacosan さんのご回答は 1/e = 0.367・・・ という意味ですね. 系統的で収束のよい近似は連分数展開 (3) e^(-3) = {0, 20, 11, 1,・・・} = 0 + 1/(20 + 1/(11 + 1/(1 + ・・・)) だと思います. 20 まで取ると e^(-3) ≒ 0.05, 11 まで取ると e^(-3) ≒ 0.0497738 でも,e^(-3) の連分数展開ってどうやって導くのだったか,ちょっと思い出せません. Taylor 展開を巧妙に使っていたような記憶があるのですが. 上の連分数展開はズルして Mathematica を使いました.
- info22_
- ベストアンサー率67% (2650/3922)
参考URLのexp(-dx)のパデ近似式を使う方法 1次のパデ近似式の利用 exp(-x)≒(1-x/2)/(1+x/2)=f(x) (0≦x<<1) exp(-dx)≒((1-x/2)/(1+x/2))^d dx=3 ●d=4,x=3/4=0.75として近似すると f(0.75)=((1-0.75/2)/(1+0.75/2))=0.625/1.375≒0.4545=A A^2=0.4545^2≒0.2066, exp(-3)≒A^4≒0.2066^2≒0.0427 exp(-3)=0.049787…の近似値としてまあまあですね。 xをもう少し小さくするとよりよい近似値が得られます。 xは小さいほど良いけどAのべき乗の計算回数が増えます。 ●d=8,x=3/8=0.375とすると f(0.375)=(1-0.375/2)/(1+0.375/2))=0.8125/1.1875 ≒0.6842=A A^2=0.6842^2≒0.4681,A^4≒0.4681^2≒0.2191, exp(-3)≒A^8≒0.2191^2≒0.0480 exp(-3)=0.049787…の近似値として精度が上がりましたね。 更にxを小さくして d=16,x=3/16=0.1875とすると f(0.1875)=(1-0.1875/2)/(1+0.1875/2))=0.90625/1.09375 ≒0.8286=A A^2=0.8286^2≒0.6866,A^4≒0.6866^2≒0.4714, A^8≒0.4714^2≒0.2222, exp(-3)≒A^16≒0.2222^2≒0.0494 exp(-3)=0.049787…の近似値として精度が更に上がりましたね。 有効桁数2桁位ならこの程度の計算で済みます。 更に精度を上げたければ d=32,x=3/32などとして exp(-3)≒A^32 を計算すればいいですね。 このようにxを小さくしてやる程、近似値の精度が上がります。
お礼
パデ近似は初めて知りました. テイラー展開よりも広い範囲で良い近似値を与えそうですね(その分, 最初に係数を決定にちょっと計算が必要ですが). 回答ありがとうございました.
- Tacosan
- ベストアンサー率23% (3656/15482)
0.37^3
- siegmund
- ベストアンサー率64% (701/1090)
指数関数の Taylor 展開は収束半径が∞とはいうものの x がちょっと大きいと n! が x^n に追いつくまでは収束するように見えませんから x=-3 で3項だけとっても近い値は出ませんよね. こういうのはいかがですか. (1) 3-e = d とおく. (2) d ≒ 0.281718 それで (3) e^(-3) = (3-d)^(-3) = 3^(-3) {1-d/3}^(-3) ≒3^(-3) {1+d} ≒0.047471 とします. 3行目に移るところで,|ε| << 1 のときの近似式 (4) (1+ε)^s ≒ 1 + sε を使いました(要するに,2項展開の最初の2項). 正確な値は (5) e^(-3) = 0.0497871・・・ ですから,まあまあでしょう. これなら暗算かレシートの裏で出来ると思います. なお,(4)で次の項まで入れると (4') (1+ε)^s ≒ 1 + sε + {s(s-1)/2}ε^2 でこれを使えば 0.0484509 になります.
お礼
e = 3 - d と思うのは便利ですね. 確かにこれくらいなら暗算で済ませられそうです. 回答ありがとうございました.
- alice_44
- ベストアンサー率44% (2109/4759)
exp(x) ={exp(x/n)}のn乗 を使って x/n の絶対値を適当に小さくし、 exp(x/n) をマクローリン展開しては? n を 2 のベキ乗にしておけば、 最後に n 乗する処理もやりやすい。
お礼
指数法則のそのような使い方は初めて見た気がします. 確かにそうですね. 回答ありがとうございました.
お礼
どうも数値計算には疎いもので… でも常識的に考えても交項級数の方が収束が遅そうですね. 確かに exp(-x) = 1/exp(x) として計算するのが簡明で良さそうです. いままで 1/e の近似値は覚えていませんでしたが覚えた方が便利そうですね. この場合に限れば (1/e)^3 < 0.4^3 = 0.064 くらい乱暴に計算してもほどほどの値を得ますし, 何よりこれくらいなら暗算で済ませられそうです. 回答ありがとうございました.
補足
パラメータλが自然数ではなかったときに計算のしやすいことも考えてベストアンサーとさせていただきます. 他の回答者の皆様もありがとうございました.