informatica |
VARIABILE ALETORIA BINOMIALE
La variabile aleatoria binomiale è una variabile discreta in quanto si basa su un numero finito di elementi e si indica con B(m d . In particolare lo spazio degli eventi è formato da E ed E negato. Siamo in presenza perciò di un sistema completo, infatti i due eventi sono due a due incompatibili e la loro unione forma omega (W
La probabilità che l'evento si verifichi si indica con la lettera p e per tanto la probabilità che non si verifichi è 1-p (la probabilità di W è 1), cioè q.
P è un parametro fondamentale assieme a n, che è il numero di prove effettuate indipendenti e nelle stesse condizioni, in modo che la probabilità possa essere ogni volta p. Il numero di successi in n prove si indica con la lettera k, che è una variabile.
Da questo si può calcolare la probabilità di avere k successi in n prove, utilizzando la formula generale:
P(k)= n ทpk ทq n-k
k
La sommatoria delle P(k) è uguale a 1 perche come ho detto prima siamo in presenza di un sistema completo di eventi. Questa ugualianza è dimostrabile anche matematicamente:
n
P(k)= n pk q n-k =
k=0 k=0 k
= (p+q)n = // Calcolo di una potenza di un binomio
= (p+1-p)n =
=1n = 1
Sulla binomiale si possono calclare il valore atteso E(k), va varianza VAR(k) e la moda Mo:
Il valore atteso è il prodotto tra n e p:
E(k)=n p
La varianza è il prodotto tra il numero di prove (n), la probabilità dell'evento (p) e la probabilità di non verificarsi (q):
VAR(k)=n p q
Per calcolare la moda, prima si esegue un calcolo il cui risultato potrà essere un numero intero o un numero reale:
Mo=n p-q
Nel caso in cui il risultato sia un numero intero, la moda sarà espressa con due valori, rispettivamente:
Mo=n p-q ed Mo=n p-q+1=n p+p
Nel caso in cui il risultato sia un numero reale, la moda sarà il risultato della prima operazione considerando solamente la parte intera e aggiungendo 1:
Mo = [n p -q]+1
- Programma
DICHIARAZIONE VARIABILI
Variabili di input
- int n : Numero di prove effettuate (intero)
- float p : Probabilità che l'evento E si verifichi (decimale)
Variabili di output
- float Pk[30] : Variabile aleatoria binomiale (array)
- float E : Valore atteso (decimale)
- float var : Varianza (decimale)
- float Mo : Moda (decimale)
Variabili in uso nel pgm
- int scheda,modo : Variabili per l'uso della grafica
- char rchar[40] : Stringa di caratteri utilizzata durante la visualizzazione del grafico
- int i,j,a,y,yy,z : Variabili per cicli e controlli
FUNZIONI
- void Controllo1 : Controllo sull'inserimento di prove effettuate
Il valore immesso deve rientrare nel range di valori che va da 0 a 32'766 (massimo valore rappresentabile con un integer).
- void Controllo2 : Controllo sull'inserimento della probabilità
Il valore immesso deve rientrare nel range di valori che va da 0 a 1 (probabilità di Ω).
- void Ordina : Ordinamento crescente di Pk
L'ordinamento avviene con il metodo chiamato Bubble - Sort.
DESCRIZIONE DEL PGM
Immissione dati
L'inserimento del numero di prove avviene con il controllo,che richiede l'inserimento se è stato riscontrato un errore, e la stessa cosa avviene con l'inserimento della probabilità. Poi stampa a video la tabella di giuste dimensioni con i vari valori possibili di k.
Calcolo della binomiale
La prima probabilità P(k) con k=0 viene calcolata con la formula abbreviata di qn . Le altre vengono calcolate in più istruzioni in un ciclo; per verificare l'esattezza dei calcoli fa la sommatoria delle P(k) e la mostra a video.
Valore atteso, varianza, moda
Il valore atteso e la varianza vengono calcolati immediatamente con la formula e stampati; per il calcolo della moda si esaminano i tre casi con Mo<0, Mo= numero reale e Mo= numero intero.
Grafica
La sessione di grafica inizia dopo aver premuto INVIO e disegna gli assi, le frecce, scrive il titolo, scrive i nomi degli assi e salva nelle variabili 'a' e 'z' le costanti di tutti e due gli assi (sapendo lo spazio in pixel a disposizione per il disegno). Disegna la scala sull'asse x con un ciclo e stampa i rispettivi valori. Lo stesso avviene con l'asse y, ordinando però prima il vettore Pk. In fine vengono disegnati i punti a dispersione.
- Listato del programma
* Croci Jvan 4^ A Informatica 16-l0-2000 *
// Input: n, p.
// Output: Variabile aleatoria BINOMIALE, E(k), VAR(k), Mo, Grafico.
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<values.h>
#include<graphics.h>
int n; // Numero di prove
float p; // Probabilit . di E
float Pk[30],E,var,Mo; // Variabili di output
int i=0,j=0,a=0,y=0,yy=0,z=0;
char rchar[40];
int scheda,modo;
void Controllo1(int val,int &ritorno,int &cont);
void Controllo2(float val,int &ritorno2,int &cont2);
void Ordina();
void main(void)
while(a==1);
do
while(a==1);
printf('nn ษอออออออหอออออออออปn');
printf(' º k º P(k) ºn');
printf(' ÌอออออออIอออออออออ¹n');
for(i=0;i<n+1;i++)
printf(' º º ºn');
printf(' ÈอออออออIอออออออออ¹n');
printf( º ºn');
printf( Èอออออออออ¼n');
for(i=0;i<n+1;i++)
//----- ----- --------- ----- -------- BINOMIALE -------- ----- ------
Pk[0]=(pow(1-p,n));
gotoxy(15,12+(yy*2)+(y*2));
printf('%.4f',Pk[0]);
for(j=1;j<n+1;j++)
E=0;
for(i=0;i<n+1;i++)
E=E+Pk[i]; // Sommatoria di P(k) = 1
gotoxy(15,12+n+2+(yy*2)+(y*2));
printf('%.4f',E);
//----- ----- ------------- VALORE ATTESO, VARIANZA, MODA ----- ----- ------------
E=0;
E=n*p; // Valore atteso E(k)
var=n*p*(1-p); // Varianza VAR(k)
printf('nnn Il valore atteso di k [ E(k) ] S: %.4fn',E);
printf(' La varianza di k [ VAR(k) ] S: %.4fn',var);
Mo=(n*p)-(1-p);
if(Mo<0) // Numero < 0
else
else // Numero intero
}
getch();
//----- ----- --------- ----- ------- GRAFICA -------- ----- ------ ---
printf('nn Per visualizzare il grafico premere il tasto INVIO ');
getch(
detectgraph(&scheda,&modo);
initgraph(&scheda,&modo,'c:borlandcbgi');
clrscr(
setfillstyle(
floodfill(
line( // Asse y =410
line( // Asse x =440
line(
line( // Freccia
line(
line(
line( // Freccia
line(
settextstyle(
setcolor(
outtextxy(130,0,'Variabile aleatoria Binomiale');
a=440; // Costante asse x
z=390; // Costante asse y
setcolor(15);
settextstyle(1,0,1); // Nomi assi
outtextxy(550,450,'k');
outtextxy(40,10,'P(k)');
setcolor(
y=a/(n+1);
settextstyle(
for(i=0;i<n+1;i++)
yy=z/Pk[Mo];
settextstyle(
for(i=0;i<n+1;i++)
line(95,430-(Pk[i]*yy),105,430-(Pk[i]*yy)); // Scala asse y
setcolor(
setfillstyle(
for(i=0;i<n+1;i++)
setcolor(
Ordina(
for(i=0;i<n+1;i++)
getch(
// Termine pgm
//----- ----- --------- ----- ------- FUNZIONI -------- ----- ------ --
void Controllo1(int val,int &ritorno,int &cont)
else
ritorno=0;
void Controllo2(float val,int &ritorno2,int &cont2)
void Ordina()
//
} //
}
while((n>0) && (ordinato==1));
Privacy
|
© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta