Please note that the recommended version of Scilab is 2024.0.0. This page might be outdated.

See the recommended documentation of this function

# ode_root

ordinary differential equation solver with root finding

### Calling Sequence

[y, rd, w, iw] = ode("root", y0, t0, t [,rtol [,atol]], f [,jac], ng, g [,w,iw])

### Arguments

- y0
a real vector or matrix (initial conditions).

- t0
a real scalar (initial time).

- t
a real vector (times at which the solution is computed).

- f
an external i.e. function or character string or list.

- rtol, atol
a real constants or real vectors of the same size as

`y`

.- jac
an external i.e. function or character string or list.

- w, iw
a real vectors. (INPUT/OUTPUT)

- ng
an integer.

- g
an external i.e. function or character string or list.

- y
a real vector or matrix. (OUTPUT)

- rd
a real vector. (OUTPUT)

### Description

With this syntax (first argument equal to `"root"`

)
`ode`

computes the solution of the differential equation
`dy/dt=f(t,y)`

until the state `y(t)`

crosses the surface `g(t,y)=0`

.

`g`

should give the equation of the surface. It is
an external i.e. a function with specified syntax, or the name of a
Fortran subroutine or a C function (character string) with specified
calling sequence or a list.

If `g`

is a function the syntax should be as
follows:

z = g(t,y)

where `t`

is a real scalar (time) and
`y`

a real vector (state). It returns a vector of size
`ng`

which corresponds to the `ng`

constraints. If `g`

is a character string it refers to
the name of a Fortran subroutine or a C function, with the following
calling sequence: `g(n,t,y,ng,gout)`

where
`ng`

is the number of constraints and
`gout`

is the value of `g`

(output of
the program). If `g`

is a list the same conventions as
for `f`

apply (see ode help).

Ouput `rd`

is a `1 x k`

vector.
The first entry contains the stopping time. Other entries indicate which
components of `g`

have changed sign. `k`

larger than 2 indicates that more than one surface
(`(k-1)`

surfaces) have been simultaneously
traversed.

Other arguments and other options are the same as for
`ode`

, see the ode help.

### Examples

Report an issue | ||

<< ode_optional_output | Calcul différentiel, Intégration | odedc >> |