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
Validate integrator clusters using polynomial coefficients - #1090
The tolerance introduced in ControlSystems.jl#1077 can classify unrelated slow modes as integrators when the candidate multiplicity makes the search radius large. In the supplied example with state dimension 11, the radius reaches approximately 0.862 and includes ten poles, although the matrix is nonsingular. This change returns zero integrators for that example.
The change retains the time-unit-invariant candidate radius and requires the normalized cluster polynomial to be close to z^n: each nonleading coefficient must have magnitude at most n * coefftol, with coefftol = 100eps(T) by default. Checking all coefficients also rejects symmetric slow modes whose centroid is zero. The shared helper applies this validation to transmission zeros as well. It preserves the explicit positional e override and the returned tolerance used by stability and margin calculations.
Regression coverage includes the reported matrix at three time scales, split repeated roots of orders 3–15 in Float32/Float64/BigFloat, symmetric slow modes, integrator excess, and empty/exact-root cases. The docstring describes the coefficient tolerance and the heuristic's limits.
Bumps ControlSystemsBase from 1.25.0 to 1.25.1 for the patch release.
Validation (Julia 1.12.7):
1,029 passing checks across the analysis, frequency-response, time-response, and plotting suites, including 44 new regression checks.
git diff --check.
Hostname: demeter2
Session ID: 01a15eb9-1234-7a03-a4be-7f8814d35ca2
Working directory: /tmp/controlsystems-integrator-clusters
This is an automated message.
Plots were compared to references. 6/11 images have changed, see differences below.
After pulling this PR, please update the reference images by creating a PR to ControlExamplePlots.jl here.
This is an automated message.
Plots were compared to references. 6/11 images have changed, see differences below.
After pulling this PR, please update the reference images by creating a PR to ControlExamplePlots.jl here.
✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.23%. Comparing base (594c0eb) to head (609d3cb). ⚠️ Report is 4 commits behind head on master.
This is an automated message.
Plots were compared to references. 6/11 images have changed, see differences below.
After pulling this PR, please update the reference images by creating a PR to ControlExamplePlots.jl here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The tolerance introduced in ControlSystems.jl#1077 can classify unrelated slow modes as integrators when the candidate multiplicity makes the search radius large. In the supplied example with state dimension 11, the radius reaches approximately 0.862 and includes ten poles, although the matrix is nonsingular. This change returns zero integrators for that example.
The change retains the time-unit-invariant candidate radius and requires the normalized cluster polynomial to be close to
z^n: each nonleading coefficient must have magnitude at mostn * coefftol, withcoefftol = 100eps(T)by default. Checking all coefficients also rejects symmetric slow modes whose centroid is zero. The shared helper applies this validation to transmission zeros as well. It preserves the explicit positionaleoverride and the returned tolerance used by stability and margin calculations.Regression coverage includes the reported matrix at three time scales, split repeated roots of orders 3–15 in Float32/Float64/BigFloat, symmetric slow modes, integrator excess, and empty/exact-root cases. The docstring describes the coefficient tolerance and the heuristic's limits.
Bumps ControlSystemsBase from 1.25.0 to 1.25.1 for the patch release.
Validation (Julia 1.12.7):
git diff --check.Hostname:
demeter2Session ID:
01a15eb9-1234-7a03-a4be-7f8814d35ca2Working directory:
/tmp/controlsystems-integrator-clusters