Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Metody teoretyczne
- clear
- N=1; T=2; % falsz, prawda
- %zadawanie wartosci prawdopodobienstw
- %Pr - błąd programisty
- %B - błąd w systemie
- %N - skok napięcia
- %D - błąd na dysku
- %U - utrata danych
- %Prawdopodobieństwa dane:
- % blad programisty
- pPr(T) = 0.70;
- pPr(N) = 1 - pPr(T);
- % skok napiecia
- pN(T) = 0.07;
- pN(N) = 1 - pN(T);
- % blad w systemie
- pBPr(T,T) = 0.13;
- pBPr(T,N) = 0.05;
- pBPr(N,T) = 1 - pBPr(T,T);
- pBPr(N,N) = 1 - pBPr(T,N);
- % blad na dysku
- pDNB(T,T,T) = 0.80;
- pDNB(T,N,T) = 0.15;
- pDNB(T,T,N) = 0.45;
- pDNB(T,N,N) = 0.06;
- pDNB(N,T,T) = 1 - pDNB(T,T,T);
- pDNB(N,N,T) = 1 - pDNB(T,N,T);
- pDNB(N,T,N) = 1 - pDNB(T,T,N);
- pDNB(N,N,N) = 1 - pDNB(T,N,N);
- %Utrata danych
- pUDB(T,T,T) = 0.50;
- pUDB(T,N,T) = 0.30;
- pUDB(T,T,N) = 0.20;
- pUDB(T,N,N) = 0.05;
- pUDB(N,T,T) = 1 - pUDB(T,T,T);
- pUDB(N,N,T) = 1 - pUDB(T,N,T);
- pUDB(N,T,N) = 1 - pUDB(T,T,N);
- pUDB(N,N,N) = 1 - pUDB(T,N,N);
- % tablica prawdopodobienstw lacznych
- %Pr - błąd programisty
- %B - błąd w systemie
- %N - skok napięcia
- %D - błąd na dysku
- %U - utrata danych
- for Pr=1:2
- for B=1:2
- for N=1:2
- for D=1:2
- for U=1:2
- p(Pr,B,N,D,U)=pPr(Pr)*pN(N)*pBPr(B,Pr)*pDNB(D,N,B)*pUDB(U,D,B);
- end
- end
- end
- end
- end
- % Sprawdzenie czy suma wszystkich prawdopodobienstw jest rowna 1
- sum(sum(sum(sum(sum(p)))))
- % Na podstawie tablicy prawdopodopienstw lacznych mozna obliczyc dowolne prawdopodobienstwo, np.P(A|S)=P(A,S)/P(S)
- pD = sum(sum(sum(sum((p(:,:,:,2,:))))))
- pPrD = sum(sum(sum(p(2,:,:,2,:))))/pD
- %pwas=sum(sum(sum(p(2,:,2,:,:))))/sum(sum(sum(sum(p(:,:,2,:,:)))))
- %pwnas=sum(sum(sum(p(1,:,2,:,:))))/sum(sum(sum(sum(p(:,:,2,:,:)))))
- % -------------------------------------------------------
- % Metody Monte Carlo
- K=10000; % jednorazowa porcja taktow
- close
- hold on % polecenie zostawia wykres, nastepne beda rysowane na tym samym
- plot([1 1000],[pPrD pPrD]) % wykres P(A|S) wyznaczonego teoretycznie
- axis([0 1000 0 0.9]) % zadanie skali rysunku
- srednia = 0;
- srednia = zeros(1,1000);
- for j=1:1000
- pr=rand(1,K)<pPr(T);
- pn=rand(1,K)<pN(T);
- pbprTT=rand(1,K)<pBPr(T,T);
- pbprNT=rand(1,K)<pBPr(N,T);
- pbprTN=rand(1,K)<pBPr(T,N);
- pbprNN=rand(1,K)<pBPr(N,N);
- %pdbnprTTTT=rand(1,K)<pBPr(T,T)*pN(T)*pDNB(T,T,T);
- %pdbnprTTTN=rand(1,K)<pBPr(T,N)*pN(T)*pDNB(T,T,T);
- %pdbnprTTNT=rand(1,K)<pBPr(T,T)*pN(N)*pDNB(T,N,T);
- %pdbnprTTNN=rand(1,K)<pBPr(T,N)*pN(N)*pDNB(T,N,T);
- %pdbnprTNTT=rand(1,K)<pBPr(N,T)*pN(T)*pDNB(T,T,T);
- %pdbnprTNTN=rand(1,K)<pBPr(N,N)*pN(T)*pDNB(T,T,N);
- %pdbnprTNNT=rand(1,K)<pBPr(N,T)*pN(N)*pDNB(T,N,N);
- %pdbnprTNNN=rand(1,K)<pBPr(N,N)*pN(N)*pDNB(T,N,N);
- %pdbnprNTTT=rand(1,K)<pBPr(T,T)*pN(T)*pDNB(N,T,N);
- %pdbnprNTTN=rand(1,K)<pBPr(T,N)*pN(T)*pDNB(N,T,T);
- %pdbnprNTNT=rand(1,K)<pBPr(T,T)*pN(N)*pDNB(N,N,T);
- %pdbnprNTNN=rand(1,K)<pBPr(T,N)*pN(N)*pDNB(N,N,T);
- %pdbnprNNTT=rand(1,K)<pBPr(N,T)*pN(T)*pDNB(N,T,N);
- %pdbnprNNTN=rand(1,K)<pBPr(N,N)*pN(T)*pDNB(N,T,N);
- %pdbnprNNNT=rand(1,K)<pBPr(N,T)*pN(N)*pDNB(N,N,N);
- %pdbnprNNNN=rand(1,K)<pBPr(N,N)*pN(N)*pDNB(N,N,N);
- pbprTTT=rand(1,K)<pBPr(T,T)*pN(T);
- pbprTTN=rand(1,K)<pBPr(T,N)*pN(T);
- pbprTNT=rand(1,K)<pBPr(T,T)*pN(N);
- pbprTNN=rand(1,K)<pBPr(T,N)*pN(N);
- pbprNTT=rand(1,K)<pBPr(N,T)*pN(T);
- pbprNTN=rand(1,K)<pBPr(N,N)*pN(T);
- pbprNNT=rand(1,K)<pBPr(N,T)*pN(N);
- pbprNNN=rand(1,K)<pBPr(N,N)*pN(N);
- %pdpr=(pr&pn&pbprTT)|(pr&~pn&pbprTN)|(~pr&pn&pbprNT)|(~pr&~pn&pbprNN);
- pdpr=(pr&pn&pbprTT&pbprTTT)|(~pr&pn&pbprTT&pbprTTN)|(pr&~pn&pbprNT&pbprTNT)|(~pr&~pn&pbprTN&pbprTNN)|(pr&pn&pbprNT&pbprNTT)|(~pr&pn&pbprNN&pbprNTN)|(pr&~pn&pbprNT&pbprNNT)|(~pr&~pn&pbprNN&pbprNNN);
- % usrednienie czestosci dla wszystkich dotychczasowych krokow
- if j == 1
- srednia(j) = 0 + (sum(pdpr)-0)/j;
- else
- srednia(j) = srednia(j-1) + (sum(pr&pdpr)/sum(pdpr)-srednia(j-1))/j;
- end
- % narysowanie wykresu: plot([1:j], tablica_srednich_czestosci)
- %pause
- end
- hold
- plot(1:j,srednia,'r',[1 1000],[pPrD pPrD],'b');
Advertisement
Add Comment
Please, Sign In to add comment