주요 콘텐츠

care

(권장되지 않음) 연속시간 대수 리카티 방정식 풀기

care는 권장되지 않습니다. icare를 대신 사용하십시오. 자세한 내용은 버전 내역을 참조하십시오.

설명

[X,L,G] = care(A,B,Q,R,S,E)는 다음과 같은 일반적인 리카티 방정식을 풉니다.

ATXE+ETXA(ETXB+S)R1(BTXE+ST)+Q=0

care는 해 X 외에도 이득 행렬 G와 폐루프 고유값으로 구성된 벡터 L을 반환합니다.

예제

[X,L,G] = care(A,B,Q)는 다음과 같은 연속시간 대수 리카티 방정식의 유일한 해 X를 계산합니다.

ATX+XAXBBTX+Q=0

[X,L,G,report] = care(___)는 진단 리포트도 반환합니다.

이 구문은 X가 존재하지 않는 경우에도 오류 메시지를 생성하지 않습니다.

[X1,X2,D,L] = care(___,'factor')는 리카티 방정식의 분해된 해를 반환합니다.

예제

모두 축소

이 예제에서는 다음과 같은 리카티 방정식을 푸는 방법을 보여줍니다.

ATX+XAXBR1BTX+CTC=0

다음과 같이 주어졌을 때

A=[3211]B=[01]C=[11]R=3

행렬을 정의하고 방정식을 풉니다.

a = [-3 2;1 1]
b = [0 ; 1]
c = [1 -1]
r = 3
[x,l,g] = care(a,b,c'*c,r)
x =

    0.5895    1.8216
    1.8216    8.8188


l =

   -1.4370
   -3.5026


g =

    0.6072    2.9396

aa-b*g의 고유값을 비교하여 이 해가 실제로 안정화되고 있음을 확인할 수 있습니다.

[eig(a)   eig(a-b*g)]
ans =
   -3.4495   -3.5026
    1.4495   -1.4370

마지막으로, 변수 l이 폐루프 고유값 eig(a-b*g)를 포함한다는 사실을 확인합니다.

이 예제에서는 다음과 같은 H 유사 리카티 방정식을 푸는 방법을 보여줍니다.

ATX+XA+X(γ2B1B1TB2B2T)X+CTC=0

다음과 같이 care가 지원하는 형식으로 방정식을 다시 작성할 수 있습니다.

ATX+XAX[B1,B2]B[γ2I00I]R1[B1TB2T]X+CTC=0

주어진 입력 행렬에 대해, 이제 다음과 같이 안정화 해 X를 계산할 수 있습니다.

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)

입력 인수

모두 축소

입력 행렬로, 행렬로 지정됩니다. R, S, E를 생략하면 함수는 디폴트 값 R = I, S = 0, E = I를 사용합니다.

출력 인수

모두 축소

연속시간 대수 리카티 방정식의 해로, 행렬로 반환됩니다.

관련 해밀턴 행렬이 허수축에 고유값을 갖는 경우 careX에 대해 []을 반환합니다.

폐루프 고유값으로, 행렬로 반환됩니다.

폐루프 고유값 L은 다음과 같이 계산됩니다.

L=eig(A-B*G,E)

상태-피드백 이득으로, 행렬로 반환됩니다.

상태-피드백 이득 G는 다음과 같이 계산됩니다.

G=R1(BTXE+ST)

관련 해밀턴 행렬이 허수축에 고유값을 갖는 경우 careG에 대해 []을 반환합니다.

진단 리포트로, 다음 값 중 하나를 가진 스칼라로 반환됩니다.

  • -1: 해당 해밀턴 펜슬이 허수축상에 또는 허수축 매우 가까이에 고유값을 갖는 경우(실패).

  • -2: 유한한 안정화 해 X가 없는 경우.

  • X가 존재하며 유한한 경우 상대 잔차의 프로베니우스 노름

분해된 해 행렬로, 행렬로 반환됩니다. 함수는 X = D(X1/X2)D를 충족하는 X1, X2, 대각 스케일링 행렬 D를 반환합니다.

관련 해밀턴 행렬이 허수축에 고유값을 갖는 경우 careX1, X2, D를 빈 값으로 반환합니다.

제한 사항

(A,B) 쌍은 안정화 가능해야 합니다(즉, 모든 불안정한 모드가 제어 가능해야 함). 또한 관련 해밀턴 행렬 또는 펜슬이 허수축에 고유값을 갖지 않아야 합니다. 이것이 참이 되도록 하는 충분 조건은 S=0이고 R>0일 때는 (Q,A)가 검출 가능한 경우입니다. 또는 다음이 성립하는 경우입니다.

[QSSTR]>0

알고리즘

care[1]에 설명되어 있는 알고리즘을 구현합니다. R이 조건이 좋고 E=I인 경우 해밀턴 행렬을 사용하고, 그렇지 않은 경우 확장 해밀턴 펜슬과 QZ 알고리즘을 사용합니다.

참고 문헌

[1] Arnold, W.F., and A.J. Laub. “Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations.” Proceedings of the IEEE 72, no. 12 (1984): 1746–54. https://doi.org/10.1109/PROC.1984.13083.

버전 내역

R2006a 이전에 개발됨

모두 축소

참고 항목