Main Content

care

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

care는 권장되지 않습니다. icare를 대신 사용하십시오. 자세한 내용은 호환성 관련 고려 사항 항목을 참조하십시오.

구문

[X,L,G] = care(A,B,Q)
[X,L,G] = care(A,B,Q,R,S,E)
[X,L,G,report] = care(A,B,Q,...)
[X1,X2,D,L] = care(A,B,Q,...,'factor')

설명

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

ATX+XAXBBTX+Q=0

care 함수는 이득 행렬 G=R1BTXE도 반환합니다.

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

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

R, S, E 값이 생략된 경우 디폴트 값 R=I, S=0, E=I로 설정됩니다. care는 해 X 외에도 이득 행렬 G=R1(BTXE+ST)과 폐루프 고유값으로 구성된 벡터 L을 반환합니다. 여기서 L은 다음과 같습니다.

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

[X,L,G,report] = care(A,B,Q,...)는 다음 값을 포함하는 진단 report를 반환합니다.

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

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

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

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

[X1,X2,D,L] = care(A,B,Q,...,'factor')X = D*(X2/X1)*D를 충족하는 2개의 행렬 X1, X2 및 대각 스케일링 행렬 D를 반환합니다.

벡터 L은 폐루프 고유값을 포함합니다. 관련 해밀턴 행렬이 허수축에 고유값을 갖는 경우 모든 출력은 비어 있습니다.

예제

예제 1

대수 리카티 방정식 풀기

다음과 같이 주어졌을 때

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

다음과 같은 리카티 방정식을

ATX+XAXBR1BTX+CTC=0

다음과 같이 풀 수 있습니다.

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

그러면 다음과 같은 해가 생성됩니다.

x

x =
    0.5895    1.8216
    1.8216    8.8188

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

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

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

l

l =
   -3.5026
   -1.4370

예제 2

H-무한대(H) 유사 리카티 방정식 풀기

다음과 같은 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)

제한 사항

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

[QSSTR]>0

알고리즘

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

참고 문헌

[1] Arnold, W.F., III and A.J. Laub, "Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations," Proc. IEEE®, 72 (1984), pp. 1746-1754

버전 내역

R2006a 이전에 개발됨

모두 축소

R2019a: care는 권장되지 않음

R2019a부터는 icare 명령을 사용하여 연속시간 리카티 방정식을 푸십시오. 이 방법은 더 나은 스케일링을 통해 정확도를 개선하며, R의 조건이 나쁠 때 care에 비해 K의 계산이 더 정확합니다. 아울러 icare에는 리카티 방정식의 음함수 해 데이터를 수집하는 선택적 info 구조체가 포함되어 있습니다.

다음 표는 care의 몇 가지 일반적인 용도와 이 대신 코드에서 icare를 사용하도록 업데이트하는 방법을 보여줍니다.

권장되지 않음권장됨

[X,L,G] = care(A,B,Q,R,S,E)

[X,K,L] = icare(A,B,Q,R,S,E,G)는 연속시간 대수 리카티 방정식의 안정화 해 X, 상태-피드백 이득 K, 폐루프 고유값 L을 계산합니다. 자세한 내용은 icare를 참조하십시오.

[X,L,G,report] = care(A,B,Q,R,S,E)

[X,K,L,info] = icare(A,B,Q,R,S,E,G)는 연속시간 대수 리카티 방정식의 안정화 해 X, 상태-피드백 이득 K, 폐루프 고유값 L을 계산합니다. info 구조체는 음함수 해 데이터를 포함합니다. 자세한 내용은 icare를 참조하십시오.

현재로서는 care를 제거할 계획이 없습니다.

참고 항목