>
> f1:=(x,v)->v;
f1 := (x,v) -> v
> f2:=(x,v)->-g/l*sin(x);
g sin(x)
f2 := (x,v) -> - --------
l
> h:=.05;
h := .05
> l:=10;
l := 10
> g:=9.8;
g := 9.8
> xold:=Pi/4;
xold := 1/4 Pi
> vold:=0;
vold := 0
> soln:=0,evalf(Pi/4);
soln := 0, .7853981635
> t:=0;
t := 0
>
soln := 0, .7853981635
t := 0
> for j from 1 to 800 do
> xnew:=evalf(xold+h*f1(xold,vold)):
> vnew:=evalf(vold+h*f2(xold,vold)):
> t:=t+h:
> soln:=soln,t,xnew:
> xold:=xnew:
> vold:=vnew:
> od:
> soln:
> plot1:=plot([soln]):
> t:='t';
t := t
> de1:=diff(x(t),t)=v(t);
d
de1 := ---- x(t) = v(t)
dt
> de2:=diff(v(t),t)=-g/l*sin(x(t));
d
de2 := ---- v(t) = - .9800000000 sin(x(t))
dt
> ss:=dsolve({de1,de2,x(0)=Pi/4,v(0)=0},{x(t),v(t)},numeric);
ss := proc(rkf45_x) ... end
> ss(2);
[t = 2, x(t) = -.2598078029448924, v(t) = -.7129459288917021]
> with(plots):
>
>
> plot2:=odeplot(ss,[t,x(t)],0..40,numpoints=100):
> display([plot1,plot2]);
> xold:=Pi/4;
xold := 1/4 Pi
> vold:=0;
vold := 0
> soln:=0,evalf(Pi/4);
soln := 0, .7853981635
> t:=0;
t := 0
>
> for j from 1 to 800 do
> e1:=xold+h*f1(xold,vold):
> e2:=vold+h*f2(xold,vold):
> xnew:=evalf(xold+h*(f1(xold,vold)+f1(e1,e2))/2):
> vnew:=evalf(vold+h*(f2(xold,vold)+f2(e1,e2))/2):
> t:=t+h:
> soln:=soln,t,xnew:
> xold:=xnew:
> vold:=vnew:
> od:
> plot3:=plot([soln]):
> display([plot1,plot3]);
>