From: Clancy R. <cwr...@pr...> - 2014-08-16 20:49:21
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 38514c9c3f57f80d332bb13b8ef71e401c94407a https://github.com/python-control/python-control/commit/38514c9c3f57f80d332bb13b8ef71e401c94407a Author: Clancy Rowley <cwr...@pr...> Date: 2014-08-16 (Sat, 16 Aug 2014) Changed paths: M control/matlab.py Log Message: ----------- Correct docstrings in matlab time response functions Fixes #35 Commit: 8c1fdeb2b401866777a2f9c22a968e13199fdf0b https://github.com/python-control/python-control/commit/8c1fdeb2b401866777a2f9c22a968e13199fdf0b Author: Clancy Rowley <cwr...@pr...> Date: 2014-08-16 (Sat, 16 Aug 2014) Changed paths: M control/tests/mateqn_test.py Log Message: ----------- Improve readability of matrix equation tests Commit: 7cf9630146a961c28c38817d48794525d22c6287 https://github.com/python-control/python-control/commit/7cf9630146a961c28c38817d48794525d22c6287 Author: Clancy Rowley <cwr...@pr...> Date: 2014-08-16 (Sat, 16 Aug 2014) Changed paths: M control/mateqn.py M control/tests/mateqn_test.py Log Message: ----------- Fix bug in dare so that it returns a stabilizing solution The new implementation calls the routine scipy.linalg.solve_discrete_are(A, B, Q, R) which is included in scipy versions >= 0.11. The old implementation using slycot did satisfy the Riccati equation, but did not return a stabilizing solution. The scipy implementation apparently works correctly, though. This change fixes #8. Unit tests now make sure closed-loop eigenvalues lie inside the unit circle. Note: the scipy implementation handles only the case S = 0, E = I, the default values. If S and E are specified, the old routine (using slycot) is called. This passes the existing tests, but the tests include only one simple case, so it would be good to test this more extensively. Compare: https://github.com/python-control/python-control/compare/b798bfa1cbd9...7cf9630146a9 |
From: Roberto B. <rob...@su...> - 2014-08-17 06:35:02
|
Another method to implement the correct dare functions is to use the sllycot routine "sb02od" # Check dimensions for consistency nstates = B.shape[0]; ninputs = B.shape[1]; if (A.shape[0] != nstates or A.shape[1] != nstates): raise ControlDimension("inconsistent system dimensions") elif (Q.shape[0] != nstates or Q.shape[1] != nstates or R.shape[0] != ninputs or R.shape[1] != ninputs) : raise ControlDimension("incorrect weighting matrix dimensions") X,rcond,w,S,T = \ sb02od(nstates, ninputs, A, B, Q, R, 'D'); return X which returns the correct result too. Roberto On 08/16/2014 10:49 PM, Clancy Rowley wrote: > Branch: refs/heads/master > Home: https://github.com/python-control/python-control > Commit: 38514c9c3f57f80d332bb13b8ef71e401c94407a > https://github.com/python-control/python-control/commit/38514c9c3f57f80d332bb13b8ef71e401c94407a > Author: Clancy Rowley <cwr...@pr...> > Date: 2014-08-16 (Sat, 16 Aug 2014) > > Changed paths: > M control/matlab.py > > Log Message: > ----------- > Correct docstrings in matlab time response functions > > Fixes #35 > > > Commit: 8c1fdeb2b401866777a2f9c22a968e13199fdf0b > https://github.com/python-control/python-control/commit/8c1fdeb2b401866777a2f9c22a968e13199fdf0b > Author: Clancy Rowley <cwr...@pr...> > Date: 2014-08-16 (Sat, 16 Aug 2014) > > Changed paths: > M control/tests/mateqn_test.py > > Log Message: > ----------- > Improve readability of matrix equation tests > > > Commit: 7cf9630146a961c28c38817d48794525d22c6287 > https://github.com/python-control/python-control/commit/7cf9630146a961c28c38817d48794525d22c6287 > Author: Clancy Rowley <cwr...@pr...> > Date: 2014-08-16 (Sat, 16 Aug 2014) > > Changed paths: > M control/mateqn.py > M control/tests/mateqn_test.py > > Log Message: > ----------- > Fix bug in dare so that it returns a stabilizing solution > > The new implementation calls the routine > scipy.linalg.solve_discrete_are(A, B, Q, R) > which is included in scipy versions >= 0.11. The old implementation > using slycot did satisfy the Riccati equation, but did not return a > stabilizing solution. The scipy implementation apparently works > correctly, though. This change fixes #8. > > Unit tests now make sure closed-loop eigenvalues lie inside > the unit circle. > > Note: the scipy implementation handles only the case S = 0, E = I, > the default values. If S and E are specified, the old routine (using > slycot) is called. This passes the existing tests, but the tests > include only one simple case, so it would be good to test this more > extensively. > > > Compare: https://github.com/python-control/python-control/compare/b798bfa1cbd9...7cf9630146a9 > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > python-control-developers mailing list > pyt...@li... > https://lists.sourceforge.net/lists/listinfo/python-control-developers |