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
If `C1`, then an additional convention for SISO systems is used, that the `C`-matrix coefficient of real eigenvalues is 1. If `C1 = false`, the `B` and `C` coefficients are chosen in a balanced fashion.
67
71
72
+
`E` is an eigen factorization of `A`.
73
+
68
74
See also [`hess_form`](@ref) and [`schur_form`](@ref)
69
75
"""
70
76
functionmodal_form(sys; C1 =false)
71
-
Ab,T =blockdiagonalize(sys.A)
77
+
Ab,T,E=blockdiagonalize(sys.A)
72
78
# Calling similarity_transform looks like a detour, but this implementation allows modal_form to work with any AbstractStateSpace which implements a custom method for similarity transform
73
79
sysm =similarity_transform(sys, T)
74
80
sysm.A .= Ab # sysm.A should already be Ab after similarity_transform, but Ab has less numerical noise
@@ -100,18 +106,19 @@ function modal_form(sys; C1 = false)
100
106
T = T*T2
101
107
sysm.A .= Ab # Ab unchanged by diagonal T
102
108
end
103
-
sysm, T
109
+
sysm, T, E
104
110
end
105
111
106
112
"""
107
-
sysm, T = schur_form(sys)
113
+
sysm, T, SF = schur_form(sys)
108
114
109
115
Bring `sys` to Schur form.
110
116
111
117
The Schur form is characterized by `A` being Schur with the real values of eigenvalues of `A` on the main diagonal. `T` is the similarity transform applied to the system such that
112
118
```julia
113
119
sysm ≈ similarity_transform(sys, T)
114
120
```
121
+
`SF` is the Schur-factorization of `A`.
115
122
116
123
See also [`modal_form`](@ref) and [`hess_form`](@ref)
117
124
"""
@@ -124,14 +131,15 @@ function schur_form(sys)
124
131
end
125
132
126
133
"""
127
-
sysm, T = hess_form(sys)
134
+
sysm, T, HF = hess_form(sys)
128
135
129
136
Bring `sys` to Hessenberg form form.
130
137
131
138
The Hessenberg form is characterized by `A` having upper Hessenberg structure. `T` is the similarity transform applied to the system such that
132
139
```julia
133
140
sysm ≈ similarity_transform(sys, T)
134
141
```
142
+
`HF` is the Hessenberg-factorization of `A`.
135
143
136
144
See also [`modal_form`](@ref) and [`schur_form`](@ref)
sysr, hs, info = baltrunc_coprime(sys; residual = false, n = missing, factorization::F = DescriptorSystems.glcf, kwargs...)
91
95
92
96
Compute a balanced truncation of the left coprime factorization of `sys`.
93
97
See [`baltrunc2`](@ref) for additional keyword-argument help.
@@ -96,15 +100,19 @@ See [`baltrunc2`](@ref) for additional keyword-argument help.
96
100
- `factorization`: The function to perform the coprime factorization. A normalized factorization may be used by passing `RobustAndOptimalControl.DescriptorSystems.gnlcf`.
97
101
- `kwargs`: Are passed to `DescriptorSystems.gbalmr`
98
102
"""
99
-
functionbaltrunc_coprime(sys; residual=false, n=missing, factorization::F= DescriptorSystems.glcf, kwargs...) where F
100
-
N,M =factorization(dss(sys))
101
-
nu =size(N.B, 2)
102
-
A,E,B,C,D = DescriptorSystems.dssdata(N)
103
-
NM = DescriptorSystems.dss(A,E,[B M.B],C,[D M.D])
103
+
functionbaltrunc_coprime(sys, info=nothing; residual=false, n=missing, factorization::F= DescriptorSystems.glcf, kwargs...) where F
0 commit comments