33
Beleg zum Umgang mit der Software GNU Octave Vortrag 5 - Matrizen Array Claus Holland (542708) Alexander Ihm (543565) André Kuske (542823) Modul: Mathematik 3 Dozentin: Dipl.Math. Petra Schumann Datum: 20.6.2014

Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

!!!!

!Beleg zum Umgang mit der Software GNU Octave!Vortrag 5 - Matrizen Array !!!!!!Claus Holland (542708) Alexander Ihm (543565) André Kuske (542823)

Modul: Mathematik 3 Dozentin: Dipl.Math. Petra Schumann

Datum: 20.6.2014

Page 2: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Benutzung dieses Dokuments !Das vorliegende Dokument beschreibt die Verwendung von Octave im Zusammenhang mit Matrizen und Vektoren. Jedes Unterthema ist dabei in 3 verschiedene, farblich markierte, Bereiche unterteilt. !

  Einzelne Abschnitte werden durch kursive, unterstrichene Überschriften eingeleitet. Befehle, die direkt in Octave eingegeben werden können, sind durch Fettschrift hervorgehoben. Das ans= am Zeilenanfang der Ausgabe steht für Ergebnis (vom englischen answer).   Inhalt:   1. Erzeugungsmöglichkeiten von Matrizen / Vektoren (3-dimensional) 2. Spezielle Matrizen 3. Transponierte Matrizen 4. Quadratische Matrizen 5. Zugriffsmöglichkeiten auf Matrizen 6. Elemente umordnen 7. Rechenoperationen mit Matrizen 8. Division von Matrizen 9. Erzeugung von Submatrizen 10. Diagonale einer Matrix 11. Elementweises Rechnen mit Matrizen und Vektoren (Min, Max) 12. Abfrage gleicher Elemente 13. Linearkombination 14. Liste der gängigen Kommandos 15. Glossar 16. Quellen

weiß Theorie

grün Octave Befehle und deren Ausgabe

blau Praktisches Beispiel oder Anwendungsgebiet

Page 3: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Erzeugungsmöglichkeiten von Matrizen / Vektoren (3-dimensional) !Matrizen sind ein wichtiger Bestandteil der linearen Algebra. Sie sind ein Werkzeug, um lineare Gleichungssysteme abzubilden und zu lösen. Octave erlaubt dem Benutzer sowohl Vektoren (als Spalten- und Zeilenvektor), als auch mehrdimensionale Matrizen zu erstellen und zu bearbeiten.   Darstellung eines Zeilenvektors:   Durch Eingabe des Befehls A = [1,2,3,4,5] wird ein Zeilenvektor A erzeugt, welchem die Werte in Klammern zugeordnet werden. Die Elemente können durch Leerzeichen oder Kommata getrennt eingegeben werden. !

   Darstellung eines Spaltenvektors:   Das Anlegen eines Spaltenvektors A gestaltet sich ähnlich wie beim Zeilenvektor, doch anstatt eines Leerzeichens oder Kommas, verwendet man Semikolons als Trennzeichen. A = [1;2;3;4;5]  

    !!!!!!!

Page 4: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Darstellung einer Matrix:   Die Zeilen (m) und Spalten (n) einer Matrix lassen sich durch eine Kombination der Eingabesyntaxen der Vektoren erstellen. Die Zeilen werden wieder durch Kommata oder Leerzeichen getrennt eingegeben, die Spalten durch Semikolons getrennt. A = [1,2,3; 4,5,6; 7,8,9]  

  Um Zahlenreihen nicht mühselig von Hand eingeben zu müssen, kann man mit Hilfe des Doppelpunkt Operators den ganzzahligen Anfangswert vor dem Doppelpunkt und den ganzzahligen Endwert hinter diesem angeben. Octave vervollständigt dann die Zahlen in Einer Schritten, bis die Reihe komplett ist. Um eine Spalte einzugeben, wird der Befehl in Klammern mit anschließendem Hochkomma gesetzt. !

  !!!!!!!!!!!!!

A = 1:4 A = (1:4)'

