1-ая лабораторная по инфэ безопасности -самое свежее
Primary tabs
Forums:
Итак -
рабочий скрипт:
clear();
figure
[X,Y] = meshgrid(0:0.1:1,1:15); % values of x and y at which we want to evaluate
for x = 1:15
for y = 1:11
% Z(x,y) = ppscq(X(x,y), Y(x,y));
Z(x,y) = ppscq(X(x,y), Y(x,y));
end
end
surf(X,Y,Z);
обёртка для предпериода(здесь мы генерируем последовательности ,чтобы затем определить их предпериод):
function R = ppscq(S, n)
U = [ 0.6528 , 0.6087 , 0.6011 , 0.5998 , 0.5996 , 0.5996, 0.5996];
for k = 1:1:10
% 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);
R2 = preperiod(U);
R = R2;
Ну и сама функция нахождения предпериода(где длина периода = 1):
% предположим ,что у нас есть некоторая ограниченная математическая
% последовательность, в начале которой идут изменяющиеся числа (различные),
% а в конце повторяется одно и тоже число. - данная функция определит
% длинну предпериода такой последовательности
% (то есть число первых неповторяющихся значений)
function R = preperiod(U)
U2 = fliplr(U); % ивертируем последовательность
disp('ВЫводим инверсию =');
disp(U2);
len = length(U2);
f = U2(1);
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),f))
disp('увеличиваем i');
i = i + 1; % наращиваем счётчик повторов
else
disp ('значения НЕ равны')
break
end
disp('--------------');
end
R1 = len - i +1 ;
disp ('Предпериод = ');
disp (R1);
R = R1;
end
- Log in to post comments
- 2046 reads