R: Shooting Method

shooting {pracma} | R Documentation

## Shooting Method

### Description

The shooting method solves the boundary value problem for second-order differential equations.

### Usage

    shooting(f, t0, tfinal, y0, h, a, b,
             itermax = 20, tol = 1e-6, hmax = 0)

### Arguments

`f` | function in the differential equation y'' = f(x, y, y').
`t0, tfinal` | start and end points of the interval.
`y0` | starting value of the solution.
`h` | function defining the boundary condition as a function at the end point of the interval.
`a, b` | two guesses of the derivative at the start point.
`itermax` | maximum number of iterations for the secant method.
`tol` | tolerance to be used for stopping and in the `ode45` solver.
`hmax` | maximal step size, to be passed to the solver.

### Details

A second-order differential equation is solved with boundary conditions `y(t0) = y0` at the start point of the interval, and `h(y(tfinal), dy/dt(tfinal)) = 0` at the end. The zero of `h` is found by a simple secant approach.

### Value

Returns a list with two components, `t` for grid (or ‘time’) points between `t0` and `tfinal`, and `y` the solution of the differential equation evaluated at these points.

### Note

Replacing secant with Newton's method would be an easy exercise. The same for replacing `ode45` with some other solver.

### References

L. V. Fausett (2008). Applied Numerical Analysis Using MATLAB. Second Edition, Pearson Education Inc.

### See Also

`bvp`

### Examples

    #-- Example 1
    f <- function(t, y1, y2) -2*y1*y2
    h <- function(u, v) u + v - 0.25

    t0 <- 0; tfinal <- 1
    y0 <- 1
    sol <- shooting(f, t0, tfinal, y0, h, 0, 1)
    ## Not run:
    plot(sol$t, sol$y[, 1], type='l', ylim=c(-1, 1))
    xs <- linspace(0, 1); ys <- 1/(xs+1)
    lines(xs, ys, col="red")
    lines(sol$t, sol$y[, 2], col="gray")
    grid()
    ## End(Not run)

    #-- Example 2
    f <- function(t, y1, y2) -y2^2 / y1
    h <- function(u, v) u - 2
    t0 <- 0; tfinal <- 1
    y0 <- 1
    sol <- shooting(f, t0, tfinal, y0, h, 0, 1)

[Package pracma version 2.0.4 Index]