12.02.2014 Aufrufe

Mathematik für Physiker - Numerische Physik: Modellierung

Mathematik für Physiker - Numerische Physik: Modellierung

Mathematik für Physiker - Numerische Physik: Modellierung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

B.6. MATLAB SKIPTE, FUNKTIONEN UND GUIS: QUELLCODE 507<br />

for i=2:length(t); % Euler rueckwaerts als modifiziertes Euler-Verfahren<br />

xp(i)=xr(i-1) + dt*feval(fh,t(i-1),xr(i-1));<br />

xr(i)=xr(i-1) + dt*feval(fh,t(i),xp(i));<br />

end<br />

%%%%%%%%%%%%%%%Ende numerische Lösung%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br />

% Darstellung von numerischer und analytischer Lösung<br />

clf<br />

subplot(2,1,1), plot(t,xanalytisch,’-r’); % analytische Lösung in rot<br />

hold on<br />

plot(t,x,’:ob’);<br />

plot(t,xr,’:vg’);<br />

xlabel(’x-Achse’,’Fontsize’,14);<br />

ylabel(’y-Achse’,’Fontsize’,14);<br />

title(’Euler-Verfahren Vor und Rückwärts’,’Fontsize’,18);<br />

text(1.1,55.,’rot: analytisch’);<br />

text(1.1,50.,’blau: Euler vorwärts’);<br />

text(1.1,45.,’grün: Euler rückwärts’);<br />

subplot(2,1,2),plot(t,abs((x-xanalytisch)./xanalytisch),’:ob’);<br />

hold on<br />

plot(t,abs((xr-xanalytisch)./xanalytisch),’:vg’);<br />

xlabel(’x-Achse’,’Fontsize’,14);<br />

ylabel(’relative Abweichung’,’Fontsize’,14);<br />

hold off<br />

Func: eulerrueckwaerts<br />

function [t,x] = eulerrueckwaerts(f,a,b,dt,x0)<br />

% Funktion zur Lösung einer DGL der Form dot(x)=f mit Hilfe des<br />

% Euler-Rueckwaerts-Verfahrens.<br />

% Eingabe: Funktion f<br />

% Integrationsintervall a, b<br />

% Schrittweite dx<br />

% Anfangswert x0<br />

% Ausgabe: graphisch<br />

% Vektoren t und x<br />

% Aufruf: [t,x] = eulervorwaerts(f,a,b,dx,x0)<br />

t=[a:dt:b]; x(1)=x0; xp(1)=x0;<br />

for i=2:length(t);<br />

xp(i)=x(i-1) + dt*feval(f,t(i-1),x(i-1));<br />

x(i)=x(i-1) + dt*feval(f,t(i),xp(i));<br />

end<br />

plot(t,x,’:ob’);<br />

xlabel(’Zeit t’,’Fontsize’,14);<br />

ylabel(’x’,’Fontsize’,14);<br />

title(’Euler-Verfahren Rueckwaerts’,’Fontsize’,18);<br />

Skript: leapfrogskript<br />

% Beispiel zur numerischen Integration einer gewöhnlichen<br />

% Differentialgleichung nach dem Leapfrog Verfahren. Als<br />

% Beispiel wird die DGL xy’-y=x^2+4<br />

clear;clf<br />

% Festlegung von Integrationsintervall und Schrittweite<br />

tl = 1.; % untere Grenze des Integrationsintervalls<br />

tr = 5.; % obere Grenze des Integrationsintervalls<br />

dt = 0.2; % Schrittweite des numerischen Schemas<br />

c○ M.-B. Kallenrode 13. März 2007

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!