アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近, ポアソン分布で遊んでみて思ったのですが指数関数の概算で良い方法はないでしょうか? 原点の近くならばテイラー展開をすれば良いのですがパラメータλのポアソン分布の確率関数は
p(x = k) = (λ^k exp(-λ))/k!
となり, たとえばλ = 3 のときに
exp(-3) ~ 1 - 3 + 9/2 = 2.5
と概算すると真の値 exp(-3) ~ 0.05 からは大きくはずれてしまいます. 10のべきまで展開してやっと0.05くらいになります. が, これではとても暗算では計算できません.

どなたかこのような概算を頭の中で(あるいはレシートの裏くらい計算スペースで済む)方法を知りませんか? あるいは直接に確率を概算する方法も大歓迎です.

A 回答 (6件)

数値計算の立場でいうと, この例のように交項級数になるのは避けるべきです.



同じ e^-3 を計算するのでも, e^x のテイラー展開に直接 x=-3 を代入するよりも x=3 で計算して得られる e^3 の逆数を計算した方がよいです.

この回答への補足

パラメータλが自然数ではなかったときに計算のしやすいことも考えてベストアンサーとさせていただきます. 他の回答者の皆様もありがとうございました.

補足日時:2013/02/17 19:56
    • good
    • 0
この回答へのお礼

どうも数値計算には疎いもので… でも常識的に考えても交項級数の方が収束が遅そうですね.

確かに exp(-x) = 1/exp(x) として計算するのが簡明で良さそうです. いままで 1/e の近似値は覚えていませんでしたが覚えた方が便利そうですね. この場合に限れば
(1/e)^3 < 0.4^3 = 0.064
くらい乱暴に計算してもほどほどの値を得ますし, 何よりこれくらいなら暗算で済ませられそうです. 回答ありがとうございました.

お礼日時:2013/02/17 13:18

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 を使いました.
    • good
    • 0

参考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を小さくしてやる程、近似値の精度が上がります。

参考URL:http://alk.fam.cx/tfunc_080.html
    • good
    • 0
この回答へのお礼

パデ近似は初めて知りました. テイラー展開よりも広い範囲で良い近似値を与えそうですね(その分, 最初に係数を決定にちょっと計算が必要ですが). 回答ありがとうございました.

お礼日時:2013/02/17 13:09

0.37^3

    • good
    • 0

指数関数の 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 になります.
    • good
    • 0
この回答へのお礼

e = 3 - d と思うのは便利ですね. 確かにこれくらいなら暗算で済ませられそうです. 回答ありがとうございました.

お礼日時:2013/02/17 13:26

exp(x) ={exp(x/n)}のn乗 を使って


x/n の絶対値を適当に小さくし、
exp(x/n) をマクローリン展開しては?
n を 2 のベキ乗にしておけば、
最後に n 乗する処理もやりやすい。
    • good
    • 0
この回答へのお礼

指数法則のそのような使い方は初めて見た気がします. 確かにそうですね. 回答ありがとうございました.

お礼日時:2013/02/17 13:01

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