Copyright | (c) Alberto Ruiz 2010 |
---|---|

License | GPL |

Maintainer | Alberto Ruiz |

Stability | provisional |

Safe Haskell | None |

Language | Haskell98 |

Solution of ordinary differential equation (ODE) initial value problems.

http://www.gnu.org/software/gsl/manual/html_node/Ordinary-Differential-Equations.html

A simple example:

import Numeric.GSL.ODE import Numeric.LinearAlgebra import Graphics.Plot(mplot) xdot t [x,v] = [v, -0.95*x - 0.1*v] ts = linspace 100 (0,20 :: Double) sol = odeSolve xdot [10,0] ts main = mplot (ts : toColumns sol)

- odeSolve :: (Double -> [Double] -> [Double]) -> [Double] -> Vector Double -> Matrix Double
- odeSolveV :: ODEMethod -> Double -> Double -> Double -> (Double -> Vector Double -> Vector Double) -> Vector Double -> Vector Double -> Matrix Double
- odeSolveVWith :: ODEMethod -> StepControl -> Double -> (Double -> Vector Double -> Vector Double) -> Vector Double -> Vector Double -> Matrix Double
- data ODEMethod
- type Jacobian = Double -> Vector Double -> Matrix Double
- data StepControl

# Documentation

:: (Double -> [Double] -> [Double]) | x'(t,x) |

-> [Double] | initial conditions |

-> Vector Double | desired solution times |

-> Matrix Double | solution |

A version of `odeSolveV`

with reasonable default parameters and system of equations defined using lists.

:: ODEMethod | |

-> Double | initial step size |

-> Double | absolute tolerance for the state vector |

-> Double | relative tolerance for the state vector |

-> (Double -> Vector Double -> Vector Double) | x'(t,x) |

-> Vector Double | initial conditions |

-> Vector Double | desired solution times |

-> Matrix Double | solution |

A version of `odeSolveVWith`

with reasonable default step control.

:: ODEMethod | |

-> StepControl | |

-> Double | initial step size |

-> (Double -> Vector Double -> Vector Double) | x'(t,x) |

-> Vector Double | initial conditions |

-> Vector Double | desired solution times |

-> Matrix Double | solution |

Evolution of the system with adaptive step-size control.

Stepping functions

RK2 | Embedded Runge-Kutta (2, 3) method. |

RK4 | 4th order (classical) Runge-Kutta. The error estimate is obtained by halving the step-size. For more efficient estimate of the error, use the embedded methods. |

RKf45 | Embedded Runge-Kutta-Fehlberg (4, 5) method. This method is a good general-purpose integrator. |

RKck | Embedded Runge-Kutta Cash-Karp (4, 5) method. |

RK8pd | Embedded Runge-Kutta Prince-Dormand (8,9) method. |

RK2imp Jacobian | Implicit 2nd order Runge-Kutta at Gaussian points. |

RK4imp Jacobian | Implicit 4th order Runge-Kutta at Gaussian points. |

BSimp Jacobian | Implicit Bulirsch-Stoer method of Bader and Deuflhard. The method is generally suitable for stiff problems. |

RK1imp Jacobian | Implicit Gaussian first order Runge-Kutta. Also known as implicit Euler or backward Euler method. Error estimation is carried out by the step doubling method. |

MSAdams | A variable-coefficient linear multistep Adams method in Nordsieck form. This stepper uses explicit Adams-Bashforth (predictor) and implicit Adams-Moulton (corrector) methods in P(EC)^m functional iteration mode. Method order varies dynamically between 1 and 12. |

MSBDF Jacobian | A variable-coefficient linear multistep backward differentiation formula (BDF) method in Nordsieck form. This stepper uses the explicit BDF formula as predictor and implicit BDF formula as corrector. A modified Newton iteration method is used to solve the system of non-linear equations. Method order varies dynamically between 1 and 5. The method is generally suitable for stiff problems. |

data StepControl Source #

Adaptive step-size control functions