"Limitations" for DARE function
조회 수: 4 (최근 30일)
이전 댓글 표시
Hey all. I have been trying to better understand the "limitations" of matlab's dare() function but cannot seem to do so. Please help me out. This is the link to the page. Specifically how did [Q S; S.' R] > 0 come to be (call this condition 1)? I don't see how condition 1 implies (Q,A) being detectible?
I wrote a little piece of code to try and figure this out, it is shown below along with the output. I am desperate for an answer or at least some guidance. Any input will be appreciated. Thank you.
clear;
clc;
n=2;
E = eye(2);
A = [-2 0; 0 -2];
B = eye(2);
S = [-1000 0; 0 -1000];
Q = 1000*[1.0005 0.0005; 0.0005 1.0005];
R = [1000 0; 0 1000];
%%%%%%%%%%%%%%%%%%%%%%[RICCATI CONVERGENCE TESTS]%%%%%%%%%%%%%%%%%%%%%%
%%%matlab stability check
t1=0;
if all(eig([Q S; S.' R]) > 0)
t1=1;
else
t1=0;
end
%%%check if Q is PSD
t2=0;
if issymmetric(Q) && all(eig(Q) >= 0)
t2 = 1;
else
t2=0;
end
%%%check if R is PD
t3=0;
if issymmetric(R) && all(eig(R) > 0)
t3 = 1;
else
t3=0;
end
%%%PBH TEST FOR STABILIZIBILITY
t4=0;
e = eig(A);
i = 0;
while i < size(e,1) && rank([eye(n)*e(i+1)-A eye(n)]) == n
i = i+1;
end
if i == size(e,1)
t4=1;
else
t4=0;
end
%%%PBH TEST FOR DETECTABILITY
t5=0;
if t2
i = 0;
C = chol(Q);
%%%sub test
if rank(C)==rank(Q)
t5=1;
else
t5=0;
end
while i < size(e,1) && rank([eye(n)*e(i+1)-A; Q]) == n
i = i+1;
end
if i == size(e,1) && t5==1
t5=1;
else
t5=0;
end
else
t5=0;
end
t = [t1 t2 t3 t4 t5];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if all(t)
fprintf('[*] All tests PASSED (DARE convergence)\n')
else
fprintf('[*] One or more tests FAILED (no DARE convergence)\n')
end
fprintf('[-] [Q zeros(2); zeros(2) R] > 0: %d\n', round(t1))
fprintf('[-] Q is PSD: %d\n', round(t2))
fprintf('[-] R is PD: %d\n', round(t3))
fprintf('[-] Stabilizible: %d\n', round(t4))
fprintf('[-] Detectible: %d\n', round(t5))
Results:
[*] One or more tests FAILED (no DARE convergence)
[-] [Q zeros(2); zeros(2) R] > 0: 0
[-] Q is PSD: 1
[-] R is PD: 1
[-] Stabilizible: 1
[-] Detectible: 1
I don't see how the first test fails but all the other four tests pass.
댓글 수: 0
답변 (1개)
Pritesh Shah
2016년 10월 5일
Try edit dare.
You will able to see dare code.
Refer,
References [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
참고 항목
카테고리
Help Center 및 File Exchange에서 Testing Frameworks에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!