Mam problem z pewnym zadaniem - chodzi o obliczenie prawdopodobieństw
stacjonarnych dla systemu M/M/1 z czasem dyskretnym. Mam podany elegancki wzór,
oraz co ozn. poszczególne zmienne: p - prawdopodobieństwo przyjścia pakietu,
q - prawdopodobieństwo obsługi pakietu, N - ile prawdopodobieństw obliczyć.
wzór:
P(1) = p/qP(0)
P(n+1) = P(n)(1-2p+p/q)-P(n-1)(p/q), dla n > 0
Na początku ustalam dowolne P(0), a potem normalizuję prawdopodobieństwa pozostałe,
czyli: (jest to taka normalizacja)
for(int i=0; i<N; i++)
P[i] /= P(0);
gdzie P[i] = zawiera i-te prawdopodobieństwo.
Problem mój polega nie na zaimplementowaniu wzroru, bo jest wprost śmieszny, ale to,
że otrzymuję ujemne prawdopodobieństwa (wtf?)
Być może jest jakiś błąd we wzorze? Siedzę nad tym już drugi tydzień i nic, wie
ktoś, co tu poprawić?
Nie bardzo mogę podać kod, ale powiem po krótce, co w nim robię:
- tworze tablice P o rozmiarze N, zeruję ją
- ustalam P(0), obliczam P(1), wrzucam je do tablicy P
- w pętli for(int i=1; i<N-1; i++) mam dokładnie ten wzór, który podałem wyżej, czyli P(n+1) = P(n)(1-2p+p/q)-P(n-1)*(p/q)
- wykonuję normalizację wartości z tablicy P, o tak: for(int i=0; i<N; i++)
P[i] /= P(0);
Proszę o pomoc:(