Legacy Documentation

Advanced Numerical Methods (2003)

This is documentation for an obsolete product.
Current products and services

 Documentation /  Advanced Numerical Methods /  Introduction /

OverviewOverview

2.1 Quick Reference

For each problem, Advanced Numerical Methods provides more than one (in some cases, several) computationally viable numerical algorithms to enable comparison of relevant features among the algorithms with respect to their efficiency, numerical effectiveness, and accuracy. Alternatively, Advanced Numerical Methods can often select a suitable algorithm automatically, given the size of the problem, the precision of the data, and an a priori estimate of the precision of the solution needed for a particular application.

The implemented algorithms are described in the following lists. These are organized to match the guide contents. Typically, Advanced Numerical Methods supplies functions that operate on the familiar control objects (StateSpace and TransferFunction) from Control System Professional or options for other Control System Professional functions.

Note that this section gives only the most direct syntax to invoke each method. The design of Control System Professional, however, makes the corresponding algorithms immediately available for all related functions. As an example, the new methods for solving the Riccati equations are referenced in the following as the options for the function RiccatiSolve, while the same options can also be chosen for the functions LQRegulatorGains and LQEstimatorGains, which call RiccatiSolve internally and take all the relevant options.

A comprehensive review of the algorithms implemented in Advanced Numerical Methods can be found in Datta (2003). Patel et al. (1994) provides a useful collection of reprinted papers.

Solutions of the Lyapunov and Sylvester Matrix Equations

FilledSmallSquare The Schur method for the Lyapunov equations is implemented as LyapunovSolve[a, b, SolveMethod Rule SchurDecomposition] (continuous-time case) and DiscreteLyapunovSolve[a, b, SolveMethod Rule SchurDecomposition] (discrete-time case).

FilledSmallSquare The Hessenberg-Schur method for the Sylvester equations is implemented as LyapunovSolve[a, b, c, SolveMethod Rule HessenbergSchurDecomposition] (continuous-time case) and DiscreteLyapunovSolve[a, b, c, SolveMethod Rule HessenbergSchurDecomposition] (discrete-time case).

FilledSmallSquare The Cholesky factors of the controllability and observability Gramians of a stable system are computed using CholeskyFactorControllabilityGramian[system] and CholeskyFactorObservabilityGramian[system].

Solutions of the Algebraic Riccati Equations

FilledSmallSquare The Schur method is implemented as RiccatiSolve[a, b, q, r, SolveMethod Rule SchurDecomposition] (continuous-time case) and DiscreteRiccatiSolve[a, b, q, r, SolveMethod Rule SchurDecomposition] (discrete-time case).

FilledSmallSquare The Newton method is implemented as RiccatiSolve[a, b, q,r, SolveMethod Rule Newton,InitialGuess Rule ] (continuous-time case) and DiscreteRiccatiSolve[a, b, q, r, SolveMethod Rule Newton,InitialGuess Rule ] (discrete-time case).

FilledSmallSquare The matrix Sign-function method is implemented as RiccatiSolve[a, b, q, r, SolveMethod Rule MatrixSign] (continuous-time case) and DiscreteRiccatiSolve[a, b, q, r, SolveMethod Rule MatrixSign] (discrete-time case).

FilledSmallSquare The inverse-free method based on generalized eigenvectors is implemented as RiccatiSolve[a, b, q, r, SolveMethod Rule GeneralizedEigendecomposition] (continuous-time case) and DiscreteRiccatiSolve[a, b, q, r, SolveMethod Rule GeneralizedEigendecomposition] (discrete-time case).

FilledSmallSquare The inverse-free method based on generalized Schur decomposition is implemented as RiccatiSolve[a, b, q, r, SolveMethod Rule GeneralizedSchurDecomposition] (continuous-time case) and DiscreteRiccatiSolve[a, b, q, r, SolveMethod Rule GeneralizedSchurDecomposition] (discrete-time case).

Reduction to Controller-Hessenberg and Observer-Hessenberg Forms

FilledSmallSquare Controller-Hessenberg forms are computed by ControllerHessenbergForm[system] and LowerControllerHessenbergForm[system].

FilledSmallSquare Observer-Hessenberg forms are computed by ObserverHessenbergForm[system] and UpperObserverHessenbergForm[system].

Controllability and Observability Tests

