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.

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

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

hold on<br />

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

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

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

title(’Euler-Verfahren Vorwärts’,’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(’Zeit t’,’Fontsize’,14);<br />

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

hold off<br />

Func: eulervorwaerts<br />

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

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

% Euler-Vorwaerts-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 />

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

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

end<br />

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

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

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

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

Skript: eulerrueckskript<br />

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

% Differentialgleichung nach dem Euler’schen Streckenzugverfahren. Als<br />

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

% Festlegung von Integrationsintervall und Schrittweite<br />

clear,clf<br />

% löscht alle alten Variablen<br />

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

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

dt = 0.2; % Schrittweite des numerischen Schemas<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 />

xr(1)=2;<br />

for i=2:length(t); % Euler vorwaerts konventionell<br />

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

end<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!