Login
Newsletter
Werbung

Mi, 13. Mai 2015, 15:00

Octave – Teil 3: Numerische Integration und Matrizen

Skizze zur zusammengesetzten Trapezformel

Jens Dörpinghaus

Skizze zur zusammengesetzten Trapezformel

Die Funktion liefert eine Näherung I des Integrals zurück. Das Integral wird von a bis b mit fester Schrittweite berechnet. Die erste Zeile ist ein sogenannte Kommentar. Kommentare fangen mit einem Prozentzeichen an und werden von Octave ignoriert, d.h. man kann sie nutzen, um dort Zusatzinformationen zum Verstehen des Quellcodes zu hinterlegen.

In x wird also die Liste von Stützpunkten gespeichert; diese Schreibweise wurde schon oben eingeführt. Da man im Folgenden die Trapezformel immer für das Intervall [stuetzpunkt, stuetzpunkt+schrittweite] anwendet, kann in dieser Liste der rechte Rand des Intervalls [a,b] entfallen. Zunächst ist die Summe der Formeln 0.

Nun kommt noch eine Neuerung hinzu, die sogenannte for-Schleife. Dieser kann eine Menge von Werten übergeben werden und für jeden dieser Werte wird dann der Codeblock der Schleife ausgeführt. Die for-Schleife wird mit end abgeschlossen. In diesem konkreten Fall nimmt sie jeden Wert aus x und bezeichnet ihn mit stuetzpunkt. Der rechte Stützpunkt ist jeweils stuetzpunkt + schrittweite, sodass man dem Wert des Integrals nun den Wert der Trapezformel dieses Teilintervals hinzufügt.

Zum Schluss gibt die Funktion die gebildete Summe als I zurück. Das kann man sofort testen:

>> zusammengesetztTrapez(0,12,4)
ans =  608

Dies berechnet also das Integral der Funktion f (zur Erinnerung, es ist f(x)=x2 gesetzt, dies kann aber beliebig geändert werden) zwischen 0 und 12 mit der Schrittweite 4. Wenn man man sukzessive kleinere Schrittweiten wählt, sieht man, dass sich die Näherungsformel der eigentlichen Lösung 576 annähert:

>> zusammengesetztTrapez(0,12,2)
ans =  584
>> zusammengesetztTrapez(0,12,0.5)
ans =  576.50

Das soll im folgenden Abschnitt etwas systematischer untersucht werden.

Analyse der zusammengesetzten Trapezformel, Vektoren

Der Wert von x im vorherigen Abschnitt wurde bisher als »Liste« bezeichnet. Das ist anschaulich richtig; genau genommen handelt es sich aber um einen Vektor. Vektoren können praktisch aus beliebig vielen Einträgen bestehen:

>> x=[1,2,3,4]
x =
   1   2   3   4

>> x=[1,2]
x =
   1   2

>> x=1:1:4
x =
   1   2   3   4

Man kann Vektoren also nicht nur direkt eingeben, sondern auch in der Von-Schrittweite-Bis-Schreibweise.

Auf bestimmte Elemente eines Vektors kann natürlich auch direkt zugegriffen werden, wie man das etwa von Arrays oder Listen aus anderen Programmiersprachen schon kennt. Dazu kann man einzelne Elemente in normale Klammern setzen oder aber auch ganze Bereiche eines Vektors angeben:

>> x(2)
ans =  2
>> x(4)
ans =  4
>> x(1:2)
ans =
   1   2

Weiter gibt es das Schlüsselwort end, mit dem die Länge des Vektors angegeben wird. So können Elemente eines Vektors entfernt oder auch neue hinzugefügt werden.

>> x(end + 1) = 6
x =
   1   2   3   4   6

>> x = x(1:end -1)
x =
   1   2   3   4

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung