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
- 1926 reads