7/16に質問をした者です

ソフトの操作方法が間違っているのか、問題に対する考え方が間違っているのか、その両方が間違っているのか、よく分からなくなってしまったので質問することにします。

以下の問題のグラフを描きたいと思っていますが、上手く書けませんでした。


当たりくじ赤が出る確率は常にaで一定、
当たりくじ青が出る確率は常にbで一定、
ハズレくじが出る確率は常に(1-a-b)で一定、
今は、a=bであると仮定します。

この条件下で、くじをn回引いたとき、
少なくとも5回以上当たりくじ赤が出て、かつ、少なくとも5回以上当たりくじ青が出る確率Pn(10≦n)を、
nの値に応じて確率が変化する様子をグラフで描く
という問題を考えています。
(これよりもさらに複雑な条件の問題を考えていますが、まずはこの問題が解けないとどうしようもないので。)
以下、自分が考えた解法です。

(赤が出る回数が0回、青が出る回数が0~n回いずれかになる確率)=A0
(赤が出る回数が1回、青が出る回数が0~n-1回いずれかになる確率)=A1
(赤が出る回数が2回、青が出る回数が0~n-2回いずれかになる確率)=A2
(赤が出る回数が3回、青が出る回数が0~n-3回いずれかになる確率)=A3
(赤が出る回数が4回、青が出る回数が0~n-4回いずれかになる確率)=A4
A=A0+A1+A2+A3+A4、と定義

(赤が出る回数が0~n回いずれか、青が出る回数が0回になる確率)=B0
(赤が出る回数が0~n-1回いずれか、青が出る回数が1回になる確率)=B1
(赤が出る回数が0~n-2回いずれか、青が出る回数が2回になる確率)=B2
(赤が出る回数が0~n-3回いずれか、青が出る回数が3回になる確率)=B3
(赤が出る回数が0~n-4回いずれか、青が出る回数が4回になる確率)=B4
B=B0+B1+B2+B3+B4、と定義

(赤が出る回数が0回、青が出る回数が0~4回いずれかになる確率)=C0
(赤が出る回数が1回、青が出る回数が0~4回いずれかになる確率)=C1
(赤が出る回数が2回、青が出る回数が0~4回いずれかになる確率)=C2
(赤が出る回数が3回、青が出る回数が0~4回いずれかになる確率)=C3
(赤が出る回数が4回、青が出る回数が0~4回いずれかになる確率)=C4
C=C0+C1+C2+C3+C4、と定義

ここで、a=bより、A=Bであるから
求める確率Pnは、
Pn=1-(A+B)+C
=1-2A+C

になると思ったので、AとCを計算しようと思い
まずは確率C=C0+C1+C2+C3+C4を計算しようと思いました。

ソフトでの表記方法に従うと、例えばC3の場合、
C3=(n,Sum(t,0,4,n!/3!t!(n-t-3)!×a^3×b^t×(1-a-b)^(n-t-3))
だと思ったので、

Cの場合だと、
C=(n,Sum(s,0,4,Sum(t,0,4,n!/s!t!(n-s-t)!×a^s×b^t×(1-a-b)^(n-s-t)))

次にAは
A=Sum(u,0,4,a^u×(1-a)^(n-u)×nCr(n,u))
になると思いました。

ここで、Pn=1-2A+C
のPnをグラフを描こうと思い、
パラメータを例えば、a=b=0.02の場合と仮定して、これをグラフにしたところ、
かなり早い段階でグラフが途切れてしまいました。

pdfでの説明の通りに、(変域の上端ー下端)/増減幅≦5000の範囲にしてるのですが、なぜこんなに早くグラフが途切れるのでしょうか。

この問題では、どう入力するのが正しかったのでしょうか。ファイルも送付します。
また、この問題に対する正しい解き方が別にあるのでしょうか。
ソフトに直接関係ない話も多く混ざってしまい大変恐縮ではありますが、
お時間の余裕のある時で構いませんので、お返事を下さると助かります。
ここまでお読み下さり、ありがとうございました。

[添付]: 4896 bytes

user.png A time.png 2018/07/21(Sat) 16:34 No.2474
Re: 7/16に質問をした者です
考え方の問題ではなく,GRAPESの計算限界によるものです。
また,それを回避する方法もります。
サンプルも添付します。

計算限界というのは「n!」です。
948! までは計算できますが,949! 以上は桁数のオーバーフローで計算できなくなります。
そこで,
  n! /s!t!(n-s-t)! を nCr(n,s)* nCr(n-s,t)
と変形することで,オーバーフローを回避しました。
数学的には,
  n! /s!t!(n-s-t)! = nCr(n,s)* nCr(n-s,t)
ですが,GRAPES内部では
nCr(n,s) = n/s * (n-1)/(s-1) * ・・・* (n-s+1)/1
という計算をしているので,オーバーフローを回避できるのです。

[添付]: 5270 bytes

user_com.png ともだ time.png 2018/07/21(Sat) 19:59 No.2475
Re: 7/16に質問をした者です
なるほど、よく理解できました。
これでようやく、安心して本題を解き始めることができます。
お返事ありがとうございました。
user_com.png A time.png 2018/07/22(Sun) 00:12 No.2477
処理 記事No 暗証キー

- JoyfulNote -