Информационная безопасность - последнее - - первая лабораторная - матлаб
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
- 2473 reads