test_grammian_balancing

wield.control.SISO.test.test_grammian_balancing

These tests are to test the balancing of Schur forms by computing the Grammians in various forms

TODO: need to wrap

https://www.slicot.org/objects/software/shared/libindex.html SB08CD Left coprime factorization with inner denominator SB08DD Right coprime factorization with inner denominator

So that the Cholesky factors of the stabilized form of a statespace can be computed. Right now we can only just test that a statespace is stable. There are other reasons to want those factorizations anyway.

This is a pytest, but its test folder is missing. Some of the annotations of the tests may be missing. pytest-html report

Functions

gen_FBNS_FOM_filt_zpk([hp_order, lp_order])

gen_SEI_like_lowpass([lp_order])

test_grammian_schur_balancing1()

This test is to setup and test balancing against Grammians.

test_grammian_schur_balancing2()

This test first applies rescaling before doing the Gramian similarity transformations

test_grammian_schur_balancing3()

This third test is to try using triangular matrices to reduce the conditioning of the Grammians, but now limiting the total skew using Cholesky decompositions from the full covariance matrix plus a medium-sized diagonal.

test_pow2_round()

Details

gen_FBNS_FOM_filt_zpk(hp_order=0, lp_order=2)[source][github]
gen_SEI_like_lowpass(lp_order=8)[source][github]
test_grammian_schur_balancing1()[source][github]

This test is to setup and test balancing against Grammians. Both in the Cholesky form and from the full covariance matrix. The goal will be to improve the dynamic range of the covariance matrix form.

Ultimately, this should be incorporated into Ricatti-equation optimal-control solvers to adjust the balancing of their outputs from the intermediate computation of the Grammians. Those have an added complexity that the Grammian may be poorly posed and is composed of two matrices. This test sets up examples before attempting that computation.

test_grammian_schur_balancing2()[source][github]

This test first applies rescaling before doing the Gramian similarity transformations

test_grammian_schur_balancing3()[source][github]

This third test is to try using triangular matrices to reduce the conditioning of the Grammians, but now limiting the total skew using Cholesky decompositions from the full covariance matrix plus a medium-sized diagonal.

Ultimately, this should be incorporated into Ricatti-equation optimal-control solvers to adjust the balancing of their outputs from the intermediate computation of the Grammians. Those have an added complexity that the Grammian may be poorly posed and is composed of two matrices. This test sets up examples before attempting that computation.

test_pow2_round()[source][github]