Page 5: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Soll anstatt in Einer Schritten in anderen Abständen gezählt werden, wird anstelle des Doppelpunktes die Kombination Doppelpunkt, Schrittfolge, Doppelpunkt genutzt. Auch hier kann die Spaltenform durch Verwendung von Klammern und folgendem Hochkomma genutzt werden. !

  Mittels der Befehle zeros und ones lassen sich quadratische Matrizen, ausschließlich mit Nullwerten (Nullmatrix) oder Einsen gefüllt, erstellen. !

!Wenn keine quadratischen, sondern mit ungleicher Anzahl Spalten und Zeilen gefüllten Matrizen erzeugt werden müssen, kann man die eben genannten Befehle dementsprechend abändern. Dabei wird zuerst die Zeilenanzahl, danach die Spaltenanzahl angegeben. !

!!!!

A = 1:0.25:2 A = (1:0.25:2)'

��

zeros(3) ones(3)

��

zeros (3,4) ones(3,4)

Page 6: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Anwendungsgebiete: !In der 3D-Spieleprogrammierung werden Matrizen verwendet, um Spiegelungen oder Rotationen zu erzeugen. Außerdem lassen sich durch Matrizen Gleichungssysteme lösen.

Page 7: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Spezielle Matrizen !Magisches Quadrat: !Ein magisches Quadrat ist eine Matrix mit n*n Elementen, bei der die Summe der Elemente der Spalten, Zeilen und der Haupt- und Nebendiagonale identisch sind. Zum Aufruf dieser Funktion wird der Befehl magic(n) verwendet. n muss größer als 2 gewählt werden. !

!Pascalsche Matrix: !Ein pascalsches Dreieck ist eine Darstellungsform für Binomialkoeffizienten (mathematische Funktion zur Lösung einer Grundaufgabe der Kombinatorik) und erlaubt diese auch einfach zu berechnen. Dieses Dreieck lässt sich in Octave auch als Matrix darstellen. Die Besonderheit dieser Matrix ist, dass jedes Element der Summe der beiden darüber liegenden entspricht. Bei der Darstellung in Octave ist das Dreieck etwas ge- dreht. Man addiert also die Elemente links und oberhalb des gesuchten Elements.

pascal(4)

Praktisches Anwendungsbeispiel: !Mit Hilfe des Pascalschen Dreiecks lassen sich die Binomischen Formeln beliebiger Potenzen schnell ablesen. !3. Zeile: !4. Zeile: !

Page 8: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Hilbert Matrix: !Die Besonderheit der Hilbert-Matrix ist, dass ihre Inverse exakt berechnet werden kann. Es existiert folglich ein eindeutig lösbares Gleichungssystem. Diese Matrix hat jedoch den Nachteil, dass sie schlecht konditioniert ist, da ihre Konditionszahl exponentiell mit (n) wächst. !Der Befehl hilb(n) berechnet die n*n-Matrix, deren einzelne Elemente mit H (i, j) = 1 / (i + j – 1) berechnet werden. Die inverse Matrix kann mit dem Befehl invhilb(n) erzeugt werden. !

hilb(5) invhilb(5)

� �

Page 9: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Random Matrix: !Um eine Matrix mit zufälligen Werten zwischen definiertem Anfangswert und definiertem Endwert zu erzeugen, wird der Befehl rand benutzt. !

!Vandermonde Matrix: !Bei der Vandermonde Matrix werden zu jedem Element einer Zahlenfolge die Potenzen bis zu einem festgelegten Grad erzeugt. Die Werte einer Zeile entsprechen also von rechts nach links gelesen Zeilennummer^(Spaltennummer-1).

!!

rand(5,5)

vander(1:5)

Anwendungsgebiete: !Die Vandermonde Matrix wird bei der Interpolation von Funktionen benutzt.

Page 10: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Transponierte Matrizen !Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden also zu Spalten und umgekehrt.   Eine vorhandene Matrix kann durch Eingabe ihres Variablennamens mit folgendem Hochkomma transponiert werden. A = [1,2,3;4,5,6;7,8,9] wird durch A' transponiert.

!

Anwendungsgebiete: !Das Transponieren von Matrizen findet beispielsweise bei der linearen Optimierung Anwendung. Diese wird zur Lösung von Problemen eingesetzt, wenn es keine standardisierten Lösungsverfahren gibt, wie bei der Planung von Telefonnetzen. Dabei müssen Verkehrsflüsse so durch ein Netz geroutet werden, dass alle Verkehrsanforderungen erfüllt werden, ohne die Kapazitätsbedingungen zu verletzen.

