@@ -39,12 +39,13 @@ julia> linmodel.A
3939"""
4040function linearize (model:: NonLinModel ; x= model. x, u= model. uop, d= model. dop)
4141 u0, d0 = u - model. uop, d - model. dop
42- y = model. h (x, d0) + model. yop
43- A = ForwardDiff. jacobian (x -> model. f (x, u0, d0), x)
44- Bu = ForwardDiff. jacobian (u0 -> model. f (x, u0, d0), u0)
45- Bd = ForwardDiff. jacobian (d0 -> model. f (x, u0, d0), d0)
46- C = ForwardDiff. jacobian (x -> model. h (x, d0), x)
47- Dd = ForwardDiff. jacobian (d0 -> model. h (x, d0), d0)
42+ xnext, y = similar (x), similar (model. yop)
43+ y = model. h! (y, x, d0) .+ model. yop
44+ A = ForwardDiff. jacobian ((xnext, x) -> model. f! (xnext, x, u0, d0), xnext, x)
45+ Bu = ForwardDiff. jacobian ((xnext, u0) -> model. f! (xnext, x, u0, d0), xnext, u0)
46+ Bd = ForwardDiff. jacobian ((xnext, d0) -> model. f! (xnext, x, u0, d0), xnext, d0)
47+ C = ForwardDiff. jacobian ((y, x) -> model. h! (y, x, d0), y, x)
48+ Dd = ForwardDiff. jacobian ((y, d0) -> model. h! (y, x, d0), y, d0)
4849 linmodel = LinModel (A, Bu, C, Bd, Dd, model. Ts)
4950 setop! (linmodel, uop= u, yop= y, dop= d)
5051 return linmodel
0 commit comments