Académique Documents
Professionnel Documents
Culture Documents
S TUDENT : C HIVU S TEFAN -I ULIAN , GRUPA 343 P ROFESOR COORDONATOR : P ROF . D R . I ON V ADUVA N UMAR PROIECT : 74
I NTRODUCERE
F ORMULAREA PROBLEMEI
Folosii vectorul aleator uniform pe o elips pentru a evalua valoarea numrului .
si el se numeste estimator secundar. solutia problemei se aproximeaza cu . Daca estimatorul primar () este nedeplasat, adica E*()+ = , atunci estimatorul secundar satisface de regula legea numerelor mari si deci in probabilitate. De cele mai multe ori, estimatorul primar este () astfel ca E*()+ = . Estimatia Monte Carlo aproximeaza solutia , asa cum s-a precizat. Sa presupunem ca exista 2 = Var,()- < si ca dorim sa aproximam cu o
anumita eroare data . Dar este determinist si este aleator. De aceea eroarea trebuie considerata in probabilitate adica | | unde este o probabilitate mica (un risc mic). Deci conform legii numerelor mari, trebuie sa alegem un n astfel incat pentru si sufficient de mici dati sa fie satisfacuta relatia de mai sus. Teorema Volumul n al selectiei 1, 2, , n necesar pentru a estima prin cu eroarea data si cu riscul admis este [ ]
unde [x] este partea intreaga a lui x. Daca consideram U variabila aleatoare uniforma 0 1, atunci se poate scrie [ ]
adica = f(U) este un estimator primar nedeplasat al lui de unde rezulta ca daca consideram selectia U1, U2, , Un atunci se estimeaza cu media aritmetica, adica cu estimatorul secundar
Metoda aceasta bazata pe formula de mai sus se numeste metoda Monte Carlo bruta (denumirea derivand din faptul ca se foloseste repartitia uniforma).
T RATAREA MATEMATICA
Se da elipsa cu centrul in origine , fie D domeniul marginit de aceasta elipsa si sa consideram D (x, y) functia indicator a acestui domeniu D, atunci
Sa consideram acum intervalul bidimensional (dreptunghiul) J = [-a,a]x[-b,b] si vectorul V = (V1, V2) uniform pe J. Atunci
se estimeaza cu
unde V1, V2, , Vn este o selectie asupra lui V. Din ultima relatie rezulta ca
Daca se cere estimarea (aproximarea) lui cu eroarea data si cu coeficientul de risc dat, atunci volumul necesar al selectiei este dat de formula [ ]
Suntem deci in fata unui caz special si oarecum ciudat: pentru a calcula trebuie sa-l cunoastem mai intai pe . Pentru a rezolva aceasta problema presupunem ca atunci avem si deci putem inlocui obtinand un n mai mare, dar care asigura cu atat mai mult precizia si coeficientul de risc . In cazul nostru putem lua
D ESCRIEREA ALGORITMULUI
Algoritmul problemei se reduce la a genera N vectori aleatori uniformi pe intervalul [-a,a]x[-b,b] si a verifica daca apartin sau nu graficului elipsei, efectuandu-se la final o medie aritmetica. Pseudocodul este urmatorul: Intrare a, b, n; Ia S := 0; For i= repeat begin Genereaza V1 uniform pe [-a,a]; Genereaza V2 uniform pe [-b,b]; If end; Afiseaza ; then S := S + 1;
Implementarea algoritmului
C ODUL SURSA LA APASAREA BUTONULUI DE
SIMULARE
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { int N = ((SpinnerNumberModel)jSpinner1.getModel()). getNumber().intValue(); double A = ((SpinnerNumberModel)jSpinner2.getModel()). getNumber().doubleValue(); double B = ((SpinnerNumberModel)jSpinner3.getModel()).
getNumber().doubleValue(); Graphics g = jPanel1.getGraphics(); int W = jPanel1.getWidth(); int H = jPanel1.getHeight(); double S = 0; g.setColor(Color.WHITE); g.fillRect(0, 0, W, H); if(A>B){ for(int i = 1; i <= N; i++) { double V1 = (1-2*Math.random())*A; double V2 = (1-2*Math.random())*B; if(((V1*V1)/(A*A)) + ((V2*V2)/(B*B)) <= 1) { g.setColor(Color.GREEN); S++; } else g.setColor(Color.RED); g.drawLine((int)(W/2+(W/3)*(V1/A)), (int)(H/2+(W/3)*(V2/A)), (int)(W/2+(W/3)*(V1/A)), (int)(H/2+(W/3)*(V2/A))); } g.setColor(Color.BLACK); g.drawOval(W/6, H/2 - (int)((B/A)*(W/3)), 4*W/6, (int)((B/A)*(2*W/3))); g.drawRect(W/6, H/2 - (int)((B/A)*(W/3)), 4*W/6, (int)((B/A)*(2*W/3))); } else { for(int i = 1; i <= N; i++) { double V1 = (1-2*Math.random())*A; double V2 = (1-2*Math.random())*B; if(((V1*V1)/(A*A)) + ((V2*V2)/(B*B)) <= 1) { g.setColor(Color.GREEN); S++; } else g.setColor(Color.RED); g.drawLine((int)(W/2+(H/3)*(V1/B)), (int)(H/2+(H/3)*(V2/B)), (int)(W/2+(H/3)*(V1/B)), (int)(H/2+(H/3)*(V2/B))); } g.setColor(Color.BLACK); g.drawOval(W/2 - (int)((A/B)*(H/3)), H/6, (int)((A/B)*(2*H/3)), 4*H/6); g.drawRect(W/2 - (int)((A/B)*(H/3)), H/6, (int)((A/B)*(2*H/3)), 4*H/6); } g.setColor(Color.BLACK); g.drawLine(0, H/2, W, H/2); g.drawLine(W/2, 0, W/2, H); jTextField1.setText(S/N*4+""); }//
Implementarea algoritmului
I MAGINI PROGRAM
B IBLIOGRAFIE
[1] Ion Vaduva, Modele de simulare cu calculatorul , Editura Tehnica, Bucuresti, 1977 [2] Ion Vaduva, Modele de simulare, Bucuresti, 2004 [3] http://mathworld.wolfram.com/Ellipse.html