Page 11: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Quadratische Matrizen !Wenn die Zeilen- und Spaltenanzahl einer Matrix übereinstimmen, wird von einer quadratischen Matrix gesprochen. Der Sonderfall einer 1x1 Matrix wird als Skalar bezeichnet.   Die Hauptdiagonale beinhaltet alle Elemente, die sich auf der Linie vom kleinsten Index bis zum größten Index befinden. Die Nebendiagonale verläuft von oben rechts nach unten links.

!

Anwendungsgebiete: !Viele der in diesem Dokument vorgestellten Rechenoperationen lassen sich nur an quadratischen Matrizen anwenden. Daher wird häufig diese Darstellungsform genutzt.

Page 12: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Zugriffsmöglichkeiten auf Matrizen !Octave erlaubt den Zugriff auf einzelne Elemente einer Matrix. Hierfür wird der Variablenname der Matrix gefolgt von der Zeilen- und Spaltenangabe kommagetrennt in Klammern eingegeben. A(2,3) Ausgegeben wird dann die Zahl, die sich an der angegebenen Position befindet. !

!Da Octave sämtliche Elemente einer Matrix indiziert, kann auch direkt nach Zahlen in Matrizen gesucht werden. Die Elemente werden von oben nach unten und von links nach rechts indiziert. Sucht man beispielsweise nach dem Element mit dem Wert 6 durch Eingabe von A(6)  wird in diesem Beispiel als Ergebnis die Indexzahl 8 ausgegeben. !

!Weiterhin lässt sich das letzte Element der Matrix (Element mit dem höchsten Index) mittels des Befehls end abfragen.

!!Index: !

1 4 7 2 5 8 3 6 9

Anwendungsgebiete: !Sobald große Mengen an Zahlendaten in einer Matrix gespeichert werden, ist der Einsatz der Zugriffsbefehle beim späteren Arbeiten mit den Werten unvermeidbar.

Page 13: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Elemente umordnen !Octave verfügt über verschiedene Möglichkeiten zur Umordnung von Elementen in Matrizen. !Horizontales/Vertikales Spiegeln: !Matrizen können in Octave sowohl horizontal, als auch vertikal gespiegelt werden. Das geschieht mit Hilfe der Befehle flipud und fliplr. !

!Rotation:   Um eine Matrix um 90° im Uhrzeigersinn zu drehen, wird die Funktion rot90(A) verwendet. Rotationen um 180° und 270° sind durch Eingabe von rot90(A,2) und rot90(A,3) möglich. A steht hierbei für den Variablennamen der Matrix. !

!!!!!

flipud(A) fliplr(A)

� �

rot90(A) rot90(A,2) rot90(A,3)

�� �

Page 14: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Umformung: !Die reshape-Funktion gestattet das Umformen von Matrizen, sofern Ausgangs- und Zielmatrix dieselbe Anzahl an Elementen haben. !

!Sortieren: !Um die Elemente einer Matrix nach aufsteigendem Wert zu sortieren, wird die Funktion sort eingesetzt.

Anwendungsgebiete: !Es gibt zahlreiche Gründe, weshalb die Elemente einer Matrix umgeordnet werden müssen. Das Sortieren der Elemente kann zum Beispiel im Controlling sinnvoll sein, um die Preise für bestimmte Waren in eine aufsteigende Reihenfolge zu bringen und somit die Ausgaben vergleichen zu können.

Page 15: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Rechenoperationen mit Matrizen !Octave ermöglicht es den Nutzern mit wenigen Befehlen alle gängigen Rechenoperationen auf Matrizen auszuführen. Voraussetzung für Addition, Subtraktion und Multiplikation mit Skalaren ist, dass die Operanden die gleiche Anzahl von Spalten und Zeilen haben. !Addition, Subtraktion und skalare Multiplikation von Matrizen: !Durch Verwenden der normalen Operatoren -,+,* lassen sich die Operationen leicht durchführen. !

!�

Page 16: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Multiplikation von Matrizen: !Für die Multiplikation von Matrizen gilt die Regel, dass die Anzahl der Spalten der ersten Matrix denselben Betrag wie die Anzahl der Zeilen der zweiten Matrix haben muss. Dann kann mit dem  "*"- Operator normal multipliziert werden. !