FilledSmallSquare Tests of controllability and observability using controller-Hessenberg and observer-Hessenberg forms are performed via Controllable[system, ControllabilityTest Rule FullRankControllerHessenbergBlocks] and Observable[system, ObservabilityTest Rule FullRankObserverHessenbergBlocks].

FilledSmallSquare Tests of controllability and observability of a stable system via positive definiteness of Gramians are performed via Controllable[system, ControllabilityTest Rule PositiveDiagonalCholeskyFactorControllabilityGramian] and Observable[system, ObservabilityTest Rule PositiveDiagonalCholeskyFactorObservabilityGramian].

Pole Assignment

FilledSmallSquare The recursive algorithm is implemented as StateFeedbackGains[system, poles, Method Rule Recursive].

FilledSmallSquare The explicit QR algorithm is implemented as StateFeedbackGains[system, poles, Method Rule QRDecomposition].

FilledSmallSquare The Schur method is implemented as StateFeedbackGains[system, poles, Method Rule SchurDecomposition].

FilledSmallSquare The RQ modification of the recursive single-input algorithm is implemented as StateFeedbackGains[system, poles, Method Rule RecursiveRQDecomposition].

FilledSmallSquare The implicit single-input RQ algorithm is implemented as StateFeedbackGains[system, poles, Method Rule ImplicitRQDecomposition].

FilledSmallSquare The projection technique for the partial pole assignment problem is implemented as StateFeedbackGains[system, {badpoles, goodpoles}] and StateFeedbackGains[system, {, , }], where the length of the list of poles is smaller than the order of the system.

Feedback Stabilization

FilledSmallSquare Constrained feedback stabilization is computed by StateFeedbackGains[system, region], where the available regions are DampingFactorRegion[], SettlingTimeRegion[, ], DampingRatioRegion[], and NaturalFrequencyRegion[], and their intersections.

FilledSmallSquare The Lyapunov algorithms for the feedback stabilization are implemented as StateFeedbackGains[system, region, Method Rule LyapunovShift] and StateFeedbackGains[system, region, Method Rule PartialLyapunovShift].

Design of the Reduced-Order State Estimator (Observer)

FilledSmallSquare The reduced-order state estimator using the pole assignment approach is computed by ReducedOrderEstimator[system, poles].

FilledSmallSquare The reduced-order state estimator via solution of the Sylvester-observer equation using the recursive bidiagonal scheme is computed by ReducedOrderEstimator[system, poles, Method Rule RecursiveBidiagonal] and ReducedOrderEstimator[system, poles, Method Rule RecursiveBlockBidiagonal] (the block version of the scheme).

FilledSmallSquare The reduced-order state estimator via solution of the Sylvester-observer equation using the recursive triangular scheme is computed by ReducedOrderEstimator[system, poles, Method Rule RecursiveTriangular] and ReducedOrderEstimator[system, poles, Method Rule RecursiveBlockTriangular] (the block version of the scheme).

Model Reduction

FilledSmallSquare The Schur method for model reduction is implemented as DominantSubsystem[system, Method Rule SchurDecomposition].

FilledSmallSquare The square-root method is implemented as DominantSubsystem[system, Method Rule SquareRoot].

Model Identification

FilledSmallSquare The system identification from its impulse responses is performed by ImpulseResponseIdentify[response].

FilledSmallSquare The system identification from its frequency responses is performed by FrequencyResponseIdentify[response].

FilledSmallSquare The system identification directly from input-output data is performed by OutputResponseIdentify[u, y].

Miscellaneous Matrix Decompositions and Functions

FilledSmallSquare The generalized Schur decomposition is computed by GeneralizedSchurDecomposition[a, b].

FilledSmallSquare The ordered Schur and generalized Schur decompositions are computed by SchurDecompositionOrdered[a, b, pred] and GeneralizedSchurDecompositionOrdered[{{a, b}, { q, z}}, pred]. SchurDecompositionOrdered[a, b, pred, RealBlockForm Rule True] gives the ordered Schur decomposition in which complex eigenvalues of a real input matrix appear as 2 × 2 real blocks (the new default form for SchurDecompositionOrdered).

FilledSmallSquare The generalized eigenvalues and eigenvectors via the generalized Schur decomposition are computed by GeneralizedEigenvalues[a, b], GeneralizedEigenvectors[a, b], and GeneralizedEigensystem[a, b].

OverviewOverview