% Runge-Kutta-Oliver, 6-stages, 5th order function y1 = oliver5(FunFcn, x0, y0, h); % 5th order b = [0, 54/133, 32/21, 1/18, -125/114, 1/9]; c = [2/3, 1/6, 3/4, 1, 4/5, 1]’; a = [0, 0, 0, 0, 0, 0; 1/6, 0, 0, 0, 0, 0; -15/8, 21/8, 0, 0, 0, 0; -9, 75/7, -5/7, 0, 0, 0; -3, 34257/8750, -114/875, 19/1250, 0, 0; 0, 123/380, 5/2, 3/20, -75/38, 0]; fun1=feval(FunFcn,x0+c(1)*h, y0); fun2=feval(FunFcn,x0+c(2)*h, y0+c(2)*h*fun1); fun3=feval(FunFcn,x0+c(3)*h, y0+h*(a(3,2)*fun2+a(3,1)*fun1); fun4=feval(FunFcn,x0+c(4)*h, y0+h*(a(4,3)*fun3+a(4,2)*fun2+a(4,1)*fun1)); fun5=feval(FunFcn,x0+c(5)*h, y0+h*(a(5,4)*fun4+a(5,3)*fun3+a(5,2)*fun2+a(5,1)*fun1)); fun6=feval(FunFcn,x0+c(6)*h, y0+h*(a(6,5)*fun5+a(6,4)*fun4+a(6,3)*fun3+a(6,2)*fun2)); y1=y0+h*(b(6)*fun6+b(5)*fun5+b(4)*fun4+b(3)*fun3+b(2)*fun2+b(1)*fun1); return