!�

Page 17: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden
Page 18: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Division von Matrizen !Die Division vom Matrizen ist in der Mathematik nicht definiert. Octave bietet jedoch die Möglichkeit, Matrizen im Sinne einer Multiplikations-Umkehrung zu dividieren. Dafür gibt es die Operatoren "/" und "\". Es gilt:

 

Das Zeichen "\" bezieht sich also auf eine Umkehrung der Multiplikation von der Inversen von A.   Zu beachten:   Die Division von Matrizen in Octave führt (fast) immer zu einem Ergebnis. Dies ist jedoch nicht notwendig eine Entsprechung der oben gezeigten Umkehrung einer Multiplikation. Die praktische Bedeutsamkeit der Ergebnisse der Division zweier Matrizen geht daher gegen null. !

!Relevant ist: Mit dem Backslash-Operator lässt sich ein lineares Gleichungssystem der Form AX=B --> X=B\A lösen.

Page 19: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Erzeugung von Submatrizen !Manchmal ist es sinnvoll, Elemente, Spalten oder Zeilen einer Matrix in einer Submatrix oder einem Subvektor auszulagern.   Eingabe einer Matrix:   Durch Eingabe des Befehls A = [1,2,3;4,5,6;7,8,9] erhalten wir eine in A gespeicherte Matrix. !

!Erzeugung einer Submatrix:   Durch Eingabe des Befehls B = A([1,2], [2,3]) erhalten wir die Submatrix B, bestehend aus der ersten und zweiten Zeile und der zweiten und dritten Spalte von A. !

!Erweiterung mit ":" Operator:   Es lässt sich auch einfach eine ganze Zeile in eine Submatrix ausgliedern. Dafür geben wir ein: B = A(3,:) !

Page 20: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Praktisches Anwendungsbeispiel: !Mit dem laplaceschen Entwicklungssatz lassen sich Determinanten von n x n Matrizen berechnen. Dazu entwickelt man nach einer Spalte oder Zeile der Ausgangsmatrix und addiert bzw. subtrahiert die Determinanten der kleineren Submatrizen.

!

Page 21: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Diagonale einer Matrix !Die Diagonale einer Matrix ist im Gegensatz zum vorangegangenen Kapitel ein spezieller Abschnitt einer Matrix, der üblicherweise Elemente von links oben bis rechts unten entlang einer gedachten Linie umfasst.   Hauptdiagonale einer Matrix ausgeben:   Exakt von links oben nach rechts unten verläuft die Hauptdiagonale einer Matrix. Diese können wir uns als Vektor ausgeben lassen.   Zunächst erzeugen wir wieder eine Matrix im Terminal. !

!Dann lassen wir uns von Octave die Hauptdiagonale mit dem Befehl diag(A) als Vektor ausgeben. !

!Hauptdiagonale frei wählen:   Durch Eingabe des Befehls B = diag([12 13 14 15 16]) erhalten wir eine Matrix, die nur aus einer von uns vorgegebenen Hauptdiagonalen besteht. !

!

Page 22: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Nebendiagonale:   Möchte man eine Matrix mit einer Nebendiagonalen, oberhalb oder unterhalb der Hauptdiagonalen darstellen, so ist dafür ebenfalls der Befehl diag zu gebrauchen, mit diag([x y z], p), wobei x,y,z beliebige Werte sein können und p bzw. -p angibt, ob die Nebendiagonale oberhalb bzw. unterhalb und an welcher Stelle liegen soll. !

!�

Page 23: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Spezialfall Einheitsmatrix:   Mit dem Befehl eye(x) bzw. eye (x,y) lässt sich auch eine Einheitsmatrix ausgeben, die unter anderem in der linearen Algebra von Bedeutung ist. Dabei haben alle Werte in der Diagonalen das Attribut 1. Wird nur x angegeben, wird die Matrix quadratisch, mit x und y lassen sich beliebige Matrizen der Form m x n ausgeben.

Praktisches Anwendungsbeispiel: !Mit Hilfe der Einheitsmatrix (I) lässt sich unter Umständen die Inverse einer gegebenen Matrix bestimmen. Es gilt:

