# Numerical Approximation of ODEs

## Contents

• Basic Ideas
• One Step Methods
• Consistency / Stability / Convergence
• Runge-Kutta Methods

## Little Coding Exercise

Use your favorite programming language to

1. Write an implementation of the explicit Euler scheme like
def explicit_euler(f, x0, timegrid):
# f -- the right hand side in x' = f(t, x)
# x0 -- the initial value
# timegrid -- somehow specify the stepsize and the endpoint

# integrate the ODE with explicit Euler

return xN

1. Test it with the ODE \begin{equation} \begin{bmatrix} \dot x \\ \dot y \end{bmatrix} = \begin{bmatrix} e^t y \\ -e^t x \end{bmatrix}, \quad \begin{bmatrix} x(0) \\ y(0) \end{bmatrix} = \begin{bmatrix} \sin (1) \\ \cos(1) \end{bmatrix} \end{equation} on $[0, 3]$ with number of time steps $$N\in{2^{8}, 2^{10}, 2^{14}, 2^{18}}$$ by comparing the computed value of $x_N\approx x(3)$ to the actual value $x(3)=\sin (e^3)$.
2. Implement any Runge-Kutta method of higher-order1 and repeat this numerical study.

# Basics of Numerical Approximation of DAEs

## Contents

• Notions and Notations of RKM
• How to apply an RKM to $E\dot x = Ax+f(t)$
• Explicit Euler fails, Implicit Euler works
• RKM and System Transformations
• Analysis via the Kronecker Normal Form

# Consistency und Convergence for DAEs with Constant Coefficients

• Consistency error – will depend on the $\nu$-index
• Convergence – need extra stability condition
• Stiffly accurate schemes – exact for index-1 DAE parts

# Numerical Methods for Index Reduction

1. For unstructured systems – use the derivative array but compute the projections on the fly.
2. For structured systems like multibody systems (like the pendulum – differentiate the relevant parts, add these equations to the system, and make the system square again by introducing new variables.

1. feel free to use an explicit method of a not so high order. ↩︎