R: General steady-state solver for a set of ordinary...

steady {rootSolve} | R Documentation

## General steady-state solver for a set of ordinary differential equations.

### Description

Estimates the steady-state condition for a system of ordinary differential equations.

This is a wrapper around steady-state solvers `stode`, `stodes` and `runsteady`.

### Usage

    steady(y, time = NULL, func, parms = NULL, method = "stode", times = time, ...)

### Arguments

`y` | the initial guess of (state) values for the ODE system, a vector. If `y` has a name attribute, the names will be used to label the output matrix.
`time, times` | time for which steady-state is wanted; the default is `times=0` (for `method = "stode"` or `method = "stodes"`, and `times = c(0,Inf)` for `method = "runsteady"`. (note- since version 1.7, 'times' has been added as an alias to 'time').
`func` | either an R-function that computes the values of the derivatives in the ode system (the model defininition) at time `time`, or a character string giving the name of a compiled function in a dynamically loaded shared library. If `func` is an R-function, it must be defined as: `yprime = func(t, y, parms,...)`. `t` is the current time point in the integration, `y` is the current estimate of the variables in the ODE system. If the initial values `y` has a names attribute, the names will be available inside `func`. `parms` is a vector or list of parameters; ... (optional) are any other arguments passed to the function. The return value of `func` should be a list, whose first element is a vector containing the derivatives of `y` with respect to `time`, and whose next elements are global values whose steady-state value is also required. The derivatives should be specified in the same order as the state variables `y`.
`parms` | parameters passed to `func`.
`method` | the solution method to use, one of `stode`, `stodes` or `runsteady`.
`...` | additional arguments passed to function `stode`, `stodes` or `runsteady`.

### Details

This is simply a wrapper around the various steady-state solvers.

See package vignette for information about specifying the model in compiled code.

See the selected solver for the additional options.

### Value

A list containing

`y` | a vector with the state variable values from the last iteration during estimation of steady-state condition of the system of equations. If `y` has a names attribute, it will be used to label the output values.
`...` | the number of "global" values returned.

The output will have the attribute `steady`, which returns `TRUE`, if steady-state has been reached and the attribute `precis` with the precision attained during each iteration.

### Author(s)

Karline Soetaert <karline.soetaert@nioz.nl>

### See Also

`steady.band`, to find the steady-state of ODE models with a banded Jacobian

`steady.1D`, `steady.2D`, `steady.3D`, steady-state solvers for 1-D, 2-D and 3-D partial differential equations.

`stode`, iterative steady-state solver for ODEs with full or banded Jacobian.

`stodes`, iterative steady-state solver for ODEs with arbitrary sparse Jacobian.

`runsteady`, steady-state solver by dynamically running to steady-state

### Examples

    ## =======================================================================
    ##  Bacteria (Bac) growing on a substrate (Sub)
    ## =======================================================================

    model <- function(t, state, pars) {
      with (as.list(c(state,pars)), {
      #       substrate uptake             death  respiration
      dBact = gmax*eff*Sub/(Sub+ks)*Bact - dB*Bact - rB*Bact
      dSub  =-gmax    *Sub/(Sub+ks)*Bact + dB*Bact          +input

      return(list(c(dBact, dSub)))
                                    })
    }

    pars <- list(gmax = 0.5,eff = 0.5,
                 ks = 0.5, rB = 0.01, dB = 0.01, input = 0.1)
      # Newton-Raphson
    steady(y = c(Bact = 0.1, Sub = 0), time = 0,
           func = model, parms = pars, pos = TRUE)

      # Dynamic run to steady-state
    as.data.frame(steady(y = c(Bact = 0.1, Sub = 0), time = c(0, 1e5),
                         func = model, parms = pars, method = "runsteady"))

[Package rootSolve version 1.7 Index]