You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
minreal retains an exactly unobservable mode in a small realization #1095
I am trying to obtain a reliable minimal realization of a process linearization that contains exactly disconnected, unmeasured concentration variables. Numerical minimal reduction retains some of these modes, including an unstable unobservable mode. The same behavior occurs in this small synthetic example, which contains no process-model data:
using ControlSystemsBase, LinearAlgebra, Random
rng =MersenneTwister(1)
n =12
no =9
U =Matrix(qr(randn(rng, no, no)).Q)
Ao = U *Diagonal([0.1; -collect(1.0:no-1)]) * U'
A = [Ao zeros(no, 3); randn(rng, 3, no) 0.1*Matrix{Float64}(I, 3, 3)]
B =randn(rng, n, 2)
C =zeros(2, n)
C[1, 1] =1
C[2, 2] =1
sys =ss(A, B, C, zeros(2, 2))
size(minreal(sys).A, 1) # 10size(sminreal(sys).A, 1) # 9size(minreal(sminreal(sys)).A, 1) # 9
The final three coordinate directions are exactly unobservable: the upper-right block of A and the final three columns of C are zero. Consequently, a minimal realization cannot have dimension greater than nine.
I also tried all combinations of balance = true/false and fast = true/false; each returned dimension ten. Structural reduction before numerical reduction gives the expected dimension. The original process example is substantially more sensitive and gave misleading observability ranks before removing its exact disconnected blocks.
Tested with Julia 1.13.1, ControlSystemsBase 1.25.0, and MatrixPencils 1.9.1. Is there an intended tolerance or reduction workflow for obtaining a reliable result in this situation, beyond explicitly performing structural reduction first?
Host: demeter2 · Session: smallplant-equilibrium-observability · Working directory: /tmp/smallplant-equilibrium
Reproduced directly through MatrixPencils.lsminreal with both fast=false and fast=true. Further investigation is tracked in MatrixPencils.jl issue #21.
Activity
baggepinnen commentedon Oct 23, 2026
Reproduced directly through MatrixPencils.lsminreal with both fast=false and fast=true. Further investigation is tracked in MatrixPencils.jl issue #21.