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

Slides:



Advertisements
Ähnliche Präsentationen
Hash-Tabellen und -Funktionen Hash-Tabellen in Java
Advertisements

Schnelle Matrizenoperationen von Christian Büttner
Seminar Stochastik im WS 02/03
FH-Hof Einbindung von JavaScript Anweisungen
Java: Dynamische Datentypen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Die Skriptsprache Lua Softwaretechnologie II.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
FH-Hof Algorithmen und Datenstrukturen - Einführung Richard Göbel.
Einführung in die Programmierung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Purga - Scriptengine Ein Einblick.
Algorithmen und Datenstrukturen Übungsmodul 8
Einführung in PHP.
Einführung in PHP 5.
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
(Syntax, Strings/Zahlen, Variablen, Arrays)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
MATLAB Control Statements.
6. Thema: Arbeiten mit Feldern
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Tutorium Software-Engineering SS14 Florian Manghofer.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Operatoren, Kontrollstrukturen und Funktionen. Logische Operatoren  zum Vergleich zweier Ausdrücke  ==, !=,, =  Ergebnis ist vom Typ bool  Achtung!
UNIVERSITY OF APPLIED SCIENCES Brückenkurs Programmieren Einführung in die IT für Social Media Systems.
Anforderungen an die neue Datenstruktur
Zwei Denkansätze zur Klasse Schlange
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Transformationskurve und Opportunitätskosten
Transformationskurve und Opportunitätskosten
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
Einführung in die Programmierung
Unterschiedliche Kontrollstrukturen
Christian Scheideler WS 2008
SS 04 Christiane Rauh Christian Hellinger
12 Das lineare Regressionsmodell
Algorithmen und Datenstrukturen
Einführung in die Programmierung
Einführung in die Programmierung
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
Übersicht und Benutzung von Sphinx
Implementieren von Klassen
Felder in der Informatik
Grundlagen der OO-Programmierung in C#
Statische und Nichtstatische Methoden Properties / Eigenschaften
Datentyp- umwandlung.
Schleifen Datenfelder (Arrays) Verzweigungen
Einführung in die Programmierung
The Programming Language Pascal
 Präsentation transkript:

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

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

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

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 ( ) Anwendung in Wissenschaft und Industrie als Alternative zum proprietären MATLAB

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

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

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)

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)

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)

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"]

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

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 = c = string }

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 }

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

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

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

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

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

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

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”

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!

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;

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

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

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)

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

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

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).

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

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)

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

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

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

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

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

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

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

Referenzen Introduction to Octave, Dr. P.J.G. Long, University of Cambridge, Department of Engineering, _145.html