Page 24: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Elementweises Rechnen mit Matrizen und Vektoren (Min, Max) !Vektoren und Matrizen bestehen in der Regel aus mehreren Elementen. Bei einer Rechenoperation zwischen zwei Vektoren oder Matrizen lässt sich eine Erweiterung mittels des "."-Operators vornehmen, die die Rechenoperationen elementweise durchführbar macht. Dies ist für die Matrizenmultiplikation relevant. Bei einer normalen Multiplikation muss die Spaltenanzahl der ersten Matrix gleich der Zeilenanzahl der zweiten Matrix sein. Das Matrizenprodukt hat dann die Zeilenzahl der ersten und die Spaltenzahl der zweiten Matrix.   Multiplizieren von Matrizen mit "."-Operator:   Für das elementweise Multiplizieren müssen beide Matrizen die gleichen Dimensionen haben. !

!

� !

Page 25: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Multiplizieren von Vektoren mit "."-Operator:   Auch Vektoren lassen sich jetzt elementweise multiplizieren, ohne einen Vektor vorher transponieren zu müssen.

Praktisches Anwendungsbeispiel: !Bea, Trixi und Petra haben Lust auf Süßes und kaufen Schokolade. Wie viel Gramm sie von welcher Sorte kaufen, tragen sie in ein Array ein. Mit Hilfe der elementweisen Multiplikation können sie leicht herausfinden, wer wie viel bezahlen muss.

Page 26: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Kleinstes Element von Matrix/Vektor ausgeben lassen:   Will man sich das kleinste Element eines Vektors oder einer Matrix ausgeben lassen, vielleicht in Vorbereitung einer Sortier-Operation, so hilft der Operator min. Bei Vektoren gibt er das kleinste Element aus. Bei Matrizen gibt er einen Zeilenvektor aus, dessen Elemente die kleinsten Elemente der zu Grunde liegenden Spalten der Ausgangsmatrix sind. !

!

� !

Page 27: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Größtes Element von Matrix/Vektor ausgeben lassen:   Analog zum min-Operator funktioniert der max-Operator. !

Page 28: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Abfrage gleicher Elemente !Um (mehrdimensionale) Vektoren miteinander zu vergleichen bietet Octave eine ganze Reihe von Funktionen. Hier sollen zwei gängige Varianten vorgestellt werden.   Boolesches Vergleichen von Vektoren:   In Octave sind die Wahrheitswerte "wahr" und "falsch" mit 0 und 1 belegt. Vergleicht man zwei Vektoren oder Matrizen miteinander, so kann man Vergleichsoperatoren verwenden (==, !=, <, <=,>=,> usw.). Werden die damit erzeugten Aussagen erfüllt, so zeigt Octave dies durch eine 1 an der Stelle des jeweiligen Elements an. !

Page 29: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Ausgeben gleicher Elemente:   Will man konkret die identischen Werte ausgegeben haben, bietet sich der Befehl find an.

!!

Praktisches Anwendungsbeispiel: !Wenn einem Bildbearbeiter die Aufgabe obliegt, ein Originalfoto von einer Fälschung zu unterscheiden, so kann er ein Bildanalyse-Programm über die Bilder laufen lassen und nach Unterschieden in Pixel-Blöcken suchen lassen. Die Basis eines solchen Vergleichsvorgangs ist ein Matrix-Vergleich.

Page 30: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Linearkombination !Eine Linearkombination von Vektoren ist eine Summe von Vektoren , wobei jeder Vektor noch mit einer (reellen) Zahl, einem Koeffizienten multipliziert wird. Als Ergebnis erhält man wieder einen Vektor. Allgemeine Formel: αa + βb = c.   Einen Vektor durch Linearkombination erzeugen:   Die Addition zweier Vektoren (als Koeffizienten α und β nehmen wir 1) sieht folgendermaßen aus: !

!Vektor d ist jetzt eine simple Linearkombination aus den Vektoren a und b.

!

Praktisches Anwendungsbeispiel: !Das Prinzip der Linearkombination ermöglicht es uns, eine Menge von Vektoren auf lineare Abhängigkeit bzw. lineare Unabhängigkeit zu überprüfen. Zwei Vektoren a und b sind linear unabhängig, wenn: αa + βb = 0 nur mit (α,β = 0) erfüllt ist. Ist die Linearkombination c = 0, obwohl (α,β ≠ 0), sind die Vektoren a und b linear abhängig. Dies ist für die Lösung linearer Gleichungssysteme sinnvoll.

