24.04.2013 Aufrufe

MATLAB - Eine Einführung - TUM

MATLAB - Eine Einführung - TUM

MATLAB - Eine Einführung - TUM

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.

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!