MATLAB - Eine Einführung - TUM
MATLAB - Eine Einführung - TUM
MATLAB - Eine Einführung - TUM
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1.4 Erweiterung<br />
Abbildung 1.1: Kubischer Spline der Wurzelfunktion<br />
<strong>Eine</strong> weitere Qualität von <strong>MATLAB</strong> ist die einfache Möglichkeit vorhandene Algorithmen zu ersetzen.<br />
Wir wollen dies an der Funktion kspline vorführen.<br />
Bei Beispielen mit wenig Knotenpunkten arbeitet kspline recht schnell, wird die Zahl der Knotenpunkte<br />
jedoch groß, wird die Funktion überproportional langsamer, auch der Speicherbedarf steigt stark<br />
an. Die Erklärung hierfür ist, dass die Zeit für das Lösen des größer werdenden Gleichungssystems (1.1)<br />
n Zeit (1000 Ausführungen) Speicher Zeit (A dünn) Speicher (A dünn)<br />
100 0.79sec 93kB 0.87sec 17kB<br />
200 2.57sec 342kB 1.33sec 34kB<br />
400 32.00sec 1309kB 2.44sec 68kB<br />
800 138.00sec 5118kB 4.85sec 137kB<br />
1600 570.00sec 20237kB 9.64sec 275kB<br />
Tabelle 1.1: Laufzeiten von kspline<br />
nicht proportional mit der Anzahl der Unbekannten wächst. Die Matrix ist jedoch nur dünn besetzt (fast<br />
alle Einträge sind Null) und hat eine sehr einfache Struktur (Tridiagonal). Diese Tatsache wollen wir im<br />
Folgenden ausnutzen.<br />
<strong>MATLAB</strong> unterstützt dünnbesetzte Matrizen, hierbei werden im wesentlichen nur die Einträge gespeichert,<br />
die von Null verschieden sind. Zusätzlich erkennt der Gleichungssystemlöser die Bandstruktur der<br />
Matrix und verwendet effiziente Algorithmen um das System zu lösen. Das einzige was wir machen müssen<br />
um diese Funktionen zu verwenden ist die Matrix A dünn besetzt zu erzeugen, alles andere übernimmt<br />
<strong>MATLAB</strong> für uns. Dies können wir machen, in dem wir z.B. die Zeile 9 durch die folgende ersetzen:<br />
A = 2*speye(n) + spdiags([[lambda, 0]’, [mu, 0]’], [1, -1], n, n);<br />
Die neue Version berechnet die Lösung der Interpolationsaufgabe in optimaler Komplexität: Bei Verdoppelung<br />
der Punkte verdoppelt sich auch die Zeit (und Speicherbedarf) zum Berechnen des Splines (s.<br />
Tabelle 1.1).<br />
1.5 Zusammenfassung<br />
Wir haben in diesem Kapitel gesehen wie man einen Algorithmus mit wenigen Zeilen (25) in <strong>MATLAB</strong><br />
implementiert und sich das Ergebnis grafisch darstellen lassen kann.<br />
Zusätzlich konnten wir durch Ändern nur einer Zeile einen nicht optimale Methode in eine mit linearer<br />
Laufzeit umwandeln. <strong>MATLAB</strong> übernimmt die komplette Arbeit und verwendet automatischen einen<br />
optimalen Algorithmus um das Gleichungssystem zu lösen.<br />
10