import Plots as plt function odeRK4(f, y0, t) ns = length(t)-1 y = zeros(ns+1) y[1] = y0 for k in 1:ns h = t[k+1]-t[k] S1 = f(y[k],t[k]) S2 = f(y[k]+0.5*h*S1, t[k]+0.5*h) S3 = f(y[k]+0.5*h*S2, t[k]+0.5*h) S4 = f(y[k]+ h*S3, t[k]+ h) y[k+1] = y[k] + h/6*(S1 + 2*S2 + 2*S3 + S4) end return y end function odeEE(f, y0, t) ns = length(t)-1 y = zeros(ns+1) y[1] = y0 for k in 1:ns h = t[k+1]-t[k] y[k+1] = y[k] + h*f(y[k],t[k]) end return y end f(y,t) = -y #---------------------- y0 = 1.0 tend = 5.0 t = LinRange(0,tend,11) #---------------------- y_RK4 = odeRK4(f,y0,t) y_EE = odeEE(f,y0,t) tt = LinRange(0,tend,100) y_Exact = exp.(-tt); plt.resetfontsizes(); plt.scalefontsizes(1.5) plt.plot(tt,y_Exact, label="exact", color="black") plt.scatter!(t, y_RK4, label="RK4") plt.scatter!(t, y_EE, label="EE", markershape=:utriangle) plt.plot!(background_color_legend=nothing, foreground_color_legend=nothing) plt.plot!(ylabel="y", xlabel="t")