icare

Неявный решатель для непрерывно-разовых алгебраических уравнений Riccati

Синтаксис

[X,K,L] = icare(A,B,Q,R,S,E,G)
[X,K,L,info] = icare(___)
[___] = icare(___,'noscaling')
[___] = icare(___,'anti')

Описание

пример

[X,K,L] = icare(A,B,Q,R,S,E,G) вычисляет уникальное решение для стабилизации X, усиление обратной связи состояния K и собственные значения с обратной связью L следующего непрерывно-разового алгебраического уравнения Riccati.

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

Стабилизировавшееся решение X помещает все собственные значения L в левую полуплоскость.

Алгебраические уравнения Riccati играют ключевую роль в управлении LQR/LQG, H2 - и управлении H-бесконечности, Кальман, фильтрующий и спектральные или взаимно-простые факторизации.

пример

[X,K,L,info] = icare(___) также возвращает структуру info, который содержит дополнительную информацию о решении непрерывно-разового алгебраического уравнения Riccati.

[___] = icare(___,'noscaling') выключает встроенное масштабирование и устанавливает все записи масштабирующихся векторов info.Sx и info.Sr к 1. Выключение масштабирования ускоряет вычисление, но может быть вредно для точности, когда A,B,Q,R,S,E,G плохо масштабируется.

пример

[___] = icare(___,'anti') вычисляет антистабилизировавшееся решение X, который помещает все собственные значения L в правую полуплоскость.

Примеры

свернуть все

Решить алгебраическое уравнение Riccati ATX+XA-Xb BTX+CCT=0, рассмотрите следующие матрицы:

A=[1-23-456789]B=[56-7]C=[7-89].

Наименьшее количество подхода усилия должно использовать G=-BBT и Q=CTC, и затем найдите решение с помощью icare.

A = [-1,2,3;4,5,-6;7,-8,9];
B = [5;6;-7];
C = [7,-8,9];
G = -B*B';
Q = C'*C;
[X1,K1,L1] = icare(A,[],Q,[],[],[],G)
X1 = 3×3

   15.3201    4.2369   17.0090
    4.2369    2.6252    4.4123
   17.0090    4.4123   19.0374

K1 =

  0×3 empty double matrix
L1 = 3×1

   -3.2139
  -10.1191
  -76.9693

Вышеупомянутый подход может привести к числовым погрешностям, когда матрицы, B и C имеют большие записи, поскольку они в квадрате - чтобы вычислить матрицы Q и G. Из-за ограниченной числовой области значений, вычисление может быть менее точным или даже перестать работать. Например, если norm(B) является 1e6, то norm(G) является 1e12, и любое собственное значение в 1e-4 мнимой оси может быть диагностировано как 'мнимое' из-за числовых ошибок.

Для большей числовой точности перепишите алгебраическое уравнение Riccati следующим образом:

ATX+XA[Xb ,CT]*[I,0;0,-I][BTX;C]=0.

Вышеупомянутое уравнение является стандартной формой ATX+XA-(Xb +S)R-1(BTX+ST)=0,

где B=[B,0],S=[0,CT],иR=[I,0;0,-I].

Вычислите решение с помощью icare с вышеупомянутыми значениями.

