Содержание
Постановка задачи.. 2
Уравнения состояния.. 2
Сценарий и функции.. 2
Результаты моделирования.. 5
Постановка задачи
Схема содержит 4 эл-та задержки, 2 входа и 1 выход.
Уравнения состояния
Система обозначений
V(t) – входной вектор
X(t) – выходной вектор
U(t) – вход
Y(t) – выход
Сценарий и функции
Сценарий:
%Шаблон сценария.
while 1
upr = menu(‘Ваш выбор’,’Ввод данных’,’Вычисления’,’Просмотр’,’Выход’);
if upr == 1
disp(‘Вводи’)
A =input(‘Введите матрицу коэффициетов A = ‘)
B =input(‘Введите матрицу входов B = ‘)
C =input(‘Введите матрицу выходов С = ‘)
X0 =input(‘Введите начальное условие X0 = ‘)
k =input(‘Введите число шагов = ‘)
u=input(‘Введите входной сигнал U(t) : ‘)
elseif upr == 2
disp(‘Считаю’)
D = zeros(size(C,1),size(B,2));
[r1,l]=cpektr(A);
[q,sms] = uprav(A,B);
[r,txt] =nabl(A,C);
U=ones(size(B,2),1)*u
[Y,X] = DLSIM(A,B,C,D,U,X0);
pause(1)
disp(‘Готово’)
pause(1)
elseif upr == 3
disp(‘Ваши результаты’)
ctepen(r1,l)
disp(sms)
disp(txt)
%paint(U,X,Y)
elseif upr == 4
disp(‘Конец работы’)
break;
end
end
Спектр
function [y,l]=cpektr(A)
%
l=eig(A);
L=max(abs(l));
y=1-L;
end
Степень
function ctepen(r,l)
if(r<0)
strcat(‘Система неуст., т.к. степень устойчивости =’,sprintf(‘%3.d’,r) )
elseif(r==0)
strcat(‘Система нейтр., т.к.степень устойчивости =’ ,sprintf(‘%3.d’,r) )
elseif(r<1)
strcat(‘Система устойч., т.к. степень устойчивости =’,sprintf(‘%3.d’,r) )
end
plot(l,’*’)
grid
Наблюдение
function [r,txt]=nabl(A,C)
if size(A,1) ~= size(A,2)
txt = ‘Матрица А не квадратная’;
elseif size(A,1) ~= size(C,2)
txt = ‘Некорректные размеры матриц’;
else
r=uprav(A’,C’);
m=size(A,1);
if r==m
txt=strcat(‘Система наблюдаема, т.к. ранг равен: ‘, num2str(r), ‘ и равен количеству состояний системы:’, num2str(m));
else
txt=strcat(‘Система ненаблюдаема, т.к. ранг равен: ‘, num2str(r), ‘ и неравен количеству состояний системы:’, num2str(m));
end
end
end
функция графического вывода
function paint(x1,x2,x3)
%function paint(t1, x1, t2, x2, t3, x3, t4, x4)
% функция графического вывода
% все x столбцовые матрицы
switch nargin
case 1
plot(x1);
ylabel(‘U’);
grid;
case 2
subplot(2, 1, 1);
plot(x1);
ylabel(‘U’);
grid;
subplot(2, 1, 2);
plot(x2);
ylabel(‘X’);
grid;
case 3
subplot(3, 1, 1);
plot(x1);
ylabel(‘U’);
grid;
subplot(3, 1, 2);
plot(x2);
ylabel(‘X’);
grid;
subplot(3, 1, 3);
plot(x3);
ylabel(‘Y’);
grid;
end;
Вычислить ранг матрицы управляемости и вывести сообщение и ранг
function [rang,sms]=uprav(A,B)
[n,m] = size(A);
if m ==n
[k,l] = size(B);
if (n ==k)
% Вычисление матрицы управляемости
C = B;
G = B;
for i = 1 : n-1
C = A*C;
G = [G,C];
end
%Вычисление ранга управляемости
rang=rank(G);
if (rang == n)
sms=sprintf(‘система управляема т.к ранг =%d’,rang);
else
sms=sprintf(‘система неуправляема’,rang);
end
else
sms = (‘Неверные входные параметры: размеры матриц А[n*n] и B[n*m] неправильны!’);
end
else
sms = (‘Неверные входные параметры: размеры матрицы А[n*n] неправильны!’);
end
Входные параметры:
function inputsig=vvod(k)
t=1:k;
u=input(‘Введите входной сигнал U(t) : ‘);
Результаты моделирования
Система устойчива
Система управляема
Система не наблюдаема