Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- close all;
- %-------------------*** LAB 1: Generatory losowe ***-------------------
- %parametry badań
- iteracje = 10000;
- %---------------------- SINUS + SAWTOOTH ----------------------
- wyniki_sin = [0:(iteracje-1)];
- wyniki_saw = [0:(iteracje-1)];
- zakres_saw = [0:0.001:1];
- x0 = rand();
- x1 = rand();
- x2 = rand();
- x3 = rand();
- for i=1:(iteracje)+1;
- %sin
- y0 = (sin(12*pi*x0)+1)/2;
- wyniki_sin(i) = y0;
- x0 = y0;
- %sawtooth
- y1 = (sawtooth(100*x1)+1)/2;
- wyniki_saw(i) = y1;
- x1 = y1;
- end
- for i=1:(iteracje)+1;
- %sawtooth generator numer dwa
- y1 = (sawtooth(100*x2)+1)/2;
- wyniki_saw1(i) = y1;
- x2 = y1;
- end
- %---------------------- FIBONACCI ----------------------
- % f1 = rand();
- % f2 = 0;
- %
- % for i=1:(iteracje); %generowanie wynikow
- %
- % fx = (f1 + f2);
- % f2 = mod(fx,1);
- % wyniki_fib(i) = f2;
- % fx = f2;
- %
- % end
- % %---------------------- Rysowanie wykresów ----------------------
- % subplot(3,1,1);
- % hist(wyniki_sin,iteracje);
- % title('sinus')
- %
- % subplot(3,1,2);
- % hist(wyniki_saw,iteracje);
- % title('piłoksztaltny')
- %
- % subplot(3,1,3);
- % hist(wyniki_fib,iteracje);
- % title('Fibbonaci');
- %
- % median(wyniki_sin)
- % median(wyniki_saw)
- % median(wyniki_fib)
- %-------------------*** LAB 2: Rozkłady ***-------------------
- % parametry badań
- zakres_trojkatny = [-1:2/iteracje:1];
- zakres_dystrybuanta = [0:1/iteracje:1];
- odwrotna_dystrybuanta = [0:1/iteracje:1];
- %---------------------- Trójkątny ----------------------
- % t1=0:0.0001:0.5;
- % t2=0.5:0.0001:1;
- %
- %
- % a = 1;
- % x = [-1:2/i:1];
- %
- % for i=1:(iteracje+1); %tworzenie funkcji gestosci
- %
- % if i <= iteracje/2;
- % wykres_trojkantny(i) = ((1 + x(i)*2)+1)/2;
- % dystrybuanta(i) = (x(i)^2/2)+x(i)+1/2;
- %
- % end
- %
- % if i > iteracje/2;
- % wykres_trojkantny(i) = ((1 - x(i)*2)+1)/2;
- % dystrybuanta(i) = -(x(i)^2/2)+x(i)+1/2;
- % end
- %
- % end
- %
- %
- % for j=1:i
- % if wyniki_saw(j)<=0.5
- % odwrotna_dystrybuanta_trojkatny(j)=sqrt(2*wyniki_saw(j))-1;
- % else
- % odwrotna_dystrybuanta_trojkatny(j)=-sqrt(2 - 2*wyniki_saw(j))+1;
- % end
- % end
- %
- % figure(14)
- % hold on;
- % grid on;
- % [y_odw,x_odw] = ecdf(odwrotna_dystrybuanta_trojkatny);
- % plot(x_odw,y_odw)
- % title('Dystrybuanta empiryczna trojkatnego');
- %
- % [h,p,k,c] = kstest(dystrybuanta,[y_odw x_odw],0.05,1)
- %
- %
- % hold on;
- % plot(zakres_trojkatny,wykres_trojkantny);
- % plot(zakres_trojkatny,dystrybuanta);
- %---------------------- wykładniczy ----------------------
- % lambda = 5;
- %
- %
- % for i=1:(iteracje+1);
- % dystrybuanta(i) = 1-exp(-lambda*zakres_dystrybuanta(i));
- % odwrotna_dystrybuanta(i) = (-log(1-wyniki_saw(i))/lambda);
- % end
- %---------------------- logistyczny ----------------------
- % es = 0.1;
- % micro = 0.5;
- %
- % for i=1:(iteracje+1);
- % dystrybuanta(i) = 1/(exp((-zakres_dystrybuanta(i)+micro)/es)+1);
- % odwrotna_dystrybuanta(i) = (micro - es * log((1/wyniki_saw(i))-1));
- % end
- %---------------------- Cauchy'iego ----------------------
- % a = 1/2;
- % b = 0.05;
- %
- % for i=1:(iteracje+1);
- % dystrybuanta(i) = (((atan((zakres_dystrybuanta(i)-a)/b))/pi)+1/2);
- % odwrotna_dystrybuanta(i) = a + b * (tan((1/2) * pi * (2* wyniki_saw(i) - 1)));
- % end
- %---------------------- Laplace'a ----------------------
- % beta = 0.1;
- % micro = 0;
- %
- %
- % for i=1:(iteracje+1);
- %
- % if zakres_dystrybuanta(i) >= micro
- % dystrybuanta(i) = 1 - 1/2 * exp((-zakres_dystrybuanta(i)+micro)/beta);
- % else
- % dystrybuanta(i) = 1/2 * exp((zakres_dystrybuanta(i)-micro)/beta);
- % end
- %
- % end
- %
- % for j = 1:iteracje
- %
- % odwrotna_dystrybuanta(j) = -beta*log(rand(1,1))+micro;
- % p = rand(1);
- % if (p<0.5)
- % odwrotna_dystrybuanta(j) = - odwrotna_dystrybuanta(j);
- % end
- % end
- %---------------------- Rysowanie wykresów ----------------------
- % figure(3)
- % hist(odwrotna_dystrybuanta,iteracje);
- % title('Funkcja gęstości');
- %
- % figure(4)
- % hold on;
- %
- % plot(zakres_dystrybuanta,dystrybuanta);
- % title('Dystrybuanta');
- %
- % [y_dystry,x_dystry] = ecdf(odwrotna_dystrybuanta)
- % plot(x_dystry,y_dystry);
- % title('Dystrybuanta empiryczna oraz analityczna');
- % legend();
- %
- % [h,p,k,c] = kstest(dystrybuanta,[y_dystry x_dystry],0.05,1)
- %-------------------*** LAB 3: Metoda odrzucania ***-------------------
- %--------------------------------1A--------------------------------
- c = 3;
- j = 1;
- g = wyniki_saw * 30;
- licznik = 1;
- prog_akceptacji = [1,2,3];
- iteracje = 10000;
- gestosc_lamanej = [0:1/iteracje:1]; %y
- zakres_lamanej = [0:30/iteracje:30]; %x
- %Funkcja gestosci
- for i=1:iteracje
- if i <= ((iteracje)*1/3)
- gestosc_lamanej(i) = 3;
- end
- if i > ((iteracje)*1/3) && i <= ((iteracje)*2/3) ;
- gestosc_lamanej(i) = 1;
- end
- if i >= ((iteracje)*2/3);
- gestosc_lamanej(i) = 2;
- end
- end
- dystrybuanta = cumtrapz(zakres_lamanej,gestosc_lamanej/60); %calkowanie
- %Dystrybuanta empiryczna
- for i=1:(iteracje+1)
- if g(i) >= 0 && g(i) < 10 && c*wyniki_saw1(i) <= prog_akceptacji(3);
- fx(j) = g(i);
- j = j +1;
- end
- if g(i) >= 10 && g(i) < 20 && c*wyniki_saw1(i) <= prog_akceptacji(1);
- fx(j) = g(i);
- j = j +1;
- end
- if g(i) >= 20 && g(i) < 30 && c*wyniki_saw1(i) <= prog_akceptacji(2);
- fx(j) = g(i);
- j = j +1;
- end
- end
- %---------------------- Rysowanie wykresów ----------------------
- % plot(zakres_lamanej,dystrybuanta);
- % title('Zmienna o rozkladzie funkcji lamanej')
- % hold on;
- % [y_dystry,x_dystry] = ecdf(fx);
- % hist(fx,30);
- % [h,p,k,c] = kstest(dystrybuanta,[y_dystry x_dystry],0.05,1)
- %
- % plot(zakres_lamanej,gestosc_lamanej);
- % --------------------------------1B--------------------------------
- a = 1;
- c = sqrt(exp(1)/2*pi);
- j = 1;
- g = exp(-wyniki_saw);
- licznik = 1;
- prog_akceptacji = sqrt(-2*log(wyniki_saw))+1;
- iteracje = 10000;
- gestosc_normalnego = [0:1/iteracje:1];
- zakres_normalnego = [-6:12/iteracje:6];
- % %Dystrybuanta analityczna
- for i=1:iteracje
- gestosc_normalnego(i) = exp(( -(zakres_normalnego(i) - 0)^2)/(2 * 1^2))/(sqrt(2 * pi) * 1);
- end
- dystrybuanta = cumtrapz(zakres_normalnego,gestosc_normalnego);
- %Dystrybuanta empiryczna
- for i=1:(iteracje+1);
- if g(i) * c*wyniki_saw1(i) <= prog_akceptacji;
- if rand(1,1) > 0.5
- fx(j) = -1/a * log(wyniki_saw(i));
- else
- fx(j) = -(-1/a * log(wyniki_saw(i)));
- end
- j = j +1;
- end
- end
- figure(14);
- hist(fx,30)
- figure(15);
- plot(zakres_normalnego,gestosc_normalnego)
- [y_dystry,x_dystry] = ecdf(fx);
- % figure(13);
- % hold on;
- %
- % plot(zakres_normalnego,dystrybuanta);
- % plot(x_dystry,y_dystry);
- %
- % [h,p,k,c] = kstest(dystrybuanta,[y_dystry x_dystry],0.05,1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement