care

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

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+XAXBBTX+Q=0

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

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

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

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

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

Примеры

Пример 1

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

Данный

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

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

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) - как уравнение Риккати

Чтобы решить H- подобно уравнению Риккати

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) пара должна быть стабилизируемой (то есть все нестабильные режимы являются управляемыми). В сложение связанная гамильтоновая матрица или карандаш не должны иметь собственного значения на воображаемой оси. Достаточные условия для хранения: (Q,A) обнаруживается, когда S=0 и R>0, или

[QSSTR]>0

Алгоритмы

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

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

расширить все

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

Ссылки

[1] Arnold, W.F., III and A.J. Laub, «Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations», Proc. IEEE®, 72 (1984), стр. 1746-1754

См. также

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