Page 31: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

!Liste der gängigen Kommandos !X = [Zeile1a,Zeile1b,Zeile1c] Zeilenvektor erzeugen

X = [Zeile1a;Zeile2a;Zeile3a] Spaltenvektor

X = [Zeile1a,Zeile1b;Zeile2a,Zeile2b] Matrix erzeugen

X = Anfangswert:Endwert Zeilenvektor mit den Werten Anfangswert bis Endwert erzeugen

X = (Anfangswert:Endwert)' Spaltenvektor mit den Werten Anfangswert bis Endwert erzeugen

X = Anfangswert:Abstand:Endwert Zeilenvektor mit den Werten Anfangswert bis Endwert im festgelegten Abstand erzeugen

X = (Anfangswert:Abstand:Endwert)’ Spaltenvektor mit den Werten Anfangswert bis Endwert im festgelegten Abstand erzeugen

zeros (Anzahl) Quadratische Nullmatrix mit festgelegter Anzahl Zeilen/Spalten erzeugen

zeros (Zeilen,Spalten) Nullmatrix mit festgelegter Anzahl Zeilen/Spalten erzeugen

ones (Anzahl) Quadratische Matrix mit Einsen gefüllt mit festgelegter Anzahl Zeilen/Spalten erzeugen

ones (Zeilen,Spalten) Mit Einsen gefüllte Matrix mit festgelegter Anzahl Zeilen/Spalten erzeugen

X' Vorhandene Matrix transformieren

X(Zeile.Spalte) Rückgabe des Wertes in angegebener Zeile und Spalte

X(Index) Rückgabe des Wertes an angegebenem Index

X(end) Rückgabe des letzten Wertes der Matrix (Wert mit höchstem Index)

flipud(X) Vorhandene Matrix horizontal spiegeln

fliplr(X) Vorhandene Matrix vertikal spiegeln

rot90(X) Vorhandene Matrix um 90° im Uhrzeigersinn drehen

Page 32: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

rot90(X,2) Vorhandene Matrix um 180° im Uhrzeigersinn drehen

rot90(X,3) Vorhandene Matrix um 270° im Uhrzeigersinn drehen

reshape(X,Zeilen,Spalten) Umformung vorhandener Matrix in eine neue mit angegebener Anzahl Zeilen und Spalten

sort(X) Vorhandene Matrix vom kleinsten zum größten Wert sortieren

X+Y, X -Y, X*Y Rechenoperationen

X/Y, X\Y Octave-Division

X = Y([Zeile,Zeile], [Spalte,Spalte]) Submatrix erzeugen

diag(X) Hauptdiagonale als Vektor

X = diag([Werte]) Erzeugen einer Matrix, die nur die gewünschte Hauptdiagonale enthält

diag([x y z], p) Erzeugen einer beliebigen Nebendiagonale

eye(x) Erzeugen einer Einheitsmatrix

min(X);max(X) Ausgabe des kleinesten/größten Elements von Vektor oder Matrix

X.*Y Elementweises Multiplizieren von Vektoren und Matrizen

find(X==Y) Identische Elemente herausfiltern und ausgeben

Page 33: Hochschule für Technik und Wirtschaft Berlin - Beleg zum ...petra/mathe/Octave_E...Beim Transponieren einer Matrix wird diese an ihrer Hauptdiagonalen gespiegelt. Die Zeilen werden

Quellen !Deckblatt Bild: http://www.gnu.org/software/octave/images/screenshot.png !Matrix-Division: http://www.tm-mathe.de/Themen/html/matlab__matrix-division__vorsi.html   Beispiel Rechenoperationen mit Matrizen: http://optimierung.mathematik.uni-kl.de/mamaeusch/veroeffentlichungen/ver_texte/matrizenrechnung.pdf !Pascalsche Matrix: http://www.fim.uni-linz.ac.at/lva/rus/rekursion/RekMathBsp2.htm http://www.mathepedia.de/Pascalsches_Dreieck.aspx