from pylab import * from solvers import * # Our system of differential equations f = ( lambda t, y: y[1], # y1' = y2 lambda t, y: -1.0 * y[0] # y2' = -y1 ) # Initial conditions f0 = (1.0, 0.0) # Step size errors = [0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001, 0.000000001] # Interval interval = (0.0, 100.0 * pi) stepsizes = [] for e in errors: print e t, y, err_local, h_adaptive = solver_adaptive(RK4_step, f, f0, interval, e, e*2, 0.3, 750.0) stepsizes.append(mean(h_adaptive)) title("Adaptive Step Size") xlabel("Target error") ylabel("Step size") semilogx(errors, stepsizes) show()