$\newcommand{\R}{\mathbf{R}} \newcommand{\C}{\mathbf{C}} \newcommand{\A}{\mathcal{A}} \newcommand{\cF}{\mathcal{F}} \newcommand{\SPAN}{\text{span}} \newcommand{\B}{\mathcal{B}} \newcommand{\calL}{\mathcal{L}} \renewcommand{\u}{\mathbf{u}} \newcommand{\uu}{\mathbf{u}} \newcommand{\e}{\mathbf{e}} \newcommand{\vv}{\mathbf{v}} \newcommand{\w}{\mathbf{w}} \newcommand{\ww}{\mathbf{w}} \newcommand{\x}{\mathbf{x}} \newcommand{\xx}{\mathbf{x}} \newcommand{\y}{\mathbf{y}} \newcommand{\yy}{\mathbf{y}} \newcommand{\Cbar}{\overline{\mathbf{C}}} \newcommand{\Dbar}{\overline{\mathbf{D}}} \newcommand{\X}{\mathbf{X}} \newcommand{\Y}{\mathbf{Y}}$ \newcommand{\Xbar}{\widehat{\mathbf{X}}} \newcommand{\Ybar}{\widehat{\mathbf{Y}}} \newcommand{\zz}{\mathbf{z}} \renewcommand{\a}{\mathbf{a}} \renewcommand{\aa}{\mathbf{a}} \newcommand{\bb}{\mathbf{b}} \newcommand{\cc}{\mathbf{c}} \newcommand{\ee}{\mathbf{e}} \newcommand{\hh}{\mathbf{h}} \newcommand{\m}{\mathbf{m}} \newcommand{\0}{\mathbf{0}} \newcommand{\ve}[1]{\mathbf{#1}} \newcommand{\col}[1]{\ifmmode\begin{bmatrix}#1\end{bmatrix}\else $\begin{bmatrix}#1\end{bmatrix}$\fi} \newcommand{\scol}[1]{\left[\begin{smallmatrix}#1\end{smallmatrix}\right]} \newcommand{\rref}{\operatorname{rref}} \newcommand{\hide}[1]{{}} \newcommand{\proj}{\operatorname{\mathbf{Proj}}} \newcommand{\Span}{\operatorname{span}} \newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}} \newcommand{\pdt}[2]{\tfrac{\partial #1}{\partial #2}} \newcommand{\pdd}[2]{\dfrac{\partial #1}{\partial #2}} \newcommand{\svdots}{\raisebox{3pt}{$\scalebox{.75}{\vdots}$}} \newcommand{\sddots}{\raisebox{3pt}{$\scalebox{.75}{$\ddots$}$}} \DeclareMathOperator{\Aut}{Aut} \DeclareMathOperator{\Char}{char} \DeclareMathOperator{\Cl}{Cl} \DeclareMathOperator{\codim}{codim} \DeclareMathOperator{\coker}{coker} \DeclareMathOperator{\disc}{disc} \DeclareMathOperator{\dist}{dist} \DeclareMathOperator{\Div}{Div} \DeclareMathOperator{\End}{End} \DeclareMathOperator{\Eth}{Eth} \DeclareMathOperator{\Frac}{Frac} \DeclareMathOperator{\Free}{Free} %\DeclareMathOperator{\frob}{frob} %\DeclareMathOperator{\Gal}{Gal} %\DeclareMathOperator{\genus}{genus} %\DeclareMathOperator{\Hecke}{Hecke} \DeclareMathOperator{\Hom}{Hom} %\DeclareMathOperator{\id}{id} %\DeclareMathOperator{\im}{im} \DeclareMathOperator{\lcm}{lcm} \DeclareMathOperator{\Mat}{Mat} \DeclareMathOperator{\modulo}{\medspace mod} \DeclareMathOperator{\Norm}{N} %\DeclareMathOperator{\nullity}{nullity} \DeclareMathOperator{\ord}{ord} \DeclareMathOperator{\Pic}{Pic} %\DeclareMathOperator{\rank}{rank} \DeclareMathOperator{\red}{red} \DeclareMathOperator{\res}{res} \DeclareMathOperator{\sgn}{sgn} %\DeclareMathOperator{\Span}{span} \DeclareMathOperator{\Spec}{Spec} \DeclareMathOperator{\Split}{Split} \DeclareMathOperator{\Sturm}{Sturm} \DeclareMathOperator{\Supp}{Supp} \DeclareMathOperator{\Tate}{Tate} \DeclareMathOperator{\tors}{tors} %\DeclareMathOperator{\tr}{tr} \DeclareMathOperator{\val}{val} \DeclareMathOperator{\Weil}{Weil} \DeclareMathOperator{\sech}{sech} \newcommand{\adjacent}{\leftrightarrow} \DeclareMathOperator{\GL}{GL} \DeclareMathOperator{\SL}{SL} \DeclareMathOperator{\PGL}{PGL} \DeclareMathOperator{\PSL}{PSL} \DeclareMathOperator{\SO}{SO} \newcommand{\cm}{\text{,}} %\newcommand{\pd}{\text{.}} \newcommand{\n}{\noindent} \newcommand{\Omicron}{\mathrm{O}} \newcommand{\Zeta}{\mathrm{Z}} \renewcommand{\div}{\mathop{\mathrm{div}}} \renewcommand{\Im}{\mathop{\mathrm{Im}}} \renewcommand{\Re}{\mathop{\mathrm{Re}}} \renewcommand{\ss}{\mathop{\mathrm{ss}}} \newcommand{\elliptic}{\mathop{\mathrm{ell}}} \newcommand{\new}{\mathop{\mathrm{new}}} \newcommand{\old}{\mathop{\mathrm{old}}} \newcommand{\Bs}{\boldsymbol} %\newcommand{\ds}{\displaystyle} %\newcommand{\f}{\mathfrak} \newcommand{\s}{\mathcal} %\newcommand{\A}{\mathbb{A}} %\newcommand{\C}{\mathbb{C}} \newcommand{\F}{\mathbb{F}} \newcommand{\Fpbar}{\bar{\mathbb{\F}}_p} \newcommand{\G}{\mathbb{G}} \newcommand{\Gm}{\mathbb{G}_{\mathrm{m}}} \newcommand{\N}{\mathbb{N}} \renewcommand{\P}{\mathbb{P}} \newcommand{\Q}{\mathbb{Q}} %\newcommand{\R}{\mathbb{R}} %\newcommand{\R}{\mathbf{R}} \newcommand{\T}{\mathbb{T}} \newcommand{\V}{\mathcal{V}} \newcommand{\Z}{\mathbb{Z}} \newcommand{\E}{\mathbf{E}} \renewcommand{\H}{\mathrm{H}} \newcommand{\M}{\mathbf{M}} \renewcommand{\S}{\mathbf{S}} \newcommand{\var}{\mathbf{Var}} \newcommand{\eps}{\varepsilon} \newcommand{\erf}{\operatorname{erf}} \newcommand{\rar}{\rightarrow} \newcommand{\lar}{\leftarrow} \newcommand{\hrar}{\hookrightarrow} \renewcommand{\iff}{\Longleftrightarrow} \newcommand{\xrar}{\xrightarrow} \newcommand{\rrar}{\longrightarrow} \newcommand{\mt}{\mapsto} \newcommand{\mmt}{\longmapsto} \newcommand{\angles}[1]{\langle #1\rangle} \newcommand{\ceiling}[1]{\lceil #1\rceil} \newcommand{\floor}[1]{\lfloor #1\rfloor} \newcommand{\set}[2]{\{\,#1\,\,|\,\,#2\,\}} \renewcommand{\emph}{\it} \renewcommand{\em}{\emph} $\newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}$

First-Order ODE System Solver

Visualizing different numerical methods.

Comparing different explicit numerical methods for your favorite 2-dimensional ODE system.

The following will allow you to obtain numerical solutions to first order initial value problems of your own choice.

Here are the things you can enter to get your ODE system:

Note: Use parentheses around function arguments; for example, use sin(y) instead of sin{y}. The parser is provided by math.js. If you are interested, see here for the syntax of the expression parser, see here for a full list of available functions, and see here for a full list of available constants.

ODE System

(Enter functions in terms of $t$, $x$, and $y$; see above for available operations, functions, and constants)


Time Interval $[t_0, t_1]$


Initial Conditions


Step Size
Submit
Result

You can also go to the site below, enter your own ODE system, and see how different numerical methods behave.