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.

508 ANHANG B. MATLAB: THE BASICS<br />

fh = @(t,x) (t.^2+4+x)/t; % Definition der Funktion über ein Handle<br />

% Erzeugen der analytischen Lösung im Integrationsintervall an den<br />

% Stützstellen, die auch von der numerischen Lösung benutzt werden<br />

t=[tl:dt:tr];<br />

xanalytisch=t.^2-4+5.*t;<br />

%%%%%%%%%%%%%%<strong>Numerische</strong> Lösung%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br />

x(1)=2; % Randbedingung vorgeben<br />

t2=t-dt/2; % Erstellen des Zwischengitters<br />

x2(1)=x(1)-dt/2*(t(1)^2+4+x(1))/t(1); % Anfangswert des Zwischengitters<br />

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

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

x(i)=x(i-1) + dt*feval(fh,t2(i),x2(i));<br />

end<br />

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

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

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

hold on<br />

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

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

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

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

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

text(1.1,50.,’blau: numerisch’);<br />

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

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

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

hold off<br />

Func: leapfrog<br />

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

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

% Leapfrog-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;<br />

t2=t-dt/2; % Erstellen des Zwischengitters<br />

x2(1)=x(1)-dt/2*feval(f,t(1),x(1)); % Anfangswert des Zwischengitters<br />

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

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

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

end<br />

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

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

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

title(’Leapfrog Verfahren’,’Fontsize’,18);<br />

Skript: rungekuttaskript<br />

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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!