Skip to content

minreal retains an exactly unobservable mode in a small realization #1095

Closed as not planned

Description

@baggepinnen

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)                    # 10
size(sminreal(sys).A, 1)                   # 9
size(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

Activity

  1. baggepinnen commented on Oct 23, 2026

    @baggepinnen
    MemberAuthor

    Reproduced directly through MatrixPencils.lsminreal with both fast=false and fast=true. Further investigation is tracked in MatrixPencils.jl issue #21.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions