Исправить ошибку в скрипте Матлаб. А именно в синтексе " vt = [dx (1,:) x (1,:) du (1,:) u1 du (2,:) u2];"
Сам скрипт:
clear all;
a11 = 0; % Задание начальных условий
a12 = 1;
a21 = 2;
a22 = 3;
b11 = - 1;
b12 = - 2;
b21 = - 3;
b22 = - 4;
dt = 0.02; % шаг
km = 100; % правая граница
x = zeros (2,km); % начальное обнуление Х
x (1,1) = 1; % начальные условия
x (2,1) = - 1;
A = [a11,a12; a21,a22];
I= [1,0; 0,1;];
for k=1: km %заполнение управляющих сигналов
kdt (k) = (k-1) *dt;
u1 (k) = k/200;
u2 (k) = 1;
end
for k=1: km-1
ub (1) = b11*u1 (k) + b12*u2 (k);
ub (2) = b21*u1 (k) + b22*u2 (k);
x (1,k+1) = dt*A (1,1) *x (1,k) + dt*A (1,2) *x (2,k) +x (1,k) + ub (1);
x (2,k+1) = dt*A (2,1) *x (1,k) + dt*A (2,2) *x (2,k) +x (2,k) + ub (2);
end
k = 1: 1: km;
%===========================================Метод МНК
%Формируем необходимые векторы
for k=1: km-1
dx (1,k) = (x (1,k+1) - x (1,k)) /dt;
dx (1,km) = 0;
dx (2,k) = (x (2,k+1) - x (2,k)) /dt;
dx (2,km) = 0;
du (1,k) = (u1 (k+1) - u1 (k)) /dt;
du (1,km) = 0;
du (2,k) = (u2 (k+1) - u2 (k)) /dt;
du (2,km) = 0;
end
vt = [dx (1,:) x (1,:) du (1,:) u1 du (2,:) u2];
v = vt';
F = vt*v;
b = v*x (1,:);
c1 = inv (F) *b;
% Матрица для проверки
c1 = [ (a11+a22) /a12 (a12*a21-a11*a22) /a12 b11/a12 (a22*b11-b21*a12) /a12 b12/a12 (a12*b22-b12*a22) /a12];
c1
Гарантия на работу | 1 год |
Средний балл | 4.63 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |