Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Matrixmethoden in Textmining, 4. Sitzung, 15.11.10 Einführung in Octave Schwerpunkt Matrizenrechnung und lineare Algebra.

Ähnliche Präsentationen


Präsentation zum Thema: "Matrixmethoden in Textmining, 4. Sitzung, 15.11.10 Einführung in Octave Schwerpunkt Matrizenrechnung und lineare Algebra."—  Präsentation transkript:

1 Matrixmethoden in Textmining, 4. Sitzung, 15.11.10 Einführung in Octave Schwerpunkt Matrizenrechnung und lineare Algebra

2 Inhalt 1/2 Vorstellung/ Bedienung Grundwissen Variablen und Arithmetik Datenstrukturen Kontrollstrukturen Module/ Funktionen Einfache Modulbeispiele (Anhang)

3 Inhalt 2/2 Wichtige Matrixfunktionen Genauigkeit und Rundungsfehler Automatisches Lösen linearer Gleichungssysteme Manuelle Lösung linearer quadratischer Gleichungssysteme LR-Zerlegung ohne Pivotisierung Gaußsche Elimination mit Pivotisierung

4 Vorstellung/ Bedienung Höhere wissenschaftliche Computersprache zur numerischen Berechnung mathematischer Probleme Entwickelt seit 1992 von John W. Eaton, Administrator an der Universität von Wisconsin- Madison Aktuelle Version: 3.0 (21.12.2007) Anwendung in Wissenschaft und Industrie als Alternative zum proprietären MATLAB

5 Vorstellung/ Bedienung Eigenschaften: Interpretersprache (schwach, dynamisch) Modular Nicht objektorientiert Kommandozeilenbasiert Batch-Programmierung möglich Nutzt localen Adressraum voll aus (64 Bit) Nutzt GPU zur Matrizenrechnung

6 Grundwissen: Variablen u. Arithm. Grundrechenarten: +, -, *, /, ^ Konstanten: e, pi, i, … Elementare Funktionen: sin(x), cos(x), exp(x), sqrt(x), min(x,y), max(x,y), sum( ), … Hilfe: help sin Variablendeklaration: x = 3 Info: whos x Löschen: clear x

7 Datenstrukturen: Numerische Obj. Skalare sind intern 1x1-Matrizen realmin : Zeigt die untere numerische Grenze realmax : Zeigt die obere numerisch Grenze eps : Zeigt die Genauigkeit des Systems format long : Ändert Ausgabeformat isinteger(x) : Ob Objekt eine Integer-Zahl ist → Octave speichert Zahlen intern standardmäßig als Double- Fließkommazahlen (64 Bit)

8 Datenstrukturen: Numerische Obj. Typumwandlungen x = single(x) x = int8(x) x = int16(x) x = int32(x) x = int64(x) x = uint8(x) x = uint16(x) x = uint32(x) x = uint64(x)

9 Datenstrukturen: Vektoren & Matrizen I Zeilenvektoren: x = [1,2,3] oder x = [1 2 3] oder x = [1:3] Spaltenvektoren: x = [1;2;3] oder x = [1:3]’ Matrizen: m = [1 2 3; 4 5 6] Zugriff Vektor: x(2) → ans = 2 Matrix: m(2,1) → ans = 4 Mit Range-Operator Gibt Vektor zurück: x(2:3) oder m(1:2) Gibt Matrix zurück: m(:, 2:3)

10 Datenstrukturen: Strings Strings sind Vektoren auf Character Mehrere Strings können zeilenweise in einer Matrix angeordnet werden Alle Matrixoperationen sind somit auf Strings anwendbar Besonderheit: Konkatenation durch Definition von Zeilenvektoren auf Strings Beispiele: x = [ "s", "t", "r", "i", "n", "g"] m = [ "s", "t", "r", "i", "n", "g"; "t", "e", "x", "t"]

11 Datenstrukturen: Strings In einer Stringmatrix werden nicht besetzte Positionen kürzerer Strings mit einem vordefinierten Füllcharakter besetzt. Nützliche Funktionen: ischar(A) : Ob Objekt eine Matrix aus Charakteren ist isvector(A) : Ob Objekt ein Vektor ist (in Verbindung mit ischar(): Ob Objekt ein gültiger String ist) val = string_fill_char() : Zeigt Charakter an, der unbesetzte Positionen in Charaktermatrizen ausfüllt old_val = string_fill_char(new_val) : Definiert Füllcharakter

