* Bug #4731 fixed - lqr() failed when time domain of input was a number.
[scilab.git] / scilab / modules / cacsd / tests / nonreg_tests / bug_4731.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- Non-regression test for bug 4731 -->
9 //
10 // <-- Bugzilla URL -->
11 // http://bugzilla.scilab.org/show_bug.cgi?id=4731
12 //
13 // <-- Short Description -->
14 // lqr fails if dt argument of syslin is a number
15
16 A=[0.5 0.3;0.3 0.9];B=[0.9; 0.3];
17 Q=diag([2,5]);R=2;
18 Big=sysdiag(Q,R);
19 [w,wp]=fullrf(Big);C1=wp(:,1:2);D12=wp(:,3:$);
20 P=syslin(1,A,B,C1,D12);
21 [K,X]=lqr(P);
22 S=spec(A+B*K);
23 R=norm(A'*X*A-(A'*X*B)*pinv(B'*X*B+R)*(B'*X*A)+Q-X,1);
24 assert_checkalmostequal(real(S),[0.24977769272823835; 0.47346570058644721]);
25 assert_checkequal(imag(S),[0;0]);
26 assert_checktrue(R<100*%eps);