n = size(A,1);
m = size(B,2);
p = size(C,1);
R = blkdiag(eye(m),-eye(p));
BB = [B,zeros(n,p)];
S = [zeros(n,m),C'];
[X2,K2,L2,info] = icare(A,BB,0,R,S,[],[])
X2 = 3×3

   15.3201    4.2369   17.0090
    4.2369    2.6252    4.4123
   17.0090    4.4123   19.0374

K2 = 2×3

  -17.0406    6.0501  -21.7435
   -7.0000    8.0000   -9.0000

L2 = 3×1

   -3.2139
  -10.1191
  -76.9693

info = struct with fields:
        Sx: [3×1 double]
        Sr: [2×1 double]
         U: [3×3 double]
         V: [3×3 double]
         W: [2×3 double]
    Report: 0

Здесь, X2 является уникальным решением для стабилизации, K2 содержит усиление обратной связи состояния, и L2 содержит собственные значения с обратной связью.

Найти антистабилизировавшееся решение непрерывно-разового алгебраического уравнения Riccati ATX+XA-Xb BTX+CCT=0, рассмотрите следующие матрицы:

A=[1-23-456789]B=[56-7]C=[7-89].

Для большей числовой точности перепишите алгебраическое уравнение Riccati следующим образом:

ATX+XA[Xb ,CT]*[I,0;0,-I][BTX;C]=0.

Вышеупомянутое уравнение является стандартной формой ATX+XA-(Xb +S)R-1(BTX+ST)=0,

где B=[B,0],S=[0,CT],иR=[I,0;0,-I].

Вычислите антистабилизировавшееся решение с помощью опции 'anti'.

A = [-1,2,3;4,5,-6;7,-8,9];
B = [5;6;-7];
C = [7,-8,9];
n = size(A,1);
m = size(B,2);
p = size(C,1);
R = blkdiag(eye(m),-eye(p));
BB = [B,zeros(n,p)];
S = [zeros(n,m),C'];
[X,K,L] = icare(A,BB,0,R,S,[],[],'anti')
X = 3×3

  -18.0978   10.9090   -1.8466
   10.9090   -6.7195    1.4354
   -1.8466    1.4354   -0.9426

K = 2×3

  -12.1085    4.1803    5.9774
   -7.0000    8.0000   -9.0000

L = 3×1

   76.9693
   10.1191
    3.2139

Здесь, X является уникальным решением антистабилизации, K содержит усиление обратной связи состояния, и L содержит собственные значения с обратной связью.

Входные параметры

свернуть все

Введите матрицы, заданные как матрицы.

Матрицы Q, R и G должны быть Эрмитовыми. Квадратная матрица является Эрмитовой, если это равно своему комплексному сопряженному транспонированию, то есть, ai,j=a¯j,i.

Для получения дополнительной информации об Эрмитовых матрицах смотрите ishermitian.

Матрицы R и E должны быть обратимыми.

Когда матрицы B, R, S, E и G не использованы или установлены в [], icare использует следующие значения по умолчанию:

  • B = 0

  • R = I

  • S = 0

  • E = I

  • G = 0

Если входные параметры Q, R и G со скалярным знаком, icare интерпретирует их как множители единичной матрицы.

Опция, чтобы выключить встроенное масштабирование, заданное как 'noscaling'. Когда вы выключаете встроенное масштабирование, icare устанавливает все записи в масштабирующихся векторах info.Sx и info.Sr к 1. Выключение масштабирования ускоряет вычисление, но может быть вредно для точности, когда A,B,Q,R,S,E,G плохо масштабируется.

Опция, чтобы вычислить антистабилизировавшееся решение, заданное как 'anti'. Когда вы включаете эту опцию, icare вычисляет антистабилизировавшееся решение X, который помещает все собственные значения (A+G*X*E-B*K,E) в правой полуплоскости.

Уникальная стабилизация и антистабилизация оба необходимы, чтобы знать полный портрет фазы дифференциальных уравнений Riccati.

Выходные аргументы

свернуть все

Уникальное решение непрерывно-разового алгебраического уравнения Riccati, возвращенного как матрица.

По умолчанию X является стабилизировавшимся решением непрерывно-разового алгебраического уравнения Riccati. Когда опция 'anti' используется, X является антистабилизировавшимся решением.

icare возвращает [] для X, когда связанная гамильтонова матрица имеет собственные значения на мнимой оси.

Усиление обратной связи состояния, возвращенное как матрица.

Усиление обратной связи состояния K вычисляется как:

K = R1(BTXE+ST).

icare возвращает [] для K, когда связанная гамильтонова матрица имеет собственные значения на мнимой оси.

Собственные значения с обратной связью, возвращенные как матрица.

Собственные значения с обратной связью L вычисляются как:

L = eig(A+GXEBK,E).

icare возвращает [] для X и K, когда связанная гамильтонова матрица имеет собственные значения на мнимой оси. Другими словами, L непуст, даже когда X и K являются пустыми матрицами.

Информация об уникальном решении, возвращенном как структура со следующими полями:

  • Sx — Вектор значений раньше масштабировал состояния.

  • Sr — Вектор значений раньше масштабировал матрицу R.

  • U, V и W — Векторы значений, представляющих основание стабильного инвариантного подпространства связанного масштабированного матричного карандаша. Для получения дополнительной информации см. Алгоритмы.

  • Report — Скаляр с одним из следующих значений:

    • 0 — Уникальное решение точно.

    • 1 — Точность решения плоха.

    • 2 — Решение не конечно.

    • 3 — Никакое решение, найденное начиная с гамильтонова спектра, обозначенного [L;-L], не имеет собственные значения на мнимой оси.

Ограничения

  • (A-sE,B) должен быть stabilizable, и E, и R должен быть обратимым для конечного решения для стабилизации X, чтобы существовать и быть конечным. В то время как эти условия не достаточны в целом, они становятся достаточными, когда следующим условиям отвечают:

    • [QSTSR]  0

    • [ABR1STQSR1ST] обнаружимо

Алгоритмы

Basis of the invariant subspace

icare работает со следующим карандашом и вычисляет основание [U;V;W] инвариантного подпространства, сопоставленного со стабильными или антистабильными конечными собственными значениями этого карандаша.

MsN = [AGBQATSSTBTR]s[E000ET0000]

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

Relationship between the solution, the state-feedback gain, and the scaling vectors

Решение X и обратная связь состояния получают K, связано с масштабирующимися векторами и U,V,W следующей системой уравнений:

X = Dx VU1 Dx E1,K = Dr ВУ1 Dx,

где,

Dx = diag(Sx),Dr = diag(Sr).

Basis of the invariant subspace

icare работает со следующим карандашом и вычисляет основание [U;V;W] инвариантного подпространства, сопоставленного со стабильными или антистабильными конечными собственными значениями этого карандаша.

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

| | | | | | | | | |

Введенный в R2019a