<h1>Results</h1>

The point of this program is less to show particular results, but instead to
show how it is done. This we have already demonstrated simply by discussing
the code above. Consequently, the output the program yields is relatively
sparse and consists only of the console output and the solutions given in VTU
format for visualization.

The console output contains both errors and, for some of the methods, the
number of steps they performed:
@code
Explicit methods:
   Forward Euler:            error=1.00883
   Third order Runge-Kutta:  error=0.000227982
   Fourth order Runge-Kutta: error=1.90541e-06

Implicit methods:
   Backward Euler:           error=1.03428
   Implicit Midpoint:        error=0.00862702
   Crank-Nicolson:           error=0.00862675
   SDIRK:                    error=0.0042349

Embedded explicit methods:
   Heun-Euler:               error=0.0073012
                   steps performed=284
   Bogacki-Shampine:         error=0.000408407
                   steps performed=181
   Dopri:                    error=0.000836695
                   steps performed=120
   Fehlberg:                 error=0.00248922
                   steps performed=106
   Cash-Karp:                error=0.0787735
                   steps performed=106
@endcode

As expected the higher order methods give (much) more accurate solutions. We
also see that the (rather inaccurate) Heun-Euler method increased the number of
time steps in order to satisfy the tolerance. On the other hand, the other
embedded methods used a lot less time steps than what was prescribed.
