%-----------------------------------------------------------------------
\chapter{Conclusion}
\label{chap:conclusion}
%-----------------------------------------------------------------------

% Summary of contents
One-step methods including Euler's explicit method, Euler's implicit method, the trapezium rule method and the four-stage Runge-Kutta method were implemented in the software. Other than one-step methods, a predictor-corrector method and two adaptive methods were implemented. The example notebooks provided in Appendix~\ref{chap:link} show that the numerical methods converge for the test problem Eqs.~\eqref{eqn:example_model}-\eqref{eqn:example-end}. Moreover, the orders of accuracy of the one-step methods computed from the test problem Eqs.~\eqref{eqn:example_model}-\eqref{eqn:example-end} are in line with their respective theoretical order of accuracy. While there are no orders of accuracy for the adaptive methods, the accuracy of the method increases with the decrease in tolerance values. These also show that the implemented methods are convergent.

A robust software of ODE solvers is constructed, which includes documentation, version control and testing. The details of the package are documented and available at one of the links in Appendix~\ref{chap:link}. The version control tracks all changes made to the code. The unit testing of the software achieved 100\% code coverage. It tests the initialisation of problem and functionality of methods. These features will allow easier re-use and maintenance of the code, and provide confidence in the correctness of the code.

The software is applied to Fitzhugh-Nagumo model, a model of excitable system. Solutions from various numerical methods exhibit the fast-slow phase and the excitability property of the model. A convergence analysis shows that the numerical solutions are convergent. The adaptive method adapts the mesh points according to the changes in the variable. Moreover, the smaller the tolerance value, the higher the accuracy for adaptive methods.

% Lesson learnt
From this course, I learned about the numerical methods of solving ODEs, especially the theory behind the methods and their orders of accuracy. It provides a basis to choose appropriate methods while solving ODE systems. This knowledge will also give me insight when problems arise in numerical solutions of ODE system. Moreover, while implementing the numerical methods, I realised the difference and difficulty in actual implementation, such as usage of fixed point iteration in solving implicit methods and computation of truncation error. Additionally, the reading on Fitzhugh-Nagumo model helps me in the background knowledge of my D.Phil.~project. I understood the features and properties of Fitzhugh-Nagumo model and excitable systems in general. Finally, having experience in creating a software is really helpful in practicing the software engineering techniques for my D.Phil.~project.
