exponenta event banner

уход

(Не рекомендуется) Алгебраическое решение уравнения Риккати с непрерывным временем

care не рекомендуется. Использовать icare вместо этого. Дополнительные сведения см. в разделе Вопросы совместимости.

Синтаксис

[X,L,G] = care(A,B,Q)
[X,L,G] = care(A,B,Q,R,S,E)
[X,L,G,report] = care(A,B,Q,...)
[X1,X2,D,L] = care(A,B,Q,...,'factor')

Описание

[X,L,G] = care(A,B,Q) вычисляет уникальное решение X алгебраического уравнения Риккати непрерывного времени

ATX + XA XBBTX + Q = 0

care функция также возвращает матрицу усиления, G = R 1BTXE.

[X,L,G] = care(A,B,Q,R,S,E) решает более общее уравнение Риккати

ATXE + ETXA (ETXB + S) R 1 (BTXE + ST) + Q = 0

Если он опущен, R, S, и E установлены значения по умолчанию R=I, S=0, и E=I. Вместе с решением X, care возвращает матрицу усиления G = R 1 (BTXE + ST) и векторL собственных значений замкнутого контура, где

L=eig(A-B*G,E)

[X,L,G,report] = care(A,B,Q,...) возвращает диагноз report с:

  • -1 когда связанный гамильтоновский карандаш имеет собственные значения на воображаемой оси или очень близко к ней (отказ)

  • -2 при отсутствии конечного стабилизирующего раствора X

  • Норма Фробениуса относительного остатка, если X существует и является конечным.

Этот синтаксис не выдает сообщения об ошибке, если X не существует.

[X1,X2,D,L] = care(A,B,Q,...,'factor') возвращает две матрицы X1, X2 и матрица диагонального масштабирования D такой, что X = D*(X2/X1)*D.

Вектор L содержит собственные значения замкнутого цикла. Все выходы пусты, когда связанная гамильтонова матрица имеет собственные значения на воображаемой оси.

Примеры

Пример 1

Решить алгебраическое уравнение Риккати

Данный

A = [3211] B = [01] C = [1 1] R = 3

можно решить уравнение Риккати

ATX + XA XBR 1BTX + CTC = 0

около

a = [-3 2;1 1]
b = [0 ; 1]
c = [1 -1]
r = 3
[x,l,g] = care(a,b,c'*c,r)

Это дает раствор

x

x =
    0.5895    1.8216
    1.8216    8.8188

Вы можете убедиться, что это решение действительно стабилизируется, сравнивая собственные значения a и a-b*g.

[eig(a)   eig(a-b*g)]
 
ans =
   -3.4495   -3.5026
    1.4495   -1.4370

Наконец, обратите внимание, что переменная l содержит собственные значения замкнутого цикла eig(a-b*g).

l

l =
   -3.5026
   -1.4370

Пример 2

Решить H-бесконечность (H∞) -образное уравнение Риккати

Решить подобное  уравнение Riccati H

ATX + XA + X (γ 2B1B1T B2B2T) X + CTC = 0

переписать его в care формат как

ATX + XA X [B1, B2] B [γ2I00I] R 1 [B1TB2T] X + CTC = 0

Теперь можно вычислить стабилизирующее решение X по

B = [B1 , B2]
m1 = size(B1,2)
m2 = size(B2,2)
R = [-g^2*eye(m1) zeros(m1,m2) ; zeros(m2,m1) eye(m2)]

X = care(A,B,C'*C,R)

Ограничения

Пара (A, B) должна быть стабилизируемой (то есть управляемыми являются все нестабильные режимы). Кроме того, связанная гамильтонова матрица или карандаш не должны иметь собственного значения на воображаемой оси. Достаточные условия для этого являются (Q, A) обнаруживаемыми, когда S = 0 и R > 0, или

[QSSTR] > 0

Алгоритмы

care реализует алгоритмы, описанные в [1]. Он работает с гамильтоновой матрицей, когда R хорошо кондиционирован и E = I; в противном случае он использует расширенный гамильтоновский карандаш и алгоритм QZ.

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2019a

Ссылки

[1] Арнольд, В. Ф., III и А. Дж. Лауб, «Обобщенные алгоритмы и программное обеспечение для алгебраических уравнений Риккати», Proc. IEEE ®, 72 (1984), стр. 1746-1754

См. также

Представлен до R2006a