Skip to content

Commit

Permalink
test differentiability of tf2ss conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
baggepinnen committed Feb 14, 2025
1 parent 455e14b commit e69d2fc
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lib/ControlSystemsBase/src/timeresp.jl
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ end

Base.step(sys::LTISystem, tfinal::Real; kwargs...) = step(sys, _default_time_vector(sys, tfinal); kwargs...)
Base.step(sys::LTISystem; kwargs...) = step(sys, _default_time_vector(sys); kwargs...)
Base.step(sys::TransferFunction, t::AbstractVector; kwargs...) = step(ss(sys, balance=true, minimal=true), t::AbstractVector; kwargs...)
Base.step(sys::TransferFunction, t::AbstractVector; kwargs...) = step(ss(sys, minimal=numeric_type(sys) isa BlasFloat), t::AbstractVector; kwargs...)

"""
y, t, x = impulse(sys[, tfinal])
Expand Down Expand Up @@ -119,7 +119,7 @@ end

impulse(sys::LTISystem, tfinal::Real; kwargs...) = impulse(sys, _default_time_vector(sys, tfinal); kwargs...)
impulse(sys::LTISystem; kwargs...) = impulse(sys, _default_time_vector(sys); kwargs...)
impulse(sys::TransferFunction, t::AbstractVector; kwargs...) = impulse(ss(sys, balance=true, minimal=true), t; kwargs...)
impulse(sys::TransferFunction, t::AbstractVector; kwargs...) = impulse(ss(sys, minimal=numeric_type(sys) isa BlasFloat), t; kwargs...)

"""
result = lsim(sys, u[, t]; x0, method])
Expand Down Expand Up @@ -301,7 +301,7 @@ function lsim(sys::AbstractStateSpace, u::Function, t::AbstractVector;
end


lsim(sys::TransferFunction, args...; kwargs...) = lsim(ss(sys, balance=true, minimal=true), args...; kwargs...)
lsim(sys::TransferFunction, args...; kwargs...) = lsim(ss(sys, minimal=numeric_type(sys) isa BlasFloat), args...; kwargs...)


"""
Expand Down
14 changes: 14 additions & 0 deletions lib/ControlSystemsBase/test/test_implicit_diff.jl
Original file line number Diff line number Diff line change
Expand Up @@ -212,3 +212,17 @@ J2 = fdgrad(difffun, pars)[:]
# @show norm(J1-J2)
@test J1 J2 rtol = 1e-5

## Test differentiation of tf 2 ss conversion

function difffun(pars)
P = tf(1, pars)
sum(abs2, step(P, 0:0.1:10, method=:tustin).y +
impulse(P, 0:0.1:10, method=:tustin).y
)
end

pars = [1.0, 2, 1]

g1 = ForwardDiff.gradient(difffun, pars)
g2 = fdgrad(difffun, pars)
@test g1 g2 rtol = 1e-5

0 comments on commit e69d2fc

Please sign in to comment.