| dae | R Documentation |
Solves a system of differential algebraic equations; a wrapper around the implemented DAE solvers
dae(y, times, parms, dy, res = NULL, func = NULL,
method = c("mebdfi", "daspk", "radau", "gamd", "bimd"), ...)
y |
the initial (state) values for the DAE system, a vector. If
|
times |
time sequence for which output is wanted; the first
value of |
parms |
vector or list of parameters used in |
dy |
the initial derivatives of the state variables of the DAE system. |
func |
to be used if the model is an ODE, or a DAE written in linearly
implicit form (M y' = f(t, y)).
The return value of |
res |
either an R-function that computes the
residual function F(t,y,y') of the DAE system (the model
defininition) at time If Here The return value of If |
method |
the solver to use, either a string ( |
... |
additional arguments passed to the solvers. |
This is simply a wrapper around the various dae solvers.
See package vignette for information about specifying the model in compiled code.
See the selected integrator for the additional options.
A matrix of class deSolve with up to as many rows as elements in
times and as many
columns as elements in y plus the number of "global" values
returned in the second element of the return from res, plus an
additional column (the first) for the time value. There will be one
row for each element in times unless the integrator returns
with an unrecoverable error. If y has a names attribute, it
will be used to label the columns of the output value.
Karline Soetaert <karline.soetaert@nioz.nl>
ode for a wrapper around the ode solvers,
ode.band for solving models with a banded
Jacobian,
ode.1D for integrating 1-D models,
ode.2D for integrating 2-D models,
ode.3D for integrating 3-D models,
mebdfi, daspk,radau,gamd,bimd, for the dae solvers
diagnostics to print diagnostic messages.
## =======================================================================
## Chemical problem
## =======================================================================
daefun <- function(t, y, dy, parms) {
with (as.list(c(y, dy, parms)), {
res1 <- dA + dAB + lambda * A
res2 <- dAB + dB
alg <- B * A - K * AB
list(c(res1, res2, alg), sumA = A + AB)
})
}
parms <- c(lambda = 0.1, K = 1e-4)
yini <- with(as.list(parms),
c(A = 1, AB = 1, B = K))
dyini <- c(dA = 0, dAB = 0, dB = 0)
times <- 0:100
print(system.time(
out <-dae (y=yini, dy = dyini, times = times, res = daefun,
parms = parms, method = "daspk")
))
plot(out, ylab = "conc.", xlab = "time", lwd = 2)
mtext("IVP DAE", side = 3, outer = TRUE, line = -1)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.