Advertisement
sashachca

Untitled

Mar 5th, 2018
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 5.69 KB | None | 0 0
  1.  
  2. function task1
  3.   m = len = num = 0;
  4.   k = denum = 1;
  5.   N = 200; % по условию
  6.   n = w = x = xx = [];
  7.   xx = sort(oneOfArrays(1)); % массив xx[] - это отсортированная выборка, оттого, какая цифра стоит в функции oneOfArrays() зависит, какое задание мы делаем по счёту
  8.  
  9.   x(1) = xx(1);
  10.   for i = 2:200
  11.     if xx(i) == xx(i-1)
  12.       m = m + 1;
  13.     else
  14.       k = k+1;
  15.       m = 0;
  16.       x = [x, xx(i)];
  17.     endif
  18.     n(k) = m + 1;
  19.   endfor
  20.   w = n/N;
  21.  
  22.   if sum(w) == 1
  23.     printf('summa w = 1\n\n');
  24.   else
  25.     printf('!!! summa w != 1\n\n');
  26.   endif
  27.  
  28.   len = length(n);
  29.  
  30.   figure;
  31.   plot(x, w); %полигон относительных частот
  32.   printf('Stat series:\n\n'); disp([x; n; w]); printf('\n');
  33.   % Массивы x[], n[] и w[] представляют собой статистический ряд, где:
  34.   % в массиве x[] хранятся все различные(!) занчения, встреченные в выборке xx[];
  35.   % в массиве n[] хранится число этих значений, то есть частоты;
  36.   % в массиве w[] хранятся относительные частоты, то есть частоты, деленные на общее количество элементов в выборке xx[];
  37.  
  38.   X = 0; % выборочное среднее
  39.   X = sampleMoment(x, w, 1, X)
  40.  
  41.   D = 0; % выборочная дисперсия
  42.   D = sampleMoment(x, w, 2, X)
  43.  
  44.   sigma = 0; %выборочное среднее квадратическое отклонение
  45.   sigma = sqrt(D)
  46.  
  47.   M0 = 0; %выборочная мода
  48.   M0 = sampleMode(x, n, len)
  49.  
  50.   Me = 0; %выборочная медиана
  51.   Me = sampleMedian(x, w, len)
  52.    
  53.   gamma1 = gamma2 = 0; % выборочные коэффициенты
  54.   if sigma ~= 0
  55.     num = sampleMoment(x, w, 3, X);
  56.     denum = sigma^3;
  57.     gamma1 = num/denum % выборочный коэффициент асимметрии
  58.    
  59.     num = sampleMoment(x, w, 4, X);
  60.     denum = sigma^4;
  61.     gamma2 = num/denum - 3 % выборочный коэффициент эксцесса
  62.   endif
  63.  
  64.   figure;
  65.   F = 0;
  66.   x = [x, x(end)+1];
  67.   x = [x, x(end)+1];
  68.   interval = -1:0.1:0;
  69.   for i = 1:len+1
  70.     line(interval, F, "linewidth", 1.75);
  71.     interval = x(i):0.1:x(i+1);
  72.     F = edf(x(i), x, w, len);
  73.   endfor
  74.  
  75.  
  76. endfunction
  77.  
  78.  
  79. function Mu0 = sampleMoment(x, w, k, X) % выборочный (если X != 0, то еще и центральный) момент k-ого порядка
  80.   Mu0 = 0;
  81.  
  82.   Mu0 = sum(((x.-X).^k).*w);
  83.  
  84. endfunction
  85.  
  86.  
  87. function M0 = sampleMode(x, n, len) % выборочная мода
  88.   M0 = nmax = imax = j = 0;
  89.   nmax = max(n);
  90.  
  91.   for i = 1:len
  92.     if n(i) == nmax
  93.       imax = i;
  94.       if (i ~= len) && (n(i+1) == n(i)) % тут
  95.         j = i; % я
  96.       endif % хз
  97.     endif
  98.   endfor
  99.   if j == 0
  100.     M0 = x(imax);
  101.   else
  102.     M0 = 1/2*(x(imax) + x(j)); % и тут, соответсвенно, тоже хз
  103.   endif
  104.  
  105. endfunction
  106.  
  107.  
  108. function Me = sampleMedian(x, w, len) %выборочная медиана
  109.   Me = EDF = EDF1 = 0;
  110.  
  111.   for i = 2:len-1
  112.     EDF1 = edf(x(i-1), x, w, len);
  113.     EDF = edf(x(i), x, w, len);
  114.    
  115.     if (EDF1 < 0.5) && (0.5 < EDF)
  116.       Me = x(i);
  117.       break
  118.     elseif EDF == 0.5
  119.       Me = 0.5*(x(i) + x(i+1));
  120.       break
  121.     endif
  122.    
  123.   endfor
  124.    
  125. endfunction
  126.  
  127.  
  128. function F = edf(y, x, w, len) % emperical distribution function (эмпирическая функция распределения)
  129.   F = 0;
  130.  
  131.   for i = 1:len
  132.     if x(i) <= y
  133.       F += w(i);
  134.     endif
  135.   endfor
  136.  
  137. endfunction
  138.  
  139.  
  140.  
  141.  
  142. function arr = oneOfArrays(a)
  143.   arr = [];
  144.  
  145.   if a == 1
  146.     arr1 = [ 5, 5, 2, 5, 5, 3, 5, 4, 4, 9, 5, 3, 3, 5, 7, 5, 3, 4, 7, 5, 5, 5, 5, 5, 3, 3, 5, 5, 7, 6, 4, 4, 7, 4, 4, 3, 3, 4, 3, 3, 3, 4, 6, 2, 5, 6, 4, 3, 6, 3, 3, 5, 2, 4, 2, 5, 3, 5, 3, 4, 6, 3, 4, 8, 5, 5, 5, 5, 6, 6, 4, 7, 4, 4, 5, 6, 7, 3, 7, 4, 5, 5, 5, 4, 3, 4, 6, 5, 4, 5, 3, 4, 4, 6, 3, 7, 10, 4, 6, 5,5, 3, 0, 4, 0, 6, 2, 5, 4, 7, 4, 4, 4, 2, 5, 5, 6, 6, 7, 3, 5, 7, 6, 5, 4, 7, 4, 7, 2, 9, 3, 4, 4, 8, 5, 6, 4, 4, 5, 6, 3, 5, 1, 6, 8, 4, 7, 4, 8, 1, 5, 0, 5, 5, 5, 7, 6, 3, 4, 3, 6, 3, 4, 9, 1, 3, 3, 8, 5, 3, 4, 4, 7, 7, 5, 6, 4, 7, 5, 3, 2, 5, 5, 4, 2, 3, 5, 2, 1, 8, 6, 4, 3, 3, 7, 6, 2, 6, 5, 6 ];
  147.  
  148.   elseif a == 2
  149.     arr2 = [ 0, 0, 10, 2, 5, 0, 6, 5, 5, 7, 5, 1, 2, 1, 3, 7, 6, 2, 0, 9, 2, 3, 6, 5, 0, 1, 9, 6, 2, 4, 4, 13, 5, 0, 0, 2, 3, 5, 2, 0, 8, 1, 0, 0, 3, 2, 2, 1,0, 0, 5, 2, 4, 10, 5, 2, 0, 13, 1, 0, 1, 0, 5, 4, 0, 14, 1, 4, 5, 1, 2, 7, 6, 4, 0, 4, 1, 0, 13, 3, 4, 4, 1, 4, 4, 0, 7, 1, 11, 0, 1, 3, 2, 3, 2, 1, 8, 1,1, 0, 0, 3, 2, 5, 4, 1, 4, 0, 15, 5, 2, 10, 4, 9, 2, 1, 4, 2, 0, 1, 3, 5, 2, 4, 3, 5, 28, 1, 1, 0, 4, 2, 2, 2, 2, 0, 3, 2, 4, 0, 3, 0, 0, 2, 3, 5, 2, 0, 0, 5, 1, 4, 6, 5, 3, 3, 7, 4, 3, 5, 2, 5, 15, 8, 0, 0, 1, 0, 20, 0, 4, 1, 1, 6, 1, 4, 2, 19, 3, 4, 1, 1, 0, 7, 2, 1, 0, 2, 4, 2, 1, 2, 10, 3, 0, 1, 1, 10, 0, 1 ];
  150.  
  151.   elseif a == 3
  152.     arr3 = [ 1, 2, 1, 1, 0, 5, 6, 0, 0, 5, 1, 0, 3, 2, 3, 4, 1, 2, 1, 2, 4, 0, 0, 0, 2, 3, 4, 1, 0, 0, 2, 5, 2, 1, 2, 1, 3, 1, 2, 0, 1, 1, 0, 1, 2, 1, 3, 0, 1, 2, 2, 1, 0, 0, 4, 3, 2, 1, 2, 2, 3, 2, 3, 0, 2, 3, 4, 3, 0, 1, 5, 1, 3, 5, 1, 0, 4, 3, 3, 2, 2, 3, 2, 1, 3, 1, 1, 2, 5, 2, 1, 2, 1, 5, 1, 1, 2, 0, 2, 2, 1, 1, 3, 3, 2, 2, 1, 3, 2, 0, 3, 3, 1, 2, 1, 1, 2, 4, 5, 1, 2, 4, 3, 1, 0, 2, 2, 4, 0, 4, 2, 0, 4, 1, 3, 4, 0, 3, 2, 0, 1, 3, 2, 1, 2, 2, 1, 1, 1, 4, 0, 1,3, 3, 2, 1, 2, 3, 3, 4, 1, 3, 0, 2, 5, 2, 4, 3, 1, 3, 1, 2, 3, 1, 5, 2, 2, 0, 3, 3, 2, 3, 0, 0, 2, 0, 2, 2, 3, 2, 3, 1, 3, 2, 4, 1, 4, 1, 0, 1 ];
  153.        
  154.   end
  155.    
  156. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement