C.2 MATLAB: Runge-Kutta 4. Ordnung Programme } /* Berechnung der Summe */ for (i=1;i
C.4 Prädiktor-Korrektur Methode Programme k 3 = hf (x ′ n + h 3 , y n + 1 ) 6 (k 1 + k 2 ) k 4 = hf (x ′ n + h 2 , y n + 1 ) 8 (k 1 + 3k 3 ) k 5 = hf (x ′ n + h , y n + 1 ) 2 (k 1 − 3k 3 + 4k 4 ) und erhält für y n+1 = y n + 1 (k 6 1 + 4k 4 + k 5 ). Diese Annäherung ist von der gleichen Fehlergrößenordnung wie das Runge-Kutta Verfahren vierter Ordnung aber erlaubt gleichzeitig e<strong>in</strong>e Abschätzung über den gemachten lokalen Fehler, hierbei gilt e = 1 ( k 1 − 9 15 2 k 3 + 4k 4 − 1 ) 2 k 5 . (C.1) Mit dieser Fehlervoraussage ist es möglich e<strong>in</strong>e adaptive Schrittweitensteuerung zu machen. Hierbei muss nur die Fehlerschranke festg<strong>el</strong>egt werden. Arbeitet man mit e<strong>in</strong>er festen Fehlerschranke, die <strong>in</strong> den Numerikprogrammen durch die Toleranz vorgegeben wird, dann arbeiten die Programme <strong>in</strong> den meisten Fällen mit der ” step doubl<strong>in</strong>g“-Methode. C.4 Prädiktor-Korrektur Methode Die <strong>in</strong> Abschnitt 3.3.4 vorgest<strong>el</strong>lte Methode um mitt<strong>el</strong>s e<strong>in</strong>es Prädiktionswertes und anschliessender Korrektur den nächsten Zustand verherzusagen, lässt sich <strong>in</strong> MATLAB r○ durch die folgenden Funktionen implementieren. Hierbei hat man mehrer Prädiktor- und Korrektorfunktionen zur Auswahl. Je nach Problem müssen diese angepasst werden, an dieser St<strong>el</strong>le seien nur kurz das Euler-Verfahren, das Crank- Nicolson Verfahren und die Simpson Integration (als weitere Möglichkeit der Korrektur) vorgest<strong>el</strong>lt. C.4.1 MATLAB: Prädiktor-Korrektur E<strong>in</strong>e allgeme<strong>in</strong>e Form der Prädiktor-Korrektur Methode lässt sich wie folgt <strong>in</strong> MAT- LAB implementieren (siehe CD predcor.m). function [xout,yout] = predcorr(odefun,xspan,y0,M,pred,corr,varag<strong>in</strong>) % PREDCORR loest e<strong>in</strong>e gegebene ODE mitt<strong>el</strong>s der Praediktor-Korrektur % Methode, wobei x=[x0 xend] das Intervall ist, ueber der % die ODE g<strong>el</strong>oest werden soll. y0 ist dabei der Startwert, % M ist die Anzahl der aequidistanten Schrittweiten zur % Berechnung. Die Funktion ODEFUN(X,Y) liefert dabei nach % y’=f(x,y) die Werte fuer f(x,y). Pred und corr s<strong>in</strong>d die % verwendeten Praediktor und Korrektor Methoden, diesen werden % die zusaetzlichen Parameter P1, P2,... uebergeben. H=(xspan(2)-yspan(1))/M; xx=[tspan(1):H:tspan(2)]; u=y0; [n,m]=size(u); if n~=m, u=u’; end for x = xx(1:end-1) y = u(:,end); fn = feval(odefun,x,y,vararg<strong>in</strong>{:}); upre = feval(pred,x,y,H,fn); 59