Commit 596700c1 authored by Taddeüs Kroes's avatar Taddeüs Kroes

ModSim ass3 report: Added part about test functions.

parent bf524d64
\documentclass[10pt,a4paper]{article}
\usepackage[dutch]{babel}
\usepackage[utf8]{inputenc}
\usepackage{booktabs,graphicx,float,hyperref}
% Paragraph indentation
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
% Disable hyperref border
\hypersetup{
pdfstartview={FitH}, % fits the width of the page to the window
colorlinks=false, % false: boxed links; true: colored links
}
\title{Modelleren, Simuleren \& Contin\"ue Wiskunde \\
Opdracht 3: Euler, Runge-Kutta, ODE's}
\author{Tadde\"us Kroes (6054129) \and Sander van Veen (6167969)}
\begin{document}
\maketitle
\section{De opdracht}
De opdracht bestaat uit twee delen: het eerste deel betreft het implementeren
van de Euler- en Runge-Kutta-methoden, in het tweede deel worden deze methoden
vergeleken en gebruikt om enkele ODE's te benaderen.
\section{Implementatie}
We hebben de drie methoden volgens de gegeven functievoorschriften
ge\"implementeerd in C (zie het bestand \emph{integration.c}). We hebben daarbij
een ``logger'' gemaakt die een rij waardes naar \texttt{stdout} print. We
gebruiken dit als invoer voor het python-script \emph{plot.py}, dat deze waarden
in een grafiek zet. Een voorbeelduitvoer is:
\begin{verbatim}
$ ./main 5 | ./plot.py gilpin.svg
\end{verbatim}
Dit voert de integratie van ODE nr. 5 (Gilpin's model) uit en plot de resultaten
in een grafiek welke wordt opgeslagen als de afbeelding \emph{gilpin.svg}.
De implementatie van de integratiemethoden zelf is gedaan met behulp van de
pseudocode in het boek. Deze is volgens ons vrij duidelijk en daarom zullen we
er hier niet dieper op ingaan.
\section{Testfuncties}
De testfuncties kunnen worden uitgevoerd met het programma \texttt{./test}
(bestand \emph{test.c}). Dit bestand schrijft de log data naar
\texttt{/dev/null} waardoor alleen de ``custom'' output wordt geprint. De data
op zich vinden we namelijk weinig interessant, we willen vooral weten wat de
waarden op \texttt{t1} zijn.
Van vier van de vijf functies berekenen we de beoogde waarden exact en
vergelijken deze met de waarden die het programma berekent, dit kan omdat de
functies redelijk eenvoudig zijn. Alle methoden benaderen de beoogde waarden
steeds beter naarmate we \texttt{DT} kleiner kiezen, dus concluderen we dat de
methoden correct zijn ge\"implementeerd.
Een apart geval is de vierde testfunctie (\emph{``f = y * y, with t0 starting at
-1 and y0 at 1, integrating to t = 1 (this should not work, why?)''}). Deze
integratie lever voor alle methoden \texttt{INFINITY} op, dit wordt veroorzaakt
door een verkeerd gekozen startwaarde y0.
We zien dat, vooral bij een grote \texttt{DT},
dat Euler verschilt van RK2 en RK4. RK2 ligt redelijk dicht bij RK4, ook bij
niet al te kleine waarden van \texttt{DT}. RK4 ligt het dichtst bij de exacte
waardes, we kunnen dus concluderen dat deze het meest nauwkeurig is (niet
verassend, want RK4 voert de meeste operaties uit).
\section{ODE's}
\subsection{Harmonische oscillator}
\subsection{Damped, forced harmonic oscillator}
\subsection{Lottka-Voltera}
\subsection{Modified predator-prey model}
\subsection{PID controller}
\subsection{Gilpin's Model}
\end{document}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment