1-ая лабораторная по инфэ безопасности -самое свежее

Итак -
рабочий скрипт:

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