Source: https://www.unige.ch/~hairer/poly/chap2.pdf