Решение системы линейных уравнений

Моя цель состоит в том, чтобы решить систему уравнений, известную как уравнение Ляпунова, которая находит х в следующем уравнении:

A*X + X*transpose(A) +Q = 0

плюс еще одно линейное ограничение, которое X*v = 0

где все матрицы A, X,Q являются n на n матриц, а v является вектором с длиной n.

Как я могу найти такой X в Matlab?

1 ответ

Решение

Решить уравнения Ляпунова в 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)
Другие вопросы по тегам