Функция CARE в Control System Toolbox решает матричное уравнение Риккати:
A'X + XA - XB'BX + Q = 0
Я хотел бы решить матричное дифференциальное уравнение Риккати:
dX/dt = A'X + XA - XB'BX + Q
ПРИМЕЧАНИЕ.
Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Матричное дифференциальное уравнение Риккати:
dX/dt = A'X + XA - XBB'X + Q
можно решить с помощью функций набора ODE.
Предположим, что ваша зависимая матрица «X» равна «n» на «n», и вам известны матрицы «n» на «n» «A», «B» и «Q». Следующий метод решит матричное дифференциальное уравнение Риккати. Сохраните следующее как файл MATLAB где-нибудь в пути MATLAB.
function dXdt = mRiccati(t, X, A, B, Q) X = reshape(X, size(A)); %Convert from "n^2"-by-1 to "n"-by-"n" dXdt = A.'*X + X*A - X*B*B.'*X + Q; %Determine derivative dXdt = dXdt(:); %Convert from "n"-by-"n" to "n^2"-by-1
Затем вы можете использовать функцию ODE45 для решения этой проблемы:
[T X] = ode45(@(t,X)mRiccati(t, X, A, B, Q), [0 10], X0)
Например, используя образцы данных:
A = [1 1; 2 1]; B = [1; 1]; Q = [2 1; 1 1]; X0 = [1; 1; 1; 1];
Вы можете использовать следующую команду для решения системы дифференциальных уравнений:
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