12 Datenstrukturen: Strukturen Variablen können unter einer Dachstruktur vereinigt werden. Der Name der Dachstruktur fungiert dann als Namensraum. Beispiel: x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string"; x.c → ans = string x → x = { a = 1 b = 1 2 3 4 c = string }

13 Datenstrukturen: Cell Arrays Matrizen → numerische Arrays Cell Arrays → Arrays mit nicht-skalaren Elementen Beispiel: c={"1","2","3";"a","b","c";"4","5","6"}; Zugriff: c{2,3} → ans = c Falls der Inhalt als weiteres Cell Array interpretiert werden soll: Zugriff: c(2, 3) → ans = { [1,1] = c }

14 Kontrollstrukturen: if - else if (//condition//) //then-body// elseif (condition) //elseif-body// else //else-body// endif Wichtig: Stringvergleiche sind nicht möglich! → Statt if (X == "string"): Switch verwenden

15 Kontrollstrukturen: while while (//condition//) //body// endwhile break; und continue; funktionieren nach bekannten Regeln.

16 Kontrollstrukturen: do - until do //body// until (//condition//) break; und continue; funktionieren nach bekannten Regeln.

17 Kontrollstrukturen: for for //var// = //expression// //body// endfor Beispiel: for i=0:-2:-10 printf("%d\n",i); endfor

18 Kontrollstrukturen: ”foreach” for [ //val, key// ] = //expression// //body// endfor Expression muss hier eine Struktur sein.

19 Kontrollstrukturen: switch switch //expression// case //label// //command_list// case //label// //command_list// otherwise //command_list// endswitch

20 Module/ Funktionen Module (bzw. Funktionen) sind ausgelagerte Programmteile, die von der Eingabeaufforderung oder von einem Skript aus aufgerufen werden können. Eine Funktion erfüllt nur eine bestimmte Aufgabe (Input → Output) Moduldateien müssen den Namen der enthaltenen Funktion und die Endung.m besitzen, z.B. ”addiere.m”

21 Module/ Funktionen: Syntax Interner Aufbau: function result = do_something(x, y);... return; Anstelle von return; kann auch endfunction angegeben werden. Mit return; lässt sich die Funktion an jeder beliebigen Stelle verlassen Wichtig! Octave kennt keine Übergabe per Referenz! Funktionsargumente werden immer als Kopie übergeben!

22 Module/ Funktionen: Ergebnisvektoren Mehrere Ergebnisse können als Elemente von Ergebnisvektoren zurückgegeben werden: function [a b c] = makevector(x, y, z); a = x; b = y; c = z; return;

23 Rekursion ist möglich, aber beschränkt. Über built-in-Funktionen wird die maximale Rekursionstiefe begrenzt: val = max_recursion_depth() old_val = max_recursion_depth(new_val) Module/ Funktionen: Rekursion

24 Module/ Funktionen: Dyn. Arg. Die Anzahl der Funktionsargumente muss nicht unbedingt bekannt sein. Potentiell unendlich viele Argumente können mit Hilfe eines Cell Arrays übergeben werden. Die built-in-Variable nargin enthält deren Anzahl. function s = addiere(varargin) if (nargin==0) s = 0; else s = varargin{1} + \ addiere(varargin{2:nargin}); endif endfunction

25 Module/ Funktionen: Dyn. Erg. Ebenso ermöglicht ein Cell Array die Ausgabe dynamisch großer Ergebnisvektoren. function varargout = zuweisen(data) for k=1:nargout varargout{k} = data(:,k); endfor endfunction nargout wird die erwartete Anzahl der Werte zugewiesen. Bei Funktionsaufruf mit ans ist nargout Null. Nützliche Funktion: nargchk (nargin_min, nargin_max, varargin)

26 Wichtige Matrixfunktionen: Matrixgenerierung eye(n): Quadratische Identitätsmatrix der Größe n*n zeros(n): Quadratische Nullmatrix der Größe n*n ones(n): Quadratische Einsermatrix der Größe n*n rand(n): Quadratische Matrix der Größe n*n aus zufälligen Zahlen zw. 0 und 1 diag(z): Quadratische Matrix mit Vektor z als Diagonalvektor

27 Wichtige Matrixfunktionen: Werteextraktion diag(A): Spaltenvektor aus Diagonalvektor der Matrix A inv(A): Inverse der Matrix A pinv(A): Pseudoinverse der Matrix A det(A): Determinante der Matrix A (!= 0 bei eindeutiger Lösbarkeit eines LG mit Koeffizientenmatrix A) rank(A): Rang der Matrix A

28 Wichtige Matrixfunktionen: Methoden abs(n): Gibt den Betrag von n zurück rref(A): Gaußsche Elimination. Gibt um Lösungsvektor erweiterte Identitätsmatrix zurück: I x [l u p] = lu(A): LU-Dekomposition mit optionaler Pivotisierung (Permutationsmatrix). [q r p] = qr(A): QR-Dekomposition mit optionaler Pivotisierung (Permutationsmatrix p).

29 Genauigkeit und Rundungsfehler Fakt: Octave produziert numerische Lösungen zu mathematischen Problemen Problem: Rechenfehler beim Arbeiten mit Zahlen die: Sehr klein sind Sehr groß sind Viele Dezimalstellen besitzen In binärer Form nicht endlich darstellbar sind

30 Genauigkeit und Rundungsfehler Zahlen in Octave: 64-Bit-Doubles → Maximal 15 Dezimalstellen 1. Folge: Inkompatibilität verschiedener Größenordnungen Beispiel: x = 1; while (1 + x > 1) x /= 2; end → terminiert (1 + x entspricht irgendwann 1)

31 Genauigkeit und Rundungsfehler 2. Folge: Binäre Darstellung dezimaler Zahlen hat manchmal unendlich viele Stellen (s. hier)s. hier → Verwendung von Näherungswerten Beispiel: 1 - 0.2 - 0.2 - 0.2 - 0.2 - 0.2 → Ergebnis: ans = 5.5511e-017 Konsequenz für das Lösen linearer Gleichungssysteme: Pivotisierung

32 Automatisches Lösen linearer Gleichungsysteme Ax = b 4 Fälle: Reguläre quadratische Koeffizientenmatrix Singuläre quadratische Koeffizientenmatrix Singuläre überbestimmte Koeffizientenmatrix Singuläre unterbestimmte bestimmte Koeffizientenmatrix

33 Automatisches Lösen linearer Gleichungsysteme Ax = b Einfachster Fall: Reguläre quadratische Koeffizientenmatrix Anxn → Besitzt Inverses A^-1 (det(A) != 0) → Umformung möglich zu: x = A^-1 * b Befehl: x = inv(A) * b Mit Octave-Matrixdivision: Gaussche Elimination x = A \ b → Slash-Operator implementiert je nach Fall verschiedene Lösungswege

34 Automatisches Lösen linearer Gleichungsysteme Ax = b 2. Fall: Singuläre quadratische Koeffizientenmatrix Anxn → Besitzt kein Inverses (det(A) == 0) → Keine eindeutige Lösung Befehl: x = A \ b → Warnmeldung: attempting to find minimum norm solution → Lösungsweg in Octave: Methode der kleinsten Quadrate

35 Automatisches Lösen linearer Gleichungsysteme Ax = b 3./4. Fall: Singuläre über/unterbestimmte Koeffizientenmatrix Amxn → Besitzen kein Inverses (det(A) == 0) → Keine (eindeutige) Lösung Befehl: x = A \ b → Lösungsweg in Octave: QR-Zerlegung im Sinne der Methode der kleinsten Quadrate Alternativ: (A' * A)\(A’ * b) Oder: inv(A' * A) * A' * b Bzw: pinv(A) * b

36 Manuelle Lösung linearer quadratischer Gleichungssysteme LR-Zerlegung ohne Pivotisierung Effizientere Alternative zur Gaußschen Elimination für Rechnerimplementationen → Elimination geschieht nur ein Mal bei verschiedenen rechten Seiten b Siehe Anhang: solveLE.m lr_decomposition.m forSubst.m backSubst.m

37 Manuelle Lösung linearer quadratischer Gleichungssysteme Gaussche Elimination mit Pivotisierung Siehe Anhang: solveLE_pivot.m pivotize.m eliminate.m backwards_substitution.m

38 Referenzen Introduction to Octave, Dr. P.J.G. Long, University of Cambridge, Department of Engineering, 2005 http://www.delorie.com/gnu/docs/octave/octave _145.html


Herunterladen ppt "Matrixmethoden in Textmining, 4. Sitzung, 15.11.10 Einführung in Octave Schwerpunkt Matrizenrechnung und lineare Algebra."

Ähnliche Präsentationen


Google-Anzeigen