proiect tehnici de simulare

22
Proiect Tehnici de Simulare - An 3, I.D. Tema numarul 15 Simularea Variabilei Beta(a,b) Student:

Upload: maia1206

Post on 16-Sep-2015

276 views

Category:

Documents


1 download

DESCRIPTION

Simularea variabile beta

TRANSCRIPT

Proiect Tehnici de Simulare - An 3, I.D.

Tema numarul 15

Simularea Variabilei Beta(a,b)

Student:

1. Introducere- formularea problemei, definitii si notiuni necesare -

Formularea problemeiConstruiti doua metode de simularea variabilei Beta(a; b), din care una sa includa cazul 0 < a < 1 ; b > 1

Definitii si notiuni necesare

Repartitia uniforma

Una din repartitiile de probabilitate importante, dar care este naturala, este repartitia uniforma pe un interval[a, b] care are densitatea de repartitie de forma

Variabila V avand densitatea de repartitie sus mentionata se spune ca este repartizata uniform pe [a, b]. Deci toate valorile variabilei V sunt egal probabile. Functia de repartitie corespunzand densitatii sus mentionate este

Sa notam cu U variabila aleatoare uniforma pe [0, 1], pe care o vom numi pe scurt variabila uniforma 01. Densitatea de repartitie si functia de repartitie a lui U sunt respectiv

Repartitia Beta

Variabila X are repartitia Beta(a, b), a > 0, b > 0 daca densitatea sa de repartitie este

f(x) = unde

Urmtoarea teorema permite simularea variabilei Beta(a, b)Teorema. Daca Gamma(0, 1, a), Gamma(0, 1, b), independent de , atunci variabila

este o variabila Beta(a,b).

Demonstratie. Densitatea comuna de repartitie a lui () este

Facand in ultima integrala transformarea

avem

Densitatea de repartitie a variabilei este

adica dupa calcule deducem

si teorema este demonstrata.

Deoarece aceasta formula presupune generarea prealabila a doua variabile gamma, rezulta ca aceasta metoda are o complexitate mare. In cazurile particulare, care nu necesita o complexitate mare, se pot folosi alte teoreme.

Teorema. Daca variabila aleatoare X are repartitie Beta(a, b), ( a > 0, b 0) , atunci momentele initiale de ordinul k sunt

Din relatia de mai sus se deduce ca media si dispersia variabilei X cu repartitia Beta(a, b) sunt

Legea numerelor mari.

Aceasta lege este necesara la validarea algoritmilor, deoarece repetand experimentul de un numar suficient de mare de ori, vom observa ca rezultatele - media si dispersia variabilelor aleatoare obtinute- isi vor pierde caracterul intamplator, apropiindu-se tot mai mult de rezultatele teoretice.

Teorema lui Bernoulli:

Fie A un eveniment a carui probabilitate de realizare este p si fie fn(A) frecventa relativa de realizare a evenimentului A in n repetari independente ale experimentului in care se produce A.Atunci pentru fiecare >0

Demonstratie:Asociem fiecarei efectuare a experimentului o variabila aleatoare X care poate lua valori 1 daca experimentul i s-a realizat si 0 in caz contrar. Numarul de realizari ale lui A in cele n repetari independente ale experimentul e dat de:

unde vom avea

Deci Aplicam inegalitatea lui Cebisev si obtinem

Pentru ca rezulta

2. Tratarea matematica a problemei

In continuare vor fi prezentate doua cazuri particulare pentru simularea variabilei Beta(a, b).1. 0 < a < 1 si 0 < b < 12. 0 < a < 1 si b > 1Primul caz particular de simulareVom folosi urmatoarea teorema.Teorema. Daca 0 < a < 1, 0 < b < 1 si sunt variabile aleatoare uniforme 0 1 si independente si daca atunci repartitia variabilei conditionata de este Beta(a,b).Demonstratie:Observam ca

de unde rezulta ca densitatea de repartitie a lui V este

si densitatea de repartitie a lui T este

rezulta ca densitatea de repartitie a variabilei este

iar

Deci densitatea variabilei X conditionata de este

Si teorema este demonstrata.

Al doilea caz particular de simulareVom folosi urmatoarea teorema.Teorema. Daca 0 < a < 1, b > 1 si sunt variabile uniforme 0 1 independente si consideram , atunci repartitia variabilei V conditionata de este Beta(a,b).Demonstratie: Mai intai observam ca

de unde rezulta ca densitatea de repartitie a lui V este.si densitatea de repartitie a lui T este

Rezulta ca densitatea comuna de repartitie a variabilelor V,T- independente este

iar

Deci densitatea comuna a variabilelor (V,T) conditionata de este

