Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.99 KB | None | 0 0
  1. clear all;
  2. close all;
  3.  
  4.  
  5. %-------------------*** LAB 1: Generatory losowe ***-------------------
  6.  
  7. %parametry badań
  8. iteracje = 10000;
  9.  
  10. %---------------------- SINUS + SAWTOOTH ----------------------
  11. wyniki_sin = [0:(iteracje-1)];
  12. wyniki_saw = [0:(iteracje-1)];
  13. zakres_saw = [0:0.001:1];
  14. x0 = rand();
  15. x1 = rand();
  16.  
  17. x2 = rand();
  18. x3 = rand();
  19.  
  20. for i=1:(iteracje)+1;
  21.  
  22. %sin
  23. y0 = (sin(12*pi*x0)+1)/2;
  24. wyniki_sin(i) = y0;
  25. x0 = y0;
  26.  
  27. %sawtooth
  28. y1 = (sawtooth(100*x1)+1)/2;
  29. wyniki_saw(i) = y1;
  30. x1 = y1;
  31.  
  32. end
  33.  
  34. for i=1:(iteracje)+1;
  35.  
  36. %sawtooth generator numer dwa
  37. y1 = (sawtooth(100*x2)+1)/2;
  38. wyniki_saw1(i) = y1;
  39. x2 = y1;
  40.  
  41. end
  42.  
  43. %---------------------- FIBONACCI ----------------------
  44.  
  45. % f1 = rand();
  46. % f2 = 0;
  47. %
  48. % for i=1:(iteracje); %generowanie wynikow
  49. %
  50. % fx = (f1 + f2);
  51. % f2 = mod(fx,1);
  52. % wyniki_fib(i) = f2;
  53. % fx = f2;
  54. %
  55. % end
  56.  
  57. % %---------------------- Rysowanie wykresów ----------------------
  58. % subplot(3,1,1);
  59. % hist(wyniki_sin,iteracje);
  60. % title('sinus')
  61. %
  62. % subplot(3,1,2);
  63. % hist(wyniki_saw,iteracje);
  64. % title('piłoksztaltny')
  65. %
  66. % subplot(3,1,3);
  67. % hist(wyniki_fib,iteracje);
  68. % title('Fibbonaci');
  69. %
  70. % median(wyniki_sin)
  71. % median(wyniki_saw)
  72. % median(wyniki_fib)
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. %-------------------*** LAB 2: Rozkłady ***-------------------
  82.  
  83. % parametry badań
  84. zakres_trojkatny = [-1:2/iteracje:1];
  85. zakres_dystrybuanta = [0:1/iteracje:1];
  86. odwrotna_dystrybuanta = [0:1/iteracje:1];
  87.  
  88. %---------------------- Trójkątny ----------------------
  89.  
  90. % t1=0:0.0001:0.5;
  91. % t2=0.5:0.0001:1;
  92. %
  93. %
  94. % a = 1;
  95. % x = [-1:2/i:1];
  96. %
  97. % for i=1:(iteracje+1); %tworzenie funkcji gestosci
  98. %
  99. % if i <= iteracje/2;
  100. % wykres_trojkantny(i) = ((1 + x(i)*2)+1)/2;
  101. % dystrybuanta(i) = (x(i)^2/2)+x(i)+1/2;
  102. %
  103. % end
  104. %
  105. % if i > iteracje/2;
  106. % wykres_trojkantny(i) = ((1 - x(i)*2)+1)/2;
  107. % dystrybuanta(i) = -(x(i)^2/2)+x(i)+1/2;
  108. % end
  109. %
  110. % end
  111. %
  112. %
  113. % for j=1:i
  114. % if wyniki_saw(j)<=0.5
  115. % odwrotna_dystrybuanta_trojkatny(j)=sqrt(2*wyniki_saw(j))-1;
  116. % else
  117. % odwrotna_dystrybuanta_trojkatny(j)=-sqrt(2 - 2*wyniki_saw(j))+1;
  118. % end
  119. % end
  120. %
  121. % figure(14)
  122. % hold on;
  123. % grid on;
  124. % [y_odw,x_odw] = ecdf(odwrotna_dystrybuanta_trojkatny);
  125. % plot(x_odw,y_odw)
  126. % title('Dystrybuanta empiryczna trojkatnego');
  127. %
  128. % [h,p,k,c] = kstest(dystrybuanta,[y_odw x_odw],0.05,1)
  129. %
  130. %
  131. % hold on;
  132. % plot(zakres_trojkatny,wykres_trojkantny);
  133. % plot(zakres_trojkatny,dystrybuanta);
  134.  
  135. %---------------------- wykładniczy ----------------------
  136. % lambda = 5;
  137. %
  138. %
  139. % for i=1:(iteracje+1);
  140. % dystrybuanta(i) = 1-exp(-lambda*zakres_dystrybuanta(i));
  141. % odwrotna_dystrybuanta(i) = (-log(1-wyniki_saw(i))/lambda);
  142. % end
  143.  
  144. %---------------------- logistyczny ----------------------
  145. % es = 0.1;
  146. % micro = 0.5;
  147. %
  148. % for i=1:(iteracje+1);
  149. % dystrybuanta(i) = 1/(exp((-zakres_dystrybuanta(i)+micro)/es)+1);
  150. % odwrotna_dystrybuanta(i) = (micro - es * log((1/wyniki_saw(i))-1));
  151. % end
  152.  
  153. %---------------------- Cauchy'iego ----------------------
  154. % a = 1/2;
  155. % b = 0.05;
  156. %
  157. % for i=1:(iteracje+1);
  158. % dystrybuanta(i) = (((atan((zakres_dystrybuanta(i)-a)/b))/pi)+1/2);
  159. % odwrotna_dystrybuanta(i) = a + b * (tan((1/2) * pi * (2* wyniki_saw(i) - 1)));
  160. % end
  161.  
  162. %---------------------- Laplace'a ----------------------
  163. % beta = 0.1;
  164. % micro = 0;
  165. %
  166. %
  167. % for i=1:(iteracje+1);
  168. %
  169. % if zakres_dystrybuanta(i) >= micro
  170. % dystrybuanta(i) = 1 - 1/2 * exp((-zakres_dystrybuanta(i)+micro)/beta);
  171. % else
  172. % dystrybuanta(i) = 1/2 * exp((zakres_dystrybuanta(i)-micro)/beta);
  173. % end
  174. %
  175. % end
  176. %
  177. % for j = 1:iteracje
  178. %
  179. % odwrotna_dystrybuanta(j) = -beta*log(rand(1,1))+micro;
  180. % p = rand(1);
  181. % if (p<0.5)
  182. % odwrotna_dystrybuanta(j) = - odwrotna_dystrybuanta(j);
  183. % end
  184. % end
  185.  
  186. %---------------------- Rysowanie wykresów ----------------------
  187.  
  188. % figure(3)
  189. % hist(odwrotna_dystrybuanta,iteracje);
  190. % title('Funkcja gęstości');
  191. %
  192. % figure(4)
  193. % hold on;
  194. %
  195. % plot(zakres_dystrybuanta,dystrybuanta);
  196. % title('Dystrybuanta');
  197. %
  198. % [y_dystry,x_dystry] = ecdf(odwrotna_dystrybuanta)
  199. % plot(x_dystry,y_dystry);
  200. % title('Dystrybuanta empiryczna oraz analityczna');
  201. % legend();
  202. %
  203. % [h,p,k,c] = kstest(dystrybuanta,[y_dystry x_dystry],0.05,1)
  204.  
  205. %-------------------*** LAB 3: Metoda odrzucania ***-------------------
  206.  
  207. %--------------------------------1A--------------------------------
  208. c = 3;
  209. j = 1;
  210. g = wyniki_saw * 30;
  211. licznik = 1;
  212. prog_akceptacji = [1,2,3];
  213. iteracje = 10000;
  214. gestosc_lamanej = [0:1/iteracje:1]; %y
  215. zakres_lamanej = [0:30/iteracje:30]; %x
  216.  
  217.  
  218. %Funkcja gestosci
  219. for i=1:iteracje
  220.  
  221. if i <= ((iteracje)*1/3)
  222. gestosc_lamanej(i) = 3;
  223. end
  224.  
  225. if i > ((iteracje)*1/3) && i <= ((iteracje)*2/3) ;
  226. gestosc_lamanej(i) = 1;
  227. end
  228.  
  229. if i >= ((iteracje)*2/3);
  230. gestosc_lamanej(i) = 2;
  231. end
  232. end
  233.  
  234. dystrybuanta = cumtrapz(zakres_lamanej,gestosc_lamanej/60); %calkowanie
  235.  
  236.  
  237. %Dystrybuanta empiryczna
  238. for i=1:(iteracje+1)
  239.  
  240. if g(i) >= 0 && g(i) < 10 && c*wyniki_saw1(i) <= prog_akceptacji(3);
  241. fx(j) = g(i);
  242. j = j +1;
  243. end
  244.  
  245. if g(i) >= 10 && g(i) < 20 && c*wyniki_saw1(i) <= prog_akceptacji(1);
  246. fx(j) = g(i);
  247. j = j +1;
  248. end
  249.  
  250. if g(i) >= 20 && g(i) < 30 && c*wyniki_saw1(i) <= prog_akceptacji(2);
  251. fx(j) = g(i);
  252. j = j +1;
  253. end
  254.  
  255. end
  256.  
  257.  
  258. %---------------------- Rysowanie wykresów ----------------------
  259.  
  260. % plot(zakres_lamanej,dystrybuanta);
  261. % title('Zmienna o rozkladzie funkcji lamanej')
  262. % hold on;
  263. % [y_dystry,x_dystry] = ecdf(fx);
  264. % hist(fx,30);
  265. % [h,p,k,c] = kstest(dystrybuanta,[y_dystry x_dystry],0.05,1)
  266. %
  267. % plot(zakres_lamanej,gestosc_lamanej);
  268.  
  269. % --------------------------------1B--------------------------------
  270. a = 1;
  271. c = sqrt(exp(1)/2*pi);
  272. j = 1;
  273. g = exp(-wyniki_saw);
  274. licznik = 1;
  275. prog_akceptacji = sqrt(-2*log(wyniki_saw))+1;
  276. iteracje = 10000;
  277. gestosc_normalnego = [0:1/iteracje:1];
  278. zakres_normalnego = [-6:12/iteracje:6];
  279.  
  280. % %Dystrybuanta analityczna
  281.  
  282. for i=1:iteracje
  283.  
  284. gestosc_normalnego(i) = exp(( -(zakres_normalnego(i) - 0)^2)/(2 * 1^2))/(sqrt(2 * pi) * 1);
  285.  
  286. end
  287.  
  288.  
  289. dystrybuanta = cumtrapz(zakres_normalnego,gestosc_normalnego);
  290.  
  291.  
  292. %Dystrybuanta empiryczna
  293. for i=1:(iteracje+1);
  294.  
  295. if g(i) * c*wyniki_saw1(i) <= prog_akceptacji;
  296.  
  297. if rand(1,1) > 0.5
  298. fx(j) = -1/a * log(wyniki_saw(i));
  299. else
  300. fx(j) = -(-1/a * log(wyniki_saw(i)));
  301. end
  302.  
  303.  
  304. j = j +1;
  305. end
  306.  
  307.  
  308. end
  309.  
  310. figure(14);
  311. hist(fx,30)
  312. figure(15);
  313. plot(zakres_normalnego,gestosc_normalnego)
  314. [y_dystry,x_dystry] = ecdf(fx);
  315.  
  316. % figure(13);
  317. % hold on;
  318. %
  319. % plot(zakres_normalnego,dystrybuanta);
  320. % plot(x_dystry,y_dystry);
  321. %
  322. % [h,p,k,c] = kstest(dystrybuanta,[y_dystry x_dystry],0.05,1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement