icare

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

Описание

пример

[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-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 из мнимой оси может быть диагностирован как 'мнимый' из-за числовых ошибок.

Для большей числовой точности перепишите алгебраическое уравнение 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],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 содержит собственные значения с обратной связью.

Найти антистабилизировавшееся решение непрерывного времени алгебраическим уравнением Riccati ATX+XA-XBBTX+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],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 содержит собственные значения с обратной связью.

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

свернуть все

Введите матрицы в виде матриц.

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

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

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

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

  • B = 0

  • R = I

  • S = 0

  • E = I

  • G = 0

Если входные параметры QR и 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 матрица.

  • UV и 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] из инвариантного подпространства, сопоставленного с устойчивыми или антиустойчивыми конечными собственными значениями этого карандаша.

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

| | | | | | | (Robust Control Toolbox) | (Robust Control Toolbox) | (Robust Control Toolbox) | (Robust Control Toolbox)

Введенный в R2019a