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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

186 KAPITEL 5. INTEGRATION<br />

5.5.2 Trapezformel<br />

§ 723 Bei der Trapezformel wird das Integral durch Trapeze der Breite ∆x und der durch<br />

die Funktionswerte an den Intervallrändern gegebenen Höhen zusammen gesetzt:<br />

M∑ 1<br />

I T =<br />

2 (f(x k) + f(x k−1 )) ∆x .<br />

k=1<br />

§ 724 Die Regeln für die numerische Integration in MatLab entsprechen denen bei der Mittelpunktsformel.<br />

Dort ist nur die zweite Zeile (Vektor der Punkte, an denen der Funktionswert<br />

zu nehmen ist und Verfahren der Bestimmung der Fläche) zu ersetzen durch<br />

x=[a:deltx:b];<br />

for k=1:M;<br />

y(k)=(3*x(k)*x(k) +2 + 3*x(k+1)*x(k+1) + 2)*deltx/2;<br />

end<br />

und wir erhalten als Ergebnis 60.0004, ebenfalls in guter Übereinstimmung mit dem in § 720<br />

gefundenen analytischen Wert. Die Abhängigkeit des Ergebnis von der Schrittweite ist in<br />

folgender Tabelle gegeben:<br />

M 1 2 5 10 20 50 100 200 500<br />

∆x 2 1 0.4 0.2 0.1 0.04 0.02 0.01 0.004<br />

I 64 61 60.16 60.04 60.01 60.0016 60.0004 60.0001 60.0000<br />

feval<br />

§ 725 In der neu eingesetzten Zeile zur Berechnung des Flächenstücks ist die Funktion zweimal<br />

explizit angegeben. Hier ist eine alternative Codierung zu empfehlen, bei der die Funktion<br />

über einen Handle definiert und mit feval ausgewertet wird:<br />

x=[a:deltx:b];<br />

fhandle = @(x) 3*x.*x +2;<br />

for k=1:M;<br />

y(k) = (feval(fhandle,x(k))+feval(fhandle,x(k+1)))*deltx/2;<br />

end<br />

§ 726 Mit dieser Vorübung können wir statt eines Skripts eine Funktion trapezfunk schreiben,<br />

die die Integration gemäß Trapezformel ausführt:<br />

function I = trapezfunk(f,a,b,M)<br />

deltx=(b-a)/M; x=[a:deltx:b];<br />

for k=1:M;<br />

y(k) = (feval(f,x(k))+feval(f,x(k+1)))*deltx/2;<br />

end<br />

I=sum(y);<br />

§ 727 Diese Funktion kann aus einem Skript oder dem MatLab Befehlsfenster heraus aufgerufen<br />

werden. In beiden Fällen müssen die zu übergebenden Parameter vorher vereinbart<br />

werden. Für den Aufruf aus dem Kommandofenster heraus könnte dies wie folgt aussehen:<br />

>> a=2; b=4; M=100; fun = @(x) 3*x.*x +2;<br />

>> I=trapezfunk(fun,a,b,M)<br />

I =<br />

60<br />

§ 728 Der Vorteil der Darstellung als eine Funktion ist offensichtlich: jetzt müssen Integrationsgrenzen,<br />

Schrittzahlen oder die zu integrierende Funktion nicht mehr im m-File geändert<br />

werden sondern nur in der ersten Eingabezeile im Befehlsfenster bzw. falls die Funktion<br />

trapezfunk aus einem m-File aufgerufen wird in diesem.<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!