Euler-Methode fuer Differenzialgleichungen erster Ordnung

Analysis II,  D-MATV/D-MATL 
FS 2009
Giovanni Felder, ETH

In diesem Notebook wird die Euler-Methode zur Loesung des Anfangswertproblems einer Differenzialgleichung erster Ordnung angewendet.
[Shift-Enter in Inputzellen drucken]
Wir betrachten eine Differenzialgleichung von der Form y'=f(x,y). Eingabe der Funktion f (versuchen Sie auch mit anderen Funktionen), der Anfangsbedingung und des Bereichs wo die Loesung berechnet wird:

f[x_,y_]= x Sin[y^2x]
(Subscript[x, 0])=0; (Subscript[y, 0])=0.93 (*Anfangsbedingung*);
(Subscript[x, max])=8; (*Loesung wird im Intervall [(Subscript[x, 0]),(Subscript[x, max])] berechnet*)

Eingabe des Schritts h. Versuchen Sie verschiedene Werte fuer h und vergleichen Sie die Genauigkeit der Loesungen.

h=0.1; 
(*Iteration in der Euler-Methode*)
(Subscript[N, it])=IntegerPart[(Subscript[x, max])/h]+1;y[0]=(Subscript[y, 0]); (*h=Schritt, (Subscript[N, it])=Anzahl Iterationen*)
For[n=0, n<=(Subscript[N, it]),n++,y[n+1]=y[n]+h f[(Subscript[x, 0])+n h,y[n]]]

Graphische Darstellung:.

values=Table[{(Subscript[x, 0])+i h,N[y[i]]},{i,0,(Subscript[N, it])}];
ListPlot[values,PlotStyle->PointSize[0.01]]

Vergleich  mit der Loesung mit eineren raffinierteren numerischen Methode NDSolve

Clear[y]
solution=NDSolve[{y'[x]==f[y[x],x],y[0]==(Subscript[y, 0])},y,{x,(Subscript[x, 0]),(Subscript[x, max])}];
Y=y/.solution[[1]];
Plot[Y[x],{x,(Subscript[x, 0]),(Subscript[x, max])}]