#Define the right side of the ODE y'= f(t,y)
def f(t,y):
    return sin(t/2)*y

init_time = 0.0
inity = 1.0
finaltime = 50.0
h = 0.3

load('euler_method.sage')
euler_results = euler_method(f,[init_time,inity],h,finaltime)

load('imp_euler.sage')
impeuler_results = imp_euler(f,[init_time,inity],h,finaltime)

load('rk4_method.sage')
rk4_results = rk4_method(f,[init_time,inity],h,finaltime)

p1 = line(euler_results,rgbcolor=[1,0,0],legend_label='Euler method')
p2 = line(impeuler_results,rgbcolor=[0,1,0],legend_label='Improved Euler')
p3 = line(rk4_results,rgbcolor=[0,0,0],legend_label='RK4')
p = p1+p2+p3
p.set_legend_options(loc='upper center');
p.axes_labels(['$t$','$y(t)$'])
show(p)