> #sfb for cal2 -- 6 Nov 2001 > nextpoint:=proc(f,current,delta) > local oldx, oldy, newx, newy; > oldx:=current[1]; > oldy:=current[2]; > newx:=oldx+delta; > newy:=oldy+eval(f,{x=oldx,y=oldy})*delta; > return [newx,newy]; > end; > eulermethod:=proc(f,initial,delta,n) > local path, current, i; > path:=[initial]; current:=initial; > for i from 1 to n do > current:=nextpoint(f,current,delta); > path:=[op(path),current]; > od; > return path; > end; > a:=eulermethod(2*y,[0,1],0.1,10); > with(plots):with(DEtools): > A:=plot(a,color=red):B:=plot(exp(2*x),x=0..1,color=blue):display(A,B); > #Hmm... C:=fieldplot([1,2*y],x=0..1,y=-1..6,arrows=LINE):display(A,B,C); > E:=dfieldplot(diff(y(x),x)=2*y,y(x),x=0..1,y=-1..6,arrows=LINE,color=green): > display(C,E); > display(A,B,E); > a2:=eulermethod(2*y,[0,1],0.01,100): > A2:=plot(a2,color=black): > display(A,A2,B,E); > E2:=dfieldplot(diff(y(x),x)=2*y,y(x),x=0..1,y=-1..6,arrows=LARGE,color=green): > display(A,A2,B,E2); > E:=dfieldplot(diff(y(x),x)=y(x)*(4-y(x)),y(x),x=0..4,y=-1..5,arrows=LINE,color=green): > display(E); > a:=eulermethod(y*(4-y),[0,1],0.1,40);a2:=eulermethod(y*(4-y),[0,1],0.01,400): > A2:=plot(a2,color=black):display(A,A2,E); > a3:=eulermethod(y*(4-y),[0,5],0.1,40); > a4:=eulermethod(y*(4-y),[0,-1],0.1,40); > A3:=plot(a3,color=red):A4:=plot(a4,color=red):display(A,A3,A4,E); >