Решение системы линейных уравнений
Моя цель состоит в том, чтобы решить систему уравнений, известную как уравнение Ляпунова, которая находит х в следующем уравнении:
A*X + X*transpose(A) +Q = 0
плюс еще одно линейное ограничение, которое X*v = 0
где все матрицы A, X,Q являются n на n матриц, а v является вектором с длиной n.
Как я могу найти такой X в Matlab?
1 ответ
Решение
Решить уравнения Ляпунова в Matlab очень легко. Как непрерывное, так и дискретное уравнение Ляпунова имеют встроенную функцию:
Непрерывное уравнение Ляпунова:
lyap
( см. документацию Matlab здесь)Дискретное уравнение Ляпунова:
dlyap
( см. документацию Matlab здесь)
Дополнительное примечание: если ссылки не будут работать или вы хотите быстро проверить документацию по функции Matlab в автономном режиме, каждая встроенная функция Matlab имеет краткую страницу справки, доступную для help NameOfTheFunction
, Кроме того, расширенную справочную страницу, также отображаемую в Интернете, с примерами можно также получить в автономном режиме, набрав doc NameOfTheFunction
в терминале Matlab.
пример
Дано следующее непрерывное уравнение Ляпунова:
A*X + X*transpose(A) + Q = 0
Решение в Matlab для стабильной A
и положительно определенный Q
дается как:
X = lyap(A,Q)
В некоторых случаях уравнение немного отличается:
A*X + X*B + C = 0
Это уравнение называется уравнением Сильвестра и снова разрешимо с помощью встроенной функции Ляпунова в Matlab:
X = lyap(A,B,C)
Те же самые шаги аналогового решения существуют для дискретного случая, где уравнения Ляпунова и Сильвестра выглядят немного иначе:
A*X*transpose(A) -X + Q = 0 -> X = dlyap(A,Q)
A*X*B - X + C = 0 -> X = dlyap(A,B,C)