Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Einführung in Matlab (MA8202)Teil 6 von 6
Dr. Christian Waluga
Technische Universität MünchenFakultät Mathematik, Lehrstuhl für Numerische Mathematik
Basierend auf Kursunterlagen von Boris von Loesch
22. März 2013
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Teil 6: Inhalt
1 Dünnbesetzte MatrizenMotivationSpeichermodellBeispieleErzeugen von Sparse-MatrizenVergleich voll- und dünnbesetztErhalten dünn besetzter Strukturen
2 Nützliche WerkzeugeProfilerMLINTDependency Report
3 GUI-Erstellung mit Matlab
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
MotivationFür viele Probleme (z.B. bei der Diskretisierung partiellerDifferentialgleichungen, Bestimmung von Koeffizienten bei derInterpolation) erhält man Matrizen, die viele Nullen enthalten.Beispiel Poissonmatrix:
A =
4 −1 0 −1 0 0 0 0 0
−1 4 −1 0 −1 0 0 0 0
0 −1 4 0 0 −1 0 0 0
−1 0 0 4 −1 0 −1 0 0
0 −1 0 −1 4 −1 0 −1 0
0 0 −1 0 −1 4 0 0 −1
0 0 0 −1 0 0 4 −1 0
0 0 0 0 −1 0 −1 4 −1
0 0 0 0 0 −1 0 −1 4
Speicherplatz sparen: nur Nicht-Null-Einträge abspeichernEffizientes Rechnen: Operation mit Null-Einträgen vermeiden
Durch diese Effizienzsteigerungen können Probleme berechnet werden,die ansonsten aufgrund ihrer Größe nicht verarbeitet werden könnten.
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Speichermodell von Sparse-Matrizen
Nur von Null verschiedene Einträge werden abgespeichertDer Ort des Eintrags wird durch den Zeilen- und SpaltenindexgekennzeichnetSpeicherplatzbedarf ist ungefähr gleich der Summe von
4 Bytes, um die Anzahl der Einträge zu speichernpro Eintrag 8 Bytes für Spalten- und Zeilenindexpro Eintrag 8 Bytes für den Zahlenwert
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Beispiele für Sparse-Matrizen
A =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
A =
(1,1) 1(2,2) 1(3,3) 1(4,4) 1
B =
2 −1 0 0 0
−1 2 −1 0 0
0 −1 2 −1 0
0 0 −1 2 −1
0 0 0 −1 2
B =
(1,1) 2(2,1) -1(1,2) -1(2,2) 2(3,2) -1(2,3) -1...
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Befehle zum Erzeugen von Sparse-Matrizen
Funktion Beschreibungspeye Schwach besetzte Einheitsmatrixspones Einträge durch Einsen ersetzenspdiags Erzeugen von Bandmatrizensprand Einträge durch Zufallszahlen ersetzen
Konvertierung von A nach schwach bzw. voll besetzt:full(A)
sparse(A)
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Beispiel: spdiags
>> n = 5; e = ones(n,1); d = 4*e;>> A = spdiags([-e, d, -e], [-1,0,1], n, n);>> full(A)ans =
4 -1 0 0 0-1 4 -1 0 00 -1 4 -1 00 0 -1 4 -10 0 0 -1 4
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Vergleich Speicherplatzbedarf
0 2 4 6 8 10 12 14 16 18 200
500
1000
1500
2000
2500
3000
3500
n: Dimension der n x n Matrix
Spe
iche
rpla
tzbe
darf
in B
ytes
Speicherplatzbedarf einer Tridiagonalmatrix
schwach besetztvoll besetzt
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Vergleich Rechengeschwindigkeit
0 20 40 60 80 100 120 140 160 180 2000
0.002
0.004
0.006
0.008
0.01
0.012
n: Dimension der n x n Matrix
gem
esse
ne G
esch
win
digk
eit a
uf P
4 in
[s]
Geschwindigkeit Lösen eines Tridiagonalsystems mit \
schwach besetztvoll besetzt
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Erhalten dünn besetzter StrukturenIn der Regel ist die Inverse einer dünn besetzten Matrix nicht mehrdünn besetzt.Daher: Oft besser, Inverse nicht explizit zu bestimmen. Stattdessenkann man oft ein lineares Gleichungssystem (z.B. mit dem \Operator) lösen.Beispiel: Matrixstruktur CSOR = D + L für Poisson-Matrix
0 10 20 30 40 50 60 70 80 90 100
0
10
20
30
40
50
60
70
80
90
100
nz = 280
CSOR
(ω = 1)
0 10 20 30 40 50 60 70 80 90 100
0
10
20
30
40
50
60
70
80
90
100
nz = 3025
C−1SOR
(ω = 1)
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Profiler
Detaillierte Rechenzeitanalyse: Wieviel Zeit wurde für welche Zeileoder Funktion verbraucht?Auflistung geordnet nach RelevanzGut geeignet zum Auffinden von EffizienzproblemenFalls optimiert werden soll, wo wäre Optimierung sinnvoll?Vorgehen:
1 Profile Aufzeichnung starten mit profile on2 m-File aufrufen3 Profile report ansehen mit profile viewer.4 Optionen: Abspeichern von Berichten, Detail-Level setzen (z.B.
interne Funktionen in Laufzeitmessung einschließen), . . .
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Beispiel: Profiler, Zusammenfassung
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Beispiel: Profiler, Details
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
MLINT Code Checker
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Dependency Report
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Matlab Werkzeuge GUIDE (’guide’)
Starten des GUIDE tools im Menü ’Datei->Neu’ oder mit dem Befehl’guide’
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Property inspector und object browser
Eigenschaften der GUI Element können im Inspector gesetzt werden
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Callbacks
Bei Ereignissen (Knopf drücken, Feld ändern) werden Callbacksausgelöst, die dann wie eine normale Funktion vom Benutzerimplementiert werden können.
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)
Fragen?
Ende Teil 6
Fragen?
Lehrstuhl für Numerische Mathematik M2 Einführung in Matlab (MA8202)