Giter VIP home page Giter VIP logo

ode.jl's Introduction

Various basic Ordinary Differential Equation solvers implemented in Julia.

Join the chat at https://gitter.im/JuliaDiffEq/Lobby Travis AppVeyor Coverage Status

Pull requests are always highly welcome to fix bugs, add solvers, or anything else!

Current status of the project

This project is deprecated in favor of DifferentialEquations.jl and its ODE solvers OrdinaryDiffEq.jl. This library is in "maitanance mode", meaning that it is being upgraded with each Julia version, but not seeing active feature development. ODE.jl contains the basic functionality that was moved here when the package was originally moved from Base. Although quite poorly tested, at least some of the functionality is quite reliable. Use at your own risk.

Usage On the Common Interface

The ODE.jl methods can be used on the common interface. Simply use the solver's name as the algorithm. For example, the ODE tutorial can be solved using ODE.jl's ode45 by using the following commands:

using ODE
f(u,p,t) = 1.01*u
u0=1/2
tspan = (0.0,1.0)
prob = ODEProblem(f,u0,tspan)
sol = solve(prob,ode45(),reltol=1e-8,abstol=1e-8)
using Plots
plot(sol,linewidth=5,title="Solution to the linear ODE with a thick line",
     xaxis="Time (t)",yaxis="u(t) (in μm)",label="My Thick Line!") # legend=false
plot!(sol.t, t->0.5*exp(1.01t),lw=3,ls=:dash,label="True Solution!")

Note that ODE.jl does not natively support inplace updates. Inplace functions f(t,u,du) are converted to out-of-place functions du=f(t,u) and thus it will not be any more efficient.

Basic API

All of the ODE.jl solvers the following basic API:

tout, yout = odeXX(F, y0, tspan; keywords...)

to solve the explicitly defined ODE by dy/dt = F(t,y). A few other solvers are also exported, see the source code for details.

The adaptive solvers accept the following keywords

  • norm: user-supplied norm for determining the error E (default Base.vecnorm),
  • abstol and/or reltol: an integration step is accepted if E <= abstol || E <= reltol*abs(y) (defaults reltol = 1e-5, abstol = 1e-8),
  • maxstep, minstep and initstep: determine the maximal, minimal and initial integration step (defaults minstep=|tspan[end] - tspan[1]|/1e9, maxstep=|tspan[end] - tspan[1]|/2.5 and automatic initial step estimation).
  • points=:all (default): output is given for each value in tspan as well as for each intermediate point the solver used.
  • points=:specified: output is given only for each value in tspan.

Additionally, ode23s solver supports

  • jacobian = G(t,y): user-supplied Jacobian G(t,y) = dF(t,y)/dy (default estimate by finite-difference method).

There are also fixed step Runge-Kutta and Rosenbrock solvers available.

Available Solvers

Currently, ODE exports the following adaptive solvers:

  • ode23: 2nd order adaptive solver with 3rd order error control, using the Bogacki–Shampine coefficients
  • ode45: 4th order adaptive solver with 5th order error control, using the Dormand Prince coefficients. Fehlberg and Cash-Karp coefficients are also available.
  • ode78: 7th order adaptive solver with 8th order error control, using the Fehlberg coefficients.
  • ode23s: 2nd/3rd order adaptive solver for stiff problems, using a modified Rosenbrock triple.

For a full list, see the DiffEqDocs ODE Solvers page.

Examples

The examples directory contain a few notebooks that show how to get started. You can also see them here:

ode.jl's People

Contributors

acroy avatar andreasnoack avatar asinghvi17 avatar aviks avatar chrisrackauckas avatar femtocleaner[bot] avatar github-actions[bot] avatar iainnz avatar ivarne avatar jakebolewski avatar jgoldfar avatar jiahao avatar jpfairbanks avatar juliatagbot avatar kshyatt avatar magistere avatar marius311 avatar mauro3 avatar mweastwood avatar pao avatar pjpmarques avatar ranocha avatar ryanpdwyer avatar scottpjones avatar staticfloat avatar tkelman avatar vaibhavdixit02 avatar viralbshah avatar vtjnash avatar yuyichao avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.