icare

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

Описание

пример

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

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

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

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

пример

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

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

пример

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

Примеры

свернуть все

Чтобы решить алгебраическое уравнение Риккати ATX+XA-XBBTX+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 =

  0x3 empty double matrix
L1 = 3×1

   -3.2139
  -10.1191
  -76.9693

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

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

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],andR=[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: [3x1 double]
        Sr: [2x1 double]
         U: [3x3 double]
         V: [3x3 double]
         W: [2x3 double]
    Report: 0

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

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

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

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

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],andR=[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) в правой полуплоскости.

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

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

свернуть все

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

По умолчанию X является стабилизирующим решением алгебраического уравнения Риккати в непрерывном времени. Когда '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) должны быть стабилизируемыми и 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] инвариантного подпространства, сопоставленного со стабильными или анти-стабильными конечными собственными значениями этого карандаша.

См. также

| | | | | | | (Robust Control Toolbox) | (Robust Control Toolbox) | (Robust Control Toolbox) | (Набор инструментов Robust Control Toolbox)

Введенный в R2019a