Skip to content

Commit f3f7e4e

Browse files
authored
Merge pull request #592 from JuliaControl/baltrunc_disc
fix for discrete systems in baltrunc
2 parents 77b3932 + d26f619 commit f3f7e4e

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/matrix_comps.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -540,16 +540,17 @@ function baltrunc(sys::ST; atol = sqrt(eps()), rtol = 1e-3, n = nothing, residua
540540
A11 = A[i1, i1]
541541
A12 = A[i1, i2]
542542
A21 = A[i2, i1]
543-
A22 = A[i2, i2]
543+
A22 = -A[i2, i2]
544+
isdiscrete(sys) && (A22 += I)
544545
B1 = B[i1, :]
545546
B2 = B[i2, :]
546547
C1 = C[:, i1]
547548
C2 = C[:, i2]
548549
A2221 = A22\A21
549-
A = A11 - A12*(A2221)
550-
B = B1 - (A12/A22)*B2
551-
C = C1 - C2*A2221
552-
D = D - (C2/A22)*B2
550+
A = A11 + A12*(A2221)
551+
B = B1 + (A12/A22)*B2
552+
C = C1 + C2*A2221
553+
D = D + (C2/A22)*B2
553554
else
554555
A = sysbal.A[i1,i1]
555556
B = sysbal.B[i1,:]

test/test_simplification.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,9 @@ y2,x2 = step(sysmin,t)[[1,3]]
6868
@test sysr.nx == 3
6969
@test dcgain(sysr)[] dcgain(sys)[] rtol=1e-10
7070

71+
sys = c2d(sys, 0.01)
72+
sysr,Σ = baltrunc(sys, n=3, residual=true)
73+
@test sysr.nx == 3
74+
@test dcgain(sysr)[] dcgain(sys)[] rtol=1e-10
7175

7276
end

0 commit comments

Comments
 (0)