Source: https://learn.lboro.ac.uk/archive/olmp/olmp_resources/pages/workbooks_1_50_jan2008/Workbook20/20_4_solving_diffrntl_equatins.pdf