Structural Stability of Multidimensional Discrete Linear Systems
Problem Definition
A multidimensional discrete linear system defined by a multivariate rational transfer function \(G\) is said to be structurally stable if the denominator \(D\) of \(G\) has no zeros in the complex unit polydisc \(\mathbb{U}^n\): \(\mathbb{U}^n = \prod_{k=1}^{n} \{z_k \in \mathbb{C} \, | \, |z_k| \leq 1\}.\)
Reformulation of the Problem
Using results from DeCarlo (1977), the stability condition can be checked through the following conditions:
Each univariate polynomial \(D(z_k,1,\dots,1)\) must have no roots in \(|z_k| \leq 1\) for all \(k = 1, \dots, n\).
The multivariate polynomial \(D(z_1,\dots,z_n)\) must have no roots on the torus \(|z_1| = \dots = |z_n| = 1\).
The first condition can be checked using signed subresultant (Sturm-Habicht) sequences. The second condition is transformed into a real algebraic problem using a Möbius change of variables: \((z_k = \frac{x_k - i}{x_k + i},\) leading to a system \(\{\mathcal{R} = 0, \mathcal{I} = 0\}\) with real polynomials \(\mathcal{R}, \mathcal{I} \in \mathbb{R}[x_1, \dots, x_n]\).
Parametric Case
When \(D\) depends on parameters \(U_1, \dots, U_l\), the goal is to determine for which parameter values the system remains structurally stable. The approach follows:
Compute the Discriminant Variety (DV)
The discriminant variety \(DV\) of the system \(\{\mathcal{R} = 0, \mathcal{I} = 0\}\) with respect to the parameter space projection is computed.
Construct a Cylindrical Algebraic Decomposition (CAD)
A CAD of \(\mathbb{R}^l\) adapted to \(DV\) is computed.
Cells of maximal dimension are identified.
Sample and Solve
A rational sample point is selected in each cell.
The polynomial system is solved at each sample point to determine stability.
Lienard-Chipart Criterion
Additional stability conditions are derived for the univariate polynomials \(D(z_1,1)\) and \(D(1,z_2)\) using the Lienard-Chipart criterion.
Implementation in PACE.jl
To implement this method in PACE.jl
:
DiscriminantVariety.jl
computes the discriminant variety.lienard_chipart()
provides additional stability conditions.PACE.jl
functions are used for sampling in CAD cells.RationalUnivariateRepresentation.jl
andRS.jl
solve polynomial systems.Nemo.jl
is used for polynomial manipulations.
The full implementation is wrapped in the function stability_parametric()
.
begin
import Pkg
Pkg.activate();
using PaceControl, MPFI, Nemo, AbstractAlgebra
end
Example of transfer function depending on two parameters
begin
Rc, (z1,z2,u1, u2) = polynomial_ring(Nemo.ComplexField(), ["z1", "z2", "u1", "u2"])
D = u2*z1*z2 - u1*z2 - u2*z1 + z1*z2 - z1 + 1
end
z1*z2*u2 + z1*z2 - 1.0000000000000000000*z1*u2 - 1.0000000000000000000*z1 - 1.0000000000000000000*z2*u1 + 1
stable, unstable = stability_parametric(D)
(Any[Rational{BigInt}[0, -1]], Any[Rational{BigInt}[-7//2, -11//4], Rational{BigInt}[-7//2, -1], Rational{BigInt}[-7//2, 3//4], Rational{BigInt}[-2, -2], Rational{BigInt}[-2, -1], Rational{BigInt}[-2, 0], Rational{BigInt}[0, -2], Rational{BigInt}[0, 0], Rational{BigInt}[3//2, -11//4], Rational{BigInt}[3//2, -1], Rational{BigInt}[3//2, 3//4]])
stable
1-element Vector{Any}: Rational{BigInt}[0, -1]
unstable
11-element Vector{Any}: Rational{BigInt}[-7//2, -11//4] Rational{BigInt}[-7//2, -1] Rational{BigInt}[-7//2, 3//4] Rational{BigInt}[-2, -2] Rational{BigInt}[-2, -1] Rational{BigInt}[-2, 0] Rational{BigInt}[0, -2] Rational{BigInt}[0, 0] Rational{BigInt}[3//2, -11//4] Rational{BigInt}[3//2, -1] Rational{BigInt}[3//2, 3//4]