The Euler method is only first order convergent, i.e., the error of the computed solution is O(h), where h is the time step. This is unacceptably poor, and requires a too small step size to achieve some serious accuracy. For example, if you need one hundred times more accuracy, you will have to take one hundred times as many steps to achieve it.
Heun's method, by contrast, is second order convergent, with an error O(h^2). The improvement is dramatic, and one can almost obtain reasonably accurate results with Heun's method. Using the same example as above, if you need one hundred times more accuracy, you will only have to take ten times as many steps to achieve it, so efficiency is dramatically improved.
All of this was recognized a long time ago by researchers, and the classical Runge-Kutta method (improving on Heun's method) was suggested in 1895. It is 4th order convergent, with an error O(h^4), and can be used for accurate computations. Reduce the step size by a factor of ten, and you get 10,000 times improved accuracy!
Even so, modern Runge-Kutta methods, such as Dormand-Prince and Cash-Karp, which are 5th order convergent and also adjust the step size automatically to the requested accuracy, are far better, and can be used to solve nonstiff initial value problems to very high accuracy. There is even a Dormand-Prince method of order 8.
To fully exploit the benefits of these advanced solvers, one should use standard implementations that offer many features for professional use.
Euler’s method is used as the foundation for Heun’s method. Euler's method uses the line tangent to the function at the beginning of the interval as an estimate of the slope of the function over the interval, assuming that if the step size is small, the error will be small. However, even when extremely small step sizes are used, over a large number of steps the error starts to accumulate and the estimate diverges from the actual functional value.
The accuracy of the Euler method improves only linearly with the step size is decreased, whereas the Heun Method improves accuracy quadratically .The scheme can be compared with the implicit trapezoidal method, but with f(t_{i+1},y_{i+1}) replaced by f(t_{i+1},{\tilde {y}}_{i+1}) in order to make it explicit. {\tilde {y}}_{i+1} is the result of one step of Euler's method on the same initial value problem. So, Heun's method is a predictor-corrector method with forward Euler's method as predictor and trapezoidal method as corrector.
For more details, please see attached file.
References:
[1] Chen, Wenfang.; Kee, Daniel D. (2003), Advanced Mathematics for Engineering and Science, MA, USA: World Scientific, ISBN 981-238-292-5.
The Euler Method is not for serious use; it is only an introductory example^*. For practical problems most people --- which certainly includes everyone which have to ask questions like the above --- should use a standard library routine, easily and freely available in Python Scipy (or in commercial packages like Maple or Mathematica ).
^* With some qualifications with regard to stochastic differential equations
The Euler method is only first order convergent, i.e., the error of the computed solution is O(h), where h is the time step. This is unacceptably poor, and requires a too small step size to achieve some serious accuracy. For example, if you need one hundred times more accuracy, you will have to take one hundred times as many steps to achieve it.
Heun's method, by contrast, is second order convergent, with an error O(h^2). The improvement is dramatic, and one can almost obtain reasonably accurate results with Heun's method. Using the same example as above, if you need one hundred times more accuracy, you will only have to take ten times as many steps to achieve it, so efficiency is dramatically improved.
All of this was recognized a long time ago by researchers, and the classical Runge-Kutta method (improving on Heun's method) was suggested in 1895. It is 4th order convergent, with an error O(h^4), and can be used for accurate computations. Reduce the step size by a factor of ten, and you get 10,000 times improved accuracy!
Even so, modern Runge-Kutta methods, such as Dormand-Prince and Cash-Karp, which are 5th order convergent and also adjust the step size automatically to the requested accuracy, are far better, and can be used to solve nonstiff initial value problems to very high accuracy. There is even a Dormand-Prince method of order 8.
To fully exploit the benefits of these advanced solvers, one should use standard implementations that offer many features for professional use.
The implicit Euler method is A-stable, whereas the region of absolute stability for the explicit Euler method is a small disk. The implicit Euler method is also L-stable, a property denied the trapezoidal method. The implicit Euler method is suitable for stiff equations, the explicit Euler method is not.
There are real life problems where an extremely precise trajectory is irrelevant. A specific example is the calculation of artillery firing solutions. Here we are not particularly interested in the flight path and a "crude" firing solution, (angles and flight-time) can be rapidly obtained by wrapping a Newton type iteration around a low order method such as the explicit Euler method with only a 5-10 time steps pr. trajectory. If pinpoint accuracy is required, the "crude" solution can serve as a extremely good initial guess for a refinement process using a higher order method and/or a smaller time-step. Speed is of essence in the case of close-in weapons systems which are a ship's final line of defense against incoming missiles.