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.

74 KAPITEL 2. FOLGEN UND REIHEN<br />

For-Schleife<br />

§ 301 Der folgende m-file 5 erledigt diese Aufgabe:<br />

clear; format compact;<br />

n=10;<br />

for k=1:n<br />

a=1/k<br />

end<br />

clear<br />

In der ersten Zeile werden mit dem Befehl clear alle noch in MatLab bestehenden<br />

Variablen gelöscht. Mit dem Befehl format compact werden die Leerzeilen in der Ausgabe<br />

format compact im Kommandofenster unterdrückt, so dass das Ergebnis kompakter dargestellt werden kann.<br />

In der folgenden Zeile wird die Zahl n der zu betrachtenden Glieder festgelegt, in diesem Fall<br />

zehn. Die folgenden drei Zeilen bilden das Kernstück des Programms: eine Schleife wird von<br />

k = 1 bis n durchlaufen und in jedem Schritt dieser Schleife wird der Wert 1/k, entsprechend<br />

dem k ten Glied der harmonischen Folge, ausgegeben. Eine derartige for-Schleife wird mit dem<br />

for<br />

Befehl for begonnen. Dann folgt der Name eine Variablen, in diesem Fall k, die in der Schleife<br />

von einem Wert bis zu einem anderen Laufen soll, in diesem Fall von 1 bis n. Die Schleife wird<br />

end<br />

mit end beendet. Alle dazwischen liegenden Zeilen und Befehle werden mit jedem Durchgang<br />

durch die Schleife wiederholt abgearbeitet.<br />

§ 302 Die Zahl n der Schritte muss nicht in einer separaten Variablen deklariert werden. Die<br />

Modifikation der ersten Zeile der For-Schleife als for k=1:10 würde zu identischem Ergebnis<br />

führen. Die Einführung von n als zusätzlicher Variable ist jedoch dann sinnvoll, wenn dieses<br />

n in einem komplexeren Programm mehrfach benötigt wird, z.B. weil sie nach einander für<br />

etliche verschiedene Reihen die ersten zehn Glieder bestimmt haben. Dann lässt sich auch<br />

überall for k=1:10 schreiben. Entscheiden Sie sich jedoch plötzlich, statt der ersten zehn<br />

die ersten 15 Glieder zu betrachten, so müssen Sie in jeder Schleife die 10 durch eine 15<br />

ersetzen. Ist das Schleifenende dagegen in der Variable n definiert, so muss diese nur einmal<br />

verändert werden. Die Deklaration in der separaten Variablen ist auch dann sinnvoll, wenn<br />

Sie das Programm so schreiben wollen, dass es sie jeweils am Anfang auffordert, die Zahl der<br />

gewünschten Schritte einzugeben.<br />

§ 303 Drei Anmerkungen zur Schleifenvariablen k: (1) im obigen Beispiel lief k von 1 bis<br />

10 in ganzzahligen Schritten, d.h. k = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Andere, auch nicht ganzzahlige<br />

Schrittweiten sind ebenfalls möglich. Die Sequenz for k=1:2:9 würde k im Bereich<br />

von 1 bis 9 durchlaufen, allerdings jeweils in Zweier-Schritten: k = {1, 3, 5, 7, 9}. Entsprechend<br />

führt die Sequenz for k=9:-2:1 auf einen Durchlauf der Schleife von 9 bis 1, wobei<br />

k jeweils um 2 reduziert wird. Im Beispiel for k=1:0.1:2 dagegen läuft k im Bereich von<br />

1 bis 2 in Schritten von 0.1: k = {1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0}. (2) In einigen<br />

älteren Sprachen (ebenso wie in der abstrakten mathematisch Darstellung ∑ ∞<br />

i=1 a i) hat es<br />

sich eingebürgert, die Schleifenvariable i oder j zu nennen, also for i=1:10. In MatLab ist<br />

diese Wahl ungünstig, da i und j für die imaginäre Einheit reserviert sind (zu ungeeigneten<br />

Variablennamen siehe Abschn. B.5.1 und insbesondere Tabelle B.2). Falls Sie i oder j als<br />

Schleifenvariable verwenden, so nehmen diese natürlich den entsprechenden Wert an. Wird<br />

später im Programm die imaginäre Einheit benötigt und Sie verwenden aus Gewohnheit das<br />

i, so ist das dann keinesfalls die imaginäre Einheit sondern der letzte Wert auf dem die<br />

Schleifenvariable steht. (3) Eine Schleifenvariable muss nicht immer mit Hilfe einer einfachen<br />

Funktion ausdrückbar sein sondern kann auch als ein Wertevorrat in einem Vektor allek<br />

abgespeichert werden. Diese kann explizit geschehen, indem der Vektor von Hand angegeben<br />

wird, oder der Vektor wurde an anderer Stelle im Programm erzeugt. Diese Schleife wird<br />

mit dem Befehl for k=allk ausgeführt: wird die Schleifenvariable als Vektor übergeben, so<br />

werden alle Werte des Vektors nach einander als Schleifenvariable abgearbeitet.<br />

5 Die Verwendung von m-Files ist in Abschn. B.3 genauer beschrieben<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!