Einführung in Matlab (MA8202) - Teil 6 von 6€¦ · VergleichRechengeschwindigkeit 0 20 40 60 80...

Post on 17-Oct-2020

0 views 0 download

transcript

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)