Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.29 KB | None | 0 0
  1. function main()
  2.     data = importdata('/Users/garanya/Desktop/mathstat/data.txt');
  3.     data = sort(data);
  4.    
  5.     n = length(data);
  6.     sm = sum(data);
  7.    
  8.     M = min(data); %минимум
  9.     MX = max(data); %максимум
  10.     R = MX - M; %размах
  11.     U = sm / n; %мат ожидание
  12.     S = sum((data - U).*(data - U)) / (n-1);  %оценка дисперсии
  13.    
  14.     fprintf('Min: %.6f   |   Max: %.6f\n', M, MX);
  15.     fprintf('R: %.6f\n', R);
  16.     fprintf('U: %.6f\n', U);
  17.     fprintf('S^2: %.6f\n', S);
  18.    
  19.     m = floor(log2(n)) + 2; %группировка в m интервалов
  20.     delta = R / m; %шаг интервала
  21.     gr = zeros(m, 2);
  22.     for j = 1:m
  23.         gr(j,1) = data(1)+delta*j;  %граница интервала
  24.     end
  25.     j = 1;
  26.     b = data(1)+delta; %первая граница
  27.     for i = 1:n
  28.         if data(i) >= b %если элемент больше границы интервала или граница вышла за пределы (больше макс элемента)
  29.             b = b + delta; %двигаем границу
  30.             j = j + 1; %счетчик для следующего интервала
  31.             continue;
  32.         end
  33.         gr(j, 2) = gr(j, 2) + 1; %инкремент счетчика интервала
  34.     end
  35.     dY1 = data(1);
  36.     %dY2 = data(n) + delta;
  37.     figure(1);
  38.     gt = zeros(m+1);
  39.     count = 1;
  40.     while dY1 <= MX
  41.         for i = 1:n
  42.             if data(i) <= dY1 + delta && data(i) >= dY1
  43.                 gt(count) = gt(count) + 1;
  44.             end
  45.         end
  46.         gt(count) = gt(count)/(n*delta);
  47.         count = count + 1;
  48.         dY1 = dY1 + delta;
  49.     end
  50.     gt(m+1) = 0;
  51.     F = normpdf([data(1) - delta - delta, data(1) - delta, data, data(n) + delta, data(n) + delta + delta], U, S); %функция плотности нормальной величины
  52.     hold on;
  53.     dY1 = data(1);
  54.     count = 1;
  55.     plot([data(1) - delta - delta, data(1) - delta, data, data(n) + delta, data(n) + delta + delta], F,'r'), grid; %отображегние функции плотности
  56.     while dY1 < MX
  57.         plot([dY1, dY1 + delta], [gt(count), gt(count)], 'b');
  58.         plot([dY1+delta, dY1+delta], [gt(count), gt(count+1)], 'b');
  59.         count = count + 1;
  60.         dY1 = dY1 + delta;
  61.     end
  62.     plot([dY1, dY1 + delta], [gt(m+1), gt(m+1)], 'b');
  63.     dY1 = data(1);
  64.     plot([dY1-delta-delta, dY1], [0, 0], 'b');
  65.     plot([dY1, dY1], [0, gt(1)], 'b');
  66.     hold off;
  67.    
  68.     figure(2);  
  69.     E = zeros(n+1);
  70.     for i = 1:n
  71.         for j = 1:i
  72.             if data(j) < data(i)
  73.                 E(i) = E(i) + 1; %сколько элементов меньше выбранного (data(i))
  74.             end
  75.         end
  76.         E(i) = E(i) / n; %значение функции распределения
  77.     end
  78.     dX1 = data(n) + delta;
  79.  
  80.     E(n) = 1;
  81.     E(n+1) = 1;
  82.     F = normcdf([data, dX1], U, S); %функция распределения нормальной величины
  83.     hold on;
  84.     for i = 1:n-1
  85.         plot([data(i), data(i+1)], [E(i), E(i)], 'b');
  86.         plot([data(i+1), data(i+1)], [E(i), E(i+1)], 'b');
  87.     end
  88.     plot([data(n), dX1], [E(n), E(n+1)], 'b');
  89.     plot([data, dX1], F, 'r'), grid;
  90.     hold off;
  91. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement