The examples below are taken from the board problems in class but they are not necessarily in order.
sm212_euler.mws, wdj, 9-2-98
with(plots):
with(DEtools):
eulers_method:=proc(f,x0,y0,h,n::integer)
local a,i,x,y;
x:=x0;
y:=y0;
a:=[[x,y]];
for i from 1 to n do
y:=y+h*f(x,y);
x:=x+h;
a:=[op(a),[x,y]];
od;
RETURN(a);
end;
improved_euler:=proc(f,x0,y0,h,n::integer)
local a,i,x,y;
x:=x0;
y:=y0;
a:=[[x,y]];
for i from 1 to n do
y:=y+(h/2)*(f(x,y)+f(x+h,y+h*f(x,y)));
x:=x+h;
a:=[op(a),[x,y]];
od;
RETURN(a);
end;
#5 y' = xy, y(0)=1
f0:=(x,y)->x*y;
em:=eulers_method(f0,0,1,1/3,3);
iem:=improved_euler(f0,0,1,1/3,3);
evalf(em); evalf(iem);
A0:=listplot(iem0,color=red):
A1:=listplot(iem1,color=blue):
display([A0,A1]);
#4
DEplot(diff(y(x),x)=y(x)*x,y(x),
x=(-0.1)..(1.1),[[y(0)=1]],y=0..2,stepsize=.05);
soln:=dsolve({diff(y(x),x)=y(x)*x,y(0)=1},y(x)):
y0:=t->subs(x=t,rhs(soln)):
y0(x);
evalf(y0(1));
#2 y' = y - x, y(0)=0
f0:=(x,y)->y-x;
em:=eulers_method(f0,0,0,1/3,3);
iem:=improved_euler(f0,0,0,1/3,3);
evalf(em);evalf(iem);
A0:=listplot(iem0,color=red):
A1:=listplot(iem1,color=blue):
display([A0,A1]);
#1 y' = y-x, y(0)=0
DEplot(diff(y(x),x)=y(x)-x,y(x),
x=(-0.1)..(1.1),[[y(0)=0]],y=-2..2,stepsize=.05);
soln:=dsolve({diff(y(x),x)=y(x)-x,y(0)=0},y(x)):
y0:=t->subs(x=t,rhs(soln)):
y0(x);
evalf(y0(1));
#7 y' = y^2 + x, y(0)=0
f0:=(x,y)->y^2+x;
em:=eulers_method(f0,0,0,1/2,2);
iem:=improved_euler(f0,0,0,1/2,2);
evalf(em);evalf(iem);
A0:=listplot(iem0,color=red):
A1:=listplot(iem1,color=blue):
display([A0,A1]);
# 6
DEplot(diff(y(x),x)=y(x)^2+x,y(x),
x=(-0.1)..(1.1),[[y(0)=0]],y=0..1,stepsize=.01);
#3 y' = -xy, y(0)=1, y(0)=-1, y(-1)=0
A1:=DEplot(diff(y(x),x)=-y(x)*x,y(x),
x=-2..2,[[y(0)=1]],y=-5..5,stepsize=.05,thickness=3):
A2:=DEplot(diff(y(x),x)=-y(x)*x,y(x),
x=-2..2,[[y(0)=-1]],y=-5..5,stepsize=.05,thickness=3):
A3:=DEplot(diff(y(x),x)=-y(x)*x,y(x),
x=-2..2,[[y(-1)=0]],y=-5..5,stepsize=.05,thickness=3):
display([A1,A2,A3]);
DEplot(diff(y(x),x)=-y(x)*x,y(x),
x=(-0.1)..(1.1),[[y(0)=1]],y=0..2,stepsize=.05);