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-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 =

  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],и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: [3x1 double]
        Sr: [2x1 double]
         U: [3x3 double]
         V: [3x3 double]
         W: [2x3 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 содержит собственные значения с обратной связью.

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

свернуть все

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

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

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

| | | | | | | | | |

Введенный в R2019a