(Не рекомендуется) Алгебраическое решение уравнения Риккати с непрерывным временем
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 алгебраического уравнения Риккати непрерывного времени
+ Q = 0
care функция также возвращает матрицу усиления, 1BTXE.
[X,L,G] = care(A,B,Q,R,S,E) решает более общее уравнение Риккати
BTXE + ST) + Q = 0
Если он опущен, R, S, и E установлены значения по умолчанию R=I, S=0, и E=I. Вместе с решением X, care возвращает матрицу усиления BTXE + ST) и векторL собственных значений замкнутого контура, где
L=eig(A-B*G,E)
[X,L,G,report] = care(A,B,Q,...) возвращает диагноз report с:
Этот синтаксис не выдает сообщения об ошибке, если X не существует.
[X1,X2,D,L] = care(A,B,Q,...,'factor') возвращает две матрицы X1, X2 и матрица диагонального масштабирования D такой, что X = D*(X2/X1)*D.
Вектор L содержит собственные значения замкнутого цикла. Все выходы пусты, когда связанная гамильтонова матрица имеет собственные значения на воображаемой оси.
Решить алгебраическое уравнение Риккати
Данный
1] R = 3
можно решить уравнение Риккати
+ 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
Решить H-бесконечность () -образное уравнение Риккати
Решить подобное уравнение Riccati H
B2B2T) X + CTC = 0
переписать его в care формат как
B1TB2T] X + CTC = 0
Теперь можно вычислить стабилизирующее решение по
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) должна быть стабилизируемой (то есть управляемыми являются все нестабильные режимы). Кроме того, связанная гамильтонова матрица или карандаш не должны иметь собственного значения на воображаемой оси. Достаточные условия для этого являются A) обнаруживаемыми, = 0 R > 0, или
0
care реализует алгоритмы, описанные в [1]. Он работает с гамильтоновой матрицей, когда R хорошо кондиционирован и I; в противном случае он использует расширенный гамильтоновский карандаш и алгоритм QZ.
[1] Арнольд, В. Ф., III и А. Дж. Лауб, «Обобщенные алгоритмы и программное обеспечение для алгебраических уравнений Риккати», Proc. IEEE ®, 72 (1984), стр. 1746-1754