5 Numerical Approximation of DAEs
Numerical Approximation of ODEs
Contents
- Basic Ideas
- One Step Methods
- Consistency / Stability / Convergence
- Runge-Kutta Methods
Lecture 5-0
Little Coding Exercise
Use your favorite programming language to
- 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
- 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)$.
- 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
Lecture 5-1
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
Lecture 5-2
Exercise 4
- Python Script for the “$\kappa$“s:
dae-butcher.py
- Implicit Euler for time-varying DAEs: python file Jupyter Notebook
RKM for (Nonlinear) Semi-explicit DAEs of Index 1
RKM/BDF for (Nonlinear) Semi-explicit DAEs of Index 1/2
Numerical Methods for Index Reduction
- For unstructured systems – use the derivative array but compute the projections on the fly.
- 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.
-
feel free to use an explicit method of a not so high order. ↩︎