De aici rezulta ca densitatea lui V conditionata de este

Si teorema este demonstrata.

3. Descrierea algoritmilor

Algoritmul de simulare variabilei Beta(a,b),

Datele de intrare: a si b Datele de iesire: Variabila Beta(a,b) X

RepeatGenereaza uniforme 0 1 si independente; ; ;Until ;Calculeaza Probabilitatea de acceptare a acestui algoritm este

Algoritmul de simularea variabilei Beta(a,b) unde

Datele de intrare: a si bDatele de iesire: Variabila Beta(a,b)V

RepeatGenereaza unifirme 0 1 independente ; ; ;Until ;Probabilitatea de acceptare a acestui algoritm este

4. Validarea algoritmilor.

Vom folosi pentru validarea algoritmilor de simulare doua metode, respectiv aproximarea graficului densitatii de repartitie si verificarea aproximarii mediei si dispersiei.

Aproximarea densitatii de repartitie

Pentru a verifica acuratetea rezultatelor obtinute in urma algoritmului de generare a unui set de date, se analizeaza in ce masura histograma asociata setului obtinut aproximeaza densitatea de repartitie a variabilelor generate.Validarea algortimului s-a facut cu ajutorul graficului densitatii de probabilitate folosind histograme. La fiecare rulare a programului se va afisa si histograma. K = 25 intervale.

Cazul 1- Beta(a,b),

Mai jos se gaseste histograma pentru 5000 de variabile generate cu alfa = 0.5 si beta = 0.5

Mai jos se gaseste histograma pentru 4000 de variabile generate cu alfa = 0.3 si beta = 0.7

Cazul 2 - Beta(a,b) unde Mai jos se gaseste histograma pentru 2000 de variabile generate cu alfa = 0.5 si beta = 1.3

Mai jos se gaseste histograma pentru 4000 de variabile generate cu alfa = 0.7 si beta = 1.9

Verificarea mediei si a dispersiei

Se observa ca dimensiunea multimii de selectie influenteaza rezultatele mediei si dispersiei aferente setului de date, in sensul ca le apropie foarte mult de valorile teoretice corespunzatoare tipului de date din multimea de selectie (o consecinta a legii numerelor mari).In tabelul urmator se gasesc rezultatele obtinute pentru diferite dimensiuni ale multimii de selectie in comparatie cu valorile teoretice corespunzatoare.

Nr.Crt Volum de selectie Media obtinuta Media teoretia Eroare Dispersia obtinuta Dispersia teoretica Eroare

1 10 0.5938157 0.5 0.09381 0.086594 0.125 0.1

2 50 0.5135461 0.5 0.01354 0.121538 0.125 0.04

3 200 0.5132767 0.5 0.01327 0.124688 0.125 0.001

4 300 0.5051822 0.5 0.005 0.124956 0.125 0.001

5. Codul sursa

Programul a fost scris in C# folosind ca IDE Visual Studio Express 2010. Pentru rulare este necesar sa aveti instalat .NET.Codul sursa pentru simularea variabilei Beta(a,b) unde using System;using System.IO;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Windows.Forms.DataVisualization.Charting;

namespace Beta{ public partial class Form1 : Form { public Form1() { InitializeComponent();

}

private void button1_Click(object sender, EventArgs e) { Output.Text = ""; //initializez variabilele int i = 0; double alfa = 0, beta = 0, U1=0, U2=0, V = 0, T=0; Random rand = new Random(); double[] rezultat; try { //verific numarul de valori de calculat si dau lungimea vectorului ce le va contine if (nr_valori.Text != "") { rezultat = new double[Convert.ToInt64(nr_valori.Text)]; } else { nr_valori.Text = "1"; rezultat = new double[Convert.ToInt64(nr_valori.Text)]; Output.Text = "Casuta nr de variabile este goala, se va calcula o singura variabila!"; }

if (input.Text!="") alfa = Convert.ToDouble(input.Text); // atribui lui alfa valoarea din form if (input1.Text!="") beta = Convert.ToDouble(input1.Text);//atribui lui beta valoarea din form if ((alfa > 0) && (alfa < 1) && (beta > 1))// verific ca 0 0 ) && (beta < 1 ))// alfa si beta verific sa fie intre 0 si 1 { do { U1 = rand.NextDouble(); U2 = rand.NextDouble(); V = Math.Pow(U1,(1/alfa)); //generez U1 uniform pe 0 - 1 cu V=U1^(1/alfa) T = Math.Pow(U2,(1/beta)); //generez U2 uniform pe 0 - 1 cu T=U2^(1/beta) U1 = rand.NextDouble(); U2 = rand.NextDouble();//generez alt U uniform pe 0 - 1 if (V+T