Vektorraum Übersicht Vektoren Ein Tripel , bestehend aus einer nichtleeren Menge und Verknüpfungen Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.2/?? Beispiele für VR >> a:=matrix([1,2,3,4]): b:=matrix([5,6,7]): a,b +-+ | 1 | +-+ | | | 5 | | 2 | | | | |, | 6 | | 3 | | | | | | 7 | | 4 | +-+ +-+ # für , "$ Ist eine Teilmenge des Vektorraums und gelten alle Vektorraumaxiome, so heißt ein Untervektorraum oder Unterraum von . # !" "! # ! ! ! ! ! – p.3/?? Konstruktion von Vektoren Sei eine beliebige Menge. Die Menge der Abbildungen von in mit den Verknüpfungen Die Abbildung heißt Skalarmultiplikation. Die Elemente des Körpers nennt man Skalare. , Mathematische Anwendersysteme: Einführung in MuPAD Vektoren in MuPAD Die Elemente eines Vektorraums nennt man Vektoren. Gerd Rapin gilt: – p.1/?? Begriffe , wenn gilt: ist eine abelsche Gruppe. 2. Für alle 1. Erstes Programm Mathematische Anwendersysteme: Einführung in MuPAD heißt Vektorraum über einem Körper Benutzen von MuPAD-Bibliotheken Gerd Rapin Gerd Rapin Matrizen Tag 4 Vektoren Basis und Dimension Matrizen 17.2.2005 Lineare Unabhängigkeit, Basis Vektorräume Mathematische Anwendersysteme Einführung in MuPAD . Die Menge der Polynome bis zum Grad . % als Datentyp: Dom:Matrix() & ist nicht gleich . Beispiel: Es gilt für alle . Vorsicht! -Vektorraum. >> domtype(a) Dom::Matrix() Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.4/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.5/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.6/?? Weitere Notationen und Bemerkungen % % als als -Vektorraum. & % ist eine Basis von -Vektorraum hat keine endliche Basis. Mathematische Anwendersysteme: Einführung in MuPAD – p.7/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.8/?? Mathematische Anwendersysteme: Einführung in MuPAD – p.9/?? MuPAD und >> linalg::intBasis([s1],[s2,s3]) Bestimmen des Schnitts von Bestimmen einer Basis von In der Bibliothek linalg finden sich viele Befehle zur linearen Algebra (? linalg). . Sei eine Basis eines Vektorraums Dann ist die Dimension des Vektorraums definiert durch die Anzahl der Basiselemente, also . MuPAD Gerd Rapin Basis und Dimension ! ! % ! heißen linear unabhängig, falls gilt: und ist Sind so folgt . Andernfalls sind sie linear abhängig. Gerd Rapin Die Monombasis ist eine Basis des Vektorraums der Polynome .-ten Grades. Aus jedem (endlichen) Erzeugendensystem kann man eine Basis auswählen. Gilt , so ist ein Erzeugendensystem. Sind die zusätzlich linear unabhängig, so ist eine Basis. Die Menge aller Linearkombinationen wird Lineare Hülle genannt und durch bezeichnet. Die Lineare Hülle ist ein Unterraum von . sind genau dann linear unabhängig, wenn sich jeder Vektor eindeutig linear kombinieren läßt. , . Seien die Einheitsvektoren. ist eine Basis des . eine Sei ein -Vektorraum und Familie von Elementen aus heißt Linearkombination von mit falls eine Sei ein -Vektorraum und Familie von Elementen aus Beispiele für Basen Lineare Abhängigkeit >> >> >> >> Testen der linearen Unabhängigkeit >> student::isFree([s1,s2,s3]) FALSE und Unterräume von . Dann ist die Summe von Seien Jeder Vektorraum besitzt eine Basis. s1:=matrix([1,0,0]): s2:=matrix([0,1,1]): s3:=matrix([1,1,1]): linalg::basis([s1,s2,s3]) Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD -| | | | | -- . Es gilt – p.10/?? +-+ | 1 | | | | 0 |, | | | 0 | +-+ Gerd Rapin +-+ -| 0 | | | | | | 1 | | | | | | 1 | | +-+ -Mathematische Anwendersysteme: Einführung in MuPAD – p.11/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.12/?? Übersicht: Einige Bibliotheken Exkurs: Bibliotheken in MuPAD Eine Bibliothek besteht aus einer Sammlung von Funktionen zur Lösung von Problemen eines speziellen Gebietes (z.B. lineare Algebra, Zahlentheorie, Numerik). stdlib linalg plot numeric stats numlib student fp Eine Übersicht aller Bibliotheken findet man in der Kurzreferenz (über die Hilfe erreichbar). Durch ? bibi enthält man eine Auflistung der Funktionen in der Bibliothek bibi. Die Standardbibliothek stdlib enthält die wichtigsten Basisfunktionen, die nicht im Kern implementiert sind. Diese Funktionen können direkt benutzt werden. Durch den Befehl export(Bibliothek,Funktion) können Funktionen einer Bibliothek global bekannt gemacht werden. Dies bedeutet, dass die Funktion ohne Voranstellen des Bibliotheksnamen aufgerufen werden kann, z.B. >> export(student, isFree): >>isFree([s1,s2,s3]) FALSE Mathematische Anwendersysteme: Einführung in MuPAD – p.14/?? Mathematische Anwendersysteme: Einführung in MuPAD Definitionen Die Transponierte von . Die Einheitsmatrix .. . . Dann ist die Seien Addition definiert durch und mit Werten zwischen . mit dem Zeilenindex ist .. . Für Matrizen ... .. . gilt. heißt symmetrisch, wenn Die Bibliotheken werden ständig aktualisiert und erweitert. In ihnen steckt das eigentliche mathematische Wissen. ist ist ein , Eine Matrix über einen Körper rechteckiges Schema mit Einträgen , der Form Wird export(Bibliothek) aufgerufen, so werden alle Funktionen der Bibliothek exportiert. – p.15/?? Matrizen Gerd Rapin Benutzen der Bibliotheken Gerd Rapin – p.13/?? Mathematische Anwendersysteme: Einführung in MuPAD Eine Bibliotheksfunktion wird in der Form Bibliothek::Funktion aufgerufen, z.B. linalg::basis([s1,s2,s3]). Standardbibliothek Lineare Algebra Erzeugen von Grafiken Numerische Berechnungen Statistische Berechnungen Zahlentheorie elementare Algorithmen Umgang mit Funktionen Gerd Rapin Benutzen der Bibliotheken und . Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.16/?? Gerd Rapin Man schreibt kurz . Mathematische Anwendersysteme: Einführung in MuPAD – p.17/?? Gerd Rapin . mit mit Werten zwischen und Spaltenindex Mathematische Anwendersysteme: Einführung in MuPAD – p.18/?? Def. und Bemerkungen Def. und Bemerkungen Definitionen Die Menge der orthogonalen Matrizen in bilden eine Untergruppe von , die orthogonale Gruppe . heißt unitär, wenn gilt. – p.20/?? Konstruktion von Matrizen I >> n:=3: m:=4: B:=matrix(n,m) >> f:=(i,j) -> i*j: >> C:=matrix(3,5,f) % - Matrix mit Hilfe einer mit Einträgen Erzeuge eine Funktion Eingabe der Einträge pro Zeile in eckigen Klammern . Alle Spalten dann wieder in eckigen Klammern . Es ist auch möglich Matrizen über bestimmte Ringe (z.B. , ) zu konstruieren. Erzeugen einer Nullmatrix der Größe Die Einträge der Matrix können beliebige Ausdrücke sein. Konstruktion von Matrizen II Der Rückgabewert ist vom Typ Dom::Matrix(). – p.21/?? Es gibt in MuPAD verschiedene Möglichkeiten eine Matrix zu konstruieren. Beispiel Mathematische Anwendersysteme: Einführung in MuPAD Matrizen werden in MuPAD mit Hilfe des Befehls matrix konstruiert. Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD Matrizen in MuPAD Gerd Rapin – p.19/?? Mathematische Anwendersysteme: Einführung in MuPAD Gerd Rapin heißt invertierbar, wenn eine Matrix existiert mit . Die Menge der invertierbaren Matrizen aus bilden bezüglich der Multiplikation eine Gruppe, die allgemeine lineare Gruppe . heißt orthogonal, wenn gilt. Die entsprechende Untergruppe der unitären Matrizen in ist die unitäre Gruppe . . mit Die Matrizen aus bilden einen Vektorraum über (mit komponentenweiser Skalarmultiplikation). . % % Die Multiplikation ist assoziativ aber nicht kommutativ. Seien und Dann ist die Multiplikation gegeben durch Es gibt auch spezielle Datenstrukturen für quadratische Matrizen und für dünnbesetzte Matrizen. A:=matrix([[1, 2, 3, 4],[a, 0, 1, b]]) Eingabe von Zeilen- und Spaltenvektoren >> matrix(3,1,[1, 2,3]) >> matrix(1,3,[4,5,6]) Mit expliziter Größenangabe A:=matrix(2,4,[[1,2,3,4],[a,0,1,b]]) Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.22/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.23/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.24/?? Zeilen- und Spaltenzahl Zugriff auf die Einträge I Zugriff auf die Einträge II Extrahieren von Teilmatrizen >> linalg::ncols(A) >> i:=1: j:=2: A[i,j] 2 >> zeilen:=1..2: spalten:=2..4: >> A[zeilen,spalten] 4 Abfragen von Einträgen in Zeile und Spalte : Abfragen der Spaltenanzahl: linalg::ncols Erzeugen von Diagonalmatrizen >> i:=1: j:=2: A[i,j]:=22 >> x:=[1,2,3,4,5]: >> Diag:=matrix(5,5,x,Diagonal) 2 Extrahieren von Zeilen/ Spalten Dimension der Matrix: linalg::matdim >> zeile:=linalg::row(A,2) >> spalte:=linalg::col(A,4) – p.25/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.26/?? Systemfunktionen Rechnen mit Matrizen Addieren, Multiplizieren Mathematische Anwendersysteme: Einführung in MuPAD – p.27/?? Rang von Matrizen Viele Systemfunktionen lassen sich auf Matrizen anwenden. Beispiele: >> A:=matrix([[a, b], [c,d]]) >> B:=matrix([[e, f], [g,h]]) >> A+B, A*B Gerd Rapin Sei >> Aˆ(-1), linalg::transpose(A) float(A) wendet float auf alle Komponenten an. Die Dimension der linearen Hülle der Zeilenvektoren nennt man den Zeilenrang von Er ist höchstens gleich . . expand(A) wendet expand auf alle Komponenten an. . Die Dimension der linearen Hülle der Spaltenvektoren nennt man den Spaltenrang von . Er ist höchstens gleich . conjugate(A) ersetzt die Komponenten durch ihre komplex konjugierten Einträge. Bestimmung der Inversen und der Transponierten Mathematische Anwendersysteme: Einführung in MuPAD >> linalg::matdim(A) [2, 4] Gerd Rapin Ändern des Eintrags in Zeile und Spalte : >> linalg::nrows(A) Abfragen der Zeilenanzahl: linalg::nrows Zeilenrang und Spaltenrang von Matrizen sind gleich und man spricht deshalb vom Rang einer Matrix. has(A,Ausdruck) prüft, ob ein Ausdruck Ausdruckin mind. einer Komponente von enthalten ist. Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.28/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.29/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.30/?? Skalarprodukt Normen Eine skalarwertige binäre Abbildung . % , # ! oder auf einem Vektorraum über heißt Skalarprodukt, wenn für alle gilt gilt , # so dass für alle Ist eine Matrix unitär ? " >> S:=matrix([[1,0,0],[0,1,1],[1,1,1]]) >> linalg::rank(S) 2 Sei ein Vektorraum über oder Eine Norm auf ist eine Abbildung % Bestimmen des Ranges einer Matrix Matrizen Mathematische Anwendersysteme: Einführung in MuPAD ! #! (Dreiecksungleichung) impliziert # # impliziert >> F:=matrix([[I,0],[0,-I]]) >> linalg::isUnitary(F) TRUE Gerd Rapin ! ! ! ! # ! ! ! >> linalg::isUnitary(S) FALSE heißt normierter Raum. – p.31/?? Mathematische Anwendersysteme: Einführung in MuPAD – p.32/?? Bemerkungen Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.33/?? MuPAD # – p.34/?? Mathematische Anwendersysteme: Einführung in MuPAD der Orthogonalraum zu Gerd Rapin # , so ist für alle Gerd Rapin . Mathematische Anwendersysteme: Einführung in MuPAD >> >> >> >> >> ein Unterraum von , auf wird berechnet durch Orthogonalisieren von Vektoren (hier a1,a2,a3) Jeder endlichdimensionaler Prä-Hilbert-Raum hat eine Orthonormalbasis. Ist % >> x:=matrix([1,2,3,4,5]): p:=2: >> norm(x,p) Eine Orthogonalbasis, bei der alle Vektoren die Norm haben, nennt man Orthonormalbasis. Im euklidischen Raum ist der Winkel zwischen zwei Vektoren definiert durch Eine Basis aus paarweise orthogonalen Vektoren heißt Orthogonalbasis. Die Norm dem mit % Durch , läßt sich eine Norm definieren. Es gilt die Cauchy-Schwarzsche Ungleichung heißen orthogonal, wenn Zwei Vektoren gilt. Ein VR mit Skalarprodukt heißt Prä-Hilbert-Raum. Ist so heißt der Raum auch euklidisch. Bemerkungen Gerd Rapin – p.35/?? a1:=matrix([1,2,3]): a2:=matrix([0,4,1]): a3:=matrix([1,1,1]): a:=linalg::orthog([a1,a2,a3]) a[1] Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.36/?? Ein erstes Programm MuPAD Berechnen des Skalarprodukts >> linalg::scalarProduct(a2,a3) 5 Max:=proc(a,b) /* Maximum von a und b*/ begin if a<b then return(b) else return(a) end_if end_proc: Etwas Programmieren Berechnen des Winkels zwischen zwei Vektoren Das erste Beispiel berechnet das Maximum zweier Zahlen und . Berechnen der Determinante Aufruf in MuPAD ist Max(a,b). >> A:=matrix([[1,2,3],[4,5,6],[7,8,0]]): >> linalg::det(A) 27 Die Funktion gibt dann entweder den Wert den Wert zurück. Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD >> float(linalg::angle(a2,a3)) 0.7952027133 – p.37/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD Mittels return(a) wird die Prozedur abgebrochen und der Wert a züruckgegeben. Diese wird dann durch die rechte Seite als Objekt vom Typ DOM_PROC definiert. Wird kein return aufgerufen, so gibt die Funktion den Wert des letzten Befehls zurück, der innerhalb der Prozedur ausgewertet wurde. Eine Prozedur beginnt mit proc(..) begin und endet mit end_proc. Mathematische Anwendersysteme: Einführung in MuPAD – p.40/?? Mathematische Anwendersysteme: Einführung in MuPAD – p.39/?? Der zwischen /* und */ eingeschlossene Text ist Kommentar. Er wird vom System völlig ignoriert. Die durch if bedingung then eingeleitete Zeile ist eine sog. Verzweigung. Ist die Bedingung bedingung wahr, so wird der Teil hinter then ausgeführt. Ist bedingung falsch, so wird die Alternative ausgeführt. Beendet wird die Verzweigung mit end_if. Wird innerhalb der Prozedur kein Befehl ausgeführt, so wird NIL zurückgegeben. NIL steht für das Nichts. Man kann es auffassen als die leere Menge. proc(a,b,c..) gibt an, wie die Input-Argumente aussehen. Gerd Rapin Erkärungen Eine Prozedur beginnt mit dem Namen der Prozedur (hier: Max). Gerd Rapin – p.38/?? Return Aufbau von Prozeduren oder Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.41/?? Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.42/?? Erstellen von Prozeduren Bei umfangreicheren Prozeduren ist es sinnvoller die Prozedur mit einem Editor zu erstellen. In unserem Beispiel ist die Routine Max in einer Datei mit dem Namen max.mup abgespeichert. Diese Datei kann nun durch read(‘‘max.mup’’) eingelesen werden und dann normal verwendet werden. Hierdurch ist auch die Wiederverwertbarkeit der Funktion gesichert. Gerd Rapin Mathematische Anwendersysteme: Einführung in MuPAD – p.43/??