care

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

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 из непрерывного времени алгебраическое уравнение Riccati

ATX+XAXBBTX+Q=0

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

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

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

Когда не использовано, RS, и E установлены в значения по умолчанию R=I, S=0, и E=I. Наряду с решением X, care возвращает матрицу усиления G=R1(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') возвращает две матрицы X1x2 и диагональный масштабирующийся матричный D таким образом, что X = D*(X2/X1)*D.

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

Примеры

Пример 1

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

Данный

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

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

ATX+XAXBR1BTX+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- как уравнение Riccati

ATX+XA+X(γ2B1B1TB2B2T)X+CTC=0

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

ATX+XAX[B1,B2]B[γ2I00I]R1[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) пара должна быть stabilizable (то есть, все нестабильные режимы управляемы). Кроме того, связанная гамильтонова матрица или карандаш не должны иметь никакого собственного значения на мнимой оси. Достаточные условия для этого, чтобы содержать (Q,A) обнаруживаемый, когда S=0 и R>0, или

[QSSTR]>0

Алгоритмы

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

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

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

Не рекомендуемый запуск в R2019a

Ссылки

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

Смотрите также

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