Skip to main content

LUP Student Papers

LUND UNIVERSITY LIBRARIES

Implementation of an Explicit Runge-Kutta Solver With Adaptive Time-Stepping Based On Error Control

Zafari, Adrian LU (2024) In Bachelor's Theses in Mathematical Sciences NUMK11 20231
Centre for Mathematical Sciences
Mathematics (Faculty of Sciences)
Abstract
This work begins by motivating why one would consider using error-based control for a numerical solver. An introduction to some of the preliminary theory for studying numerical methods is given, after which, the relevant theory pertaining to the Runge-Kutta methods and error-based controllers used in this work is covered as well. Furthermore, it is motivated why the solver is implemented the way it is in Python. The effectiveness of the solver is then tested across several different problems including the linear test equation, the double pendulum, a nonlinear ODE problem, and a stiff problem. The results are compared with a benchmark solver from SciPy and are found to be comparable with the solver that is implemented, suffering from... (More)
This work begins by motivating why one would consider using error-based control for a numerical solver. An introduction to some of the preliminary theory for studying numerical methods is given, after which, the relevant theory pertaining to the Runge-Kutta methods and error-based controllers used in this work is covered as well. Furthermore, it is motivated why the solver is implemented the way it is in Python. The effectiveness of the solver is then tested across several different problems including the linear test equation, the double pendulum, a nonlinear ODE problem, and a stiff problem. The results are compared with a benchmark solver from SciPy and are found to be comparable with the solver that is implemented, suffering from relatively small errors. However, it is noted that ill-suited controller parameters caused disturbances in the results in some cases. In the case of the nonlinear ODE problem and stiff test problem, a further comparison is made with a similar implementation in Julia that uses the same error-based controller which presented noteworthy, if inconclusive, findings. A discussion of the considerations made and difficulties that were encountered with the solver in the Python and Julia implementations studied is presented as well. (Less)
Please use this url to cite or link to this publication:
author
Zafari, Adrian LU
supervisor
organization
course
NUMK11 20231
year
type
M2 - Bachelor Degree
subject
keywords
Automatic Control, Runge-Kutta methods, Time-Stepping, Adaptivity, Controller, Initial value problem, Feedback Control, Control Theory
publication/series
Bachelor's Theses in Mathematical Sciences
report number
LUNFNA-4054-2023
ISSN
1654-6229
other publication id
2023:K31
language
English
id
9149706
date added to LUP
2024-04-23 15:32:27
date last changed
2024-04-23 15:32:27
@misc{9149706,
  abstract     = {{This work begins by motivating why one would consider using error-based control for a numerical solver. An introduction to some of the preliminary theory for studying numerical methods is given, after which, the relevant theory pertaining to the Runge-Kutta methods and error-based controllers used in this work is covered as well. Furthermore, it is motivated why the solver is implemented the way it is in Python. The effectiveness of the solver is then tested across several different problems including the linear test equation, the double pendulum, a nonlinear ODE problem, and a stiff problem. The results are compared with a benchmark solver from SciPy and are found to be comparable with the solver that is implemented, suffering from relatively small errors. However, it is noted that ill-suited controller parameters caused disturbances in the results in some cases. In the case of the nonlinear ODE problem and stiff test problem, a further comparison is made with a similar implementation in Julia that uses the same error-based controller which presented noteworthy, if inconclusive, findings. A discussion of the considerations made and difficulties that were encountered with the solver in the Python and Julia implementations studied is presented as well.}},
  author       = {{Zafari, Adrian}},
  issn         = {{1654-6229}},
  language     = {{eng}},
  note         = {{Student Paper}},
  series       = {{Bachelor's Theses in Mathematical Sciences}},
  title        = {{Implementation of an Explicit Runge-Kutta Solver With Adaptive Time-Stepping Based On Error Control}},
  year         = {{2024}},
}