Hessenberg factorization

Hello,

To compute the frequency response of a linear system

\dot{x} = Ax + Bu
y = Cx

where A is a square matrix, one should compute G(s) = C(sI - A)\backslash B for several complex values s.

This can be done efficiently [1] with a Hessenberg factorization A = QHQ^*, since then
G(s) = CQ(sI - H)\backslash (Q^*B), where (sI - H) is Hessenberg.

There is the LinearAlgebra.Hessenberg object but I can’t find any method for an efficient \ with the Hessenberg matrix that it contains. I guess I’m missing something? Thanks

[1] Laub, Alan. “Efficient multivariable frequency response computations.” IEEE Transactions on Automatic Control 26.2 (1981)

It seems to be in GenericLinearAlgebra GenericLinearAlgebra.jl/eigenGeneral.jl at dcb6b7512c66a5cfab472721e519bbdb70856f18 · JuliaLinearAlgebra/GenericLinearAlgebra.jl · GitHub

5 Likes

Update: more efficient solvers for shifted Hessenberg systems are coming:

https://github.com/JuliaLang/julia/pull/31853

4 Likes