Информационная безопасность - последнее - - первая лабораторная - матлаб
Primary tabs
Forums:
Внимание - в ходе решения данной задачи (был 8-ой вариант) - самым сложным оказалось решение проблемы построения 3-ёхмерного графика пользовательской функции, делается это так
clear(); figure [X,Y] = meshgrid(1:1:32, 0:0.01:1); % values of x and y at which we want to evaluate for x = 1:101 for y = 1:32 Z(x,y) = ppscq(X(x,y), Y(x,y)); end end surf(X,Y,Z); hold on; figure [X,Y] = meshgrid(1:1:32, 0:0.01:1); % values of x and y at which we want to evaluate for x = 1:101 for y = 1:32 % Z(x,y) = ppscq(X(x,y), Y(x,y)); Z(x,y) = dsp(X(x,y), Y(x,y)); end end surf(X,Y,Z);
обёртка предпериода:
function R = ppscq(S, n) % format long disp ('N = :') disp (n); disp ('R = :') disp (S); for k = 1:1:30 % disp (k); disp ' ======='; % disp (S); S = (1/pi)*acos(cos(10^n)*S); U(k) = S; end; % U = [1,2,3,4,7,8,5,5,5,5]; % U = [ 0.6528 , 0.6087 , 0.6011 , 0.5998 , 0.5996 , 0.5996, 0.5996]; %disp('Сведения о последовательности:'); % disp(ndims(U)) % disp(size(U)) % disp('ВЫводим последовательность'); % disp(U); disp ('математическое ожидание:') disp (mean(U)); disp ('дисперсия:') disp (std(U)); R2 = preperiod(U); R = R2;
предпериод:
% предположим ,что у нас есть некоторая ограниченная математическая % последовательность, в начале которой идут изменяющиеся числа (различные), % а в конце повторяется одно и тоже число. - данная функция определит % длинну предпериода такой последовательности % (то есть число первых неповторяющихся значений) function R = preperiod(U) U2 = fliplr(U); % ивертируем последовательность % disp('ВЫводим инверсию ='); % disp(U2); len = length(U2); i = 0; % disp('======U2(1) = '); disp(U2(1)); for x=1:len % disp(x); % disp('---U2(x) = '); % disp(U2(x)); % disp('-U2(1) = '); % disp(U2(1)); %if (isequal(U2(x),U2(1))) % здесь мы используем "округление" при сравнении if (isequal( round(U2(x)*10000),round(U2(1)*10000))) % disp('увеличиваем i'); i = i + 1; % наращиваем счётчик повторов else % disp ('значения НЕ равны') break end % disp('--------------'); end R1 = len - i + 1; % disp ('Предпериод = '); % disp (R1); R = R1; end
дисперсия:
function R = dsp(S, n) for k = 1:1:30 % disp (k); disp ' ======='; % disp (S); S = (1/pi)*acos(cos(10^n)*S); U(k) = S; end; R = std(U);
- Log in to post comments
- 2164 reads