Was ist eine Matrix?
Eine Matrix mit m
Spalten und n
Zeilen repräsentiert eine Funktion, die einen Vektor * mit m
Elementen (oder Koordinaten) verbraucht und einen Vektor mit n
Elementen erzeugt.
Daraus können Sie ersehen, dass sich die Dimensionalität des Vektors nur dann ändert, wenn eine Matrix quadratisch ist. Z.B. Sie erhalten einen 3D-Vektor durch Transformation eines 3D-Vektors, einen 2D-Vektor aus einem 2D-Vektor usw.
* : In der Physik werden Vektoren normalerweise verwendet, um Kräfte oder andere "Einflüsse" anzuzeigen, die sich um Dinge wie Geschwindigkeit oder Beschleunigung "bewegen". Aber nichts hindert Sie daran, einen Vektor zu verwenden, um einen Punkt oder ein beliebiges Array von Zahlen darzustellen (einige Bibliotheken und Programmiersprachen verwenden sogar "Vektor", um "1D-Array" zu bedeuten). Für die Verwendung mit Matrizen können alle Elemente Ihres Vektors (auch Zeichenfolgen oder Farben) verwendet werden, sofern Sie die Möglichkeit haben, sie zu addieren, zu subtrahieren und mit den Elementen Ihrer Matrix zu multiplizieren. Daher auch der Name Vektor , der „Träger“ bedeutet - es trägt oder hält für Sie Werte.
Was bedeutet Multiplikation mit einer Matrix?
Also, wenn eine Matrix eine Funktion ist, welche Art von Funktion ? Was macht die Funktion? Das Rezept dafür wird durch die Elemente der Matrix definiert. Nennen wir die Eingabe u
, die Ausgabe v
, die Matrix M
(die Multiplikation M*u=v
ist dann die gleiche wie f(u)=v
) und u(i)
geben das i
th-Element von an u
(das 2. Element ist zum Beispiel die y-Koordinate). Für die Matrix M(i,j)
bedeutet Zeile i
, Spalte j
.
Die Konstruktion des Elements v(1)
, das erste im Ergebnis, wird durch die erste Zeile der Matrix beschrieben. u(1)
Zeiten M(1,1)
, plus u(2)
Zeiten M(1,2)
, ... plus u(i)
Zeiten M(1,i)
. Eine Matrix ist ein bisschen wie eine sehr einfache Programmiersprache, die nur für Programmierfunktionen geeignet ist, bei denen die Eingaben gemischt und zu sich selbst hinzugefügt werden. **
Es ist hilfreich, sich vorzustellen, dass Sie jeweils nur an einem Ausgabeelement arbeiten. Daher verwenden Sie jeweils nur eine Zeile der Matrix. Sie schreiben u
horizontal aus. Sie schreiben die i-te Zeile M
darunter. Sie multiplizieren jedes Paar über / unter und schreiben die Produkte unten, dann addieren Sie die Produkte. Wiederholen Sie diesen Vorgang für jede Zeile, um alle Elemente von zu erhalten v
. (Jetzt sehen Sie, warum eine m
By- n
Matrix einen m
Vektor bearbeiten und einen n
Vektor erzeugen muss .)
Eine andere Möglichkeit, dies zu überdenken: Nehmen wir an, wir führen eine 3D-zu-3D-Transformation durch, also eine 3x3-Matrix (oder 3D-Transformation, wie sie oft genannt wird, weil Sie so tun können, als ob diese "Funktion" 3D-Punkte "bewegt", obwohl es sich tatsächlich um 3D-Punkte handelt nur die Zahlen ändern). Nehmen wir an, die erste Reihe ist [1 2 0]
. Das heißt, um x des Ergebnisses zu erhalten, erhalten Sie 1 von x der Eingabe, 2 von y der Eingabe und 0 von z der Eingabe. Es ist also wirklich ein Rezept.
** : Wenn eine Matrix eine Programmiersprache ist, ist sie noch nicht einmal vollständig.
Was bedeutet die Multiplikation zweier Matrizen?
Handelt es sich bei beiden um Matrizen entsprechender Größe, so A*B
bedeutet dies "eine Funktion, die B
dann zuerst gilt A
". Sie können sehen, warum die Beschränkungen für die Größen für die Multiplikation bestehen, da die Größe die Eingabe- und Ausgabegröße bestimmt und eine Matrix die Ausgabe der anderen verbraucht. Warum bedeutet Multiplikation, Funktionen zu kombinieren? Es ist leichter zu bemerken, dass es sein muss. Wenn A*u
ist das gleiche wie f(u)
und B*u
ist das gleiche wie g(u)
dann f(g(u))
ist das gleiche wie f(B*u)
das gleiche wie A*(B*u)
.
Ebenso können wiederholte Anwendungen derselben Funktion als Potenzen dargestellt werden, da A*A*A
dies die A
dreimalige Anwendung der Funktion bedeutet .
Wie sind Matrizen nützlich?
Was nützt es, eine Transformation durchzuführen new_x = 1*x+2*y+0*z
(wenn die erste Zeile [1 2 0] ist)? Das ist nicht sehr offensichtlich, aber nehmen wir eine andere 2D-Matrix, um das zu erklären. Die Matrix lautet:
[ 0 1
1 0 ]
Oder [0 1; 1 0]
mit der praktischen Matlab-Notation. Was macht diese Matrix? Es transformiert einen 2D-Vektor wie folgt: Nehmen Sie für das x des Ergebnisses 1 des y der Eingabe. Für das y des Ergebnisses wird 1 des x der Eingabe genommen. Wir haben gerade die x- und y-Koordinaten der Eingabe vertauscht - diese Matrix spiegelt Punkte um die x = y-Linie wider . Das ist irgendwie nützlich! Durch die Erweiterung, werden Sie sehen , dass alle Matrizen mit 1s entlang der SW - NE Linie reflektieren. Sie können auch sehen, warum Identitätsmatrizen Ihnen die Eingabe zurückgeben (für x der Ausgabe nehmen Sie x der Eingabe; für y der Ausgabe nehmen Sie y der Eingabe ...).
Jetzt sehen Sie, warum die Symbole z. Xx
, Yx
- sie bedeuten , wie viel von Eingabe X
, Y
usw. geht in Ausgabe x
.
Wie sonst sind Matrizen nützlich?
Welche andere Transformation kannst du machen? Sie können die Größe ändern, indem Sie eine Identitätsmatrix mit einer anderen Nummer als 1 entlang der Diagonale verwenden. Wenn Sie beispielsweise [2.5 0; 0 22.5]
jede Koordinate der Eingabe mit 2,5 multiplizieren und diese Matrix auf jeden Punkt in einem Bild anwenden, wird das Bild 2,5 mal so groß. Wenn Sie nur eine 2,5 in eine Zeile ( [2.5 0; 0 1]
) einfügen, wird nur die x-Koordinate multipliziert, sodass Sie sich nur entlang x strecken.
Andere Matrizen können andere Transformationen ergeben, wie beispielsweise "Schrägstellen", die einen unterschiedlichen Grad an Nützlichkeit aufweisen. Ich persönlich bin am wenigsten geneigt, weil die Matrix so einfach aussieht, aber die Transformation selbst macht selten etwas anderes als ein Bild zu entstellen. Eine nützliche ist "Rotation" - wie rotiert man einen Punkt? Versuchen Sie, die Position des Punktes zu ermitteln, (x, y)
nachdem Sie ihn um theta
Grad gegen den Uhrzeigersinn um den Ursprung gedreht haben. Sie werden feststellen, dass die neuen x- und y-Koordinaten beide aus der Multiplikation des alten x und y mit einigen Sinus- und Cosinus-Theta-Werten resultieren. Sie sollten in der Lage sein, eine Rotationsmatrix mit Sinus und Cosinus, die dieser Funktion entspricht, einfach zu schreiben.
Mit nicht quadratischen Matrizen können Sie auch die Dimensionalität einer Eingabe ändern. Das Umwandeln einer 2D-Eingabe in 3D ist nicht sehr nützlich, da es schwierig ist, etwas in die neue Koordinate zu "fertigen", aber das Umwandeln von 3D in 2D ist sehr nützlich. Unter anderem weiß Ihr Computer, *** wie Sie eine 3D-Szene in ein 2D-Bild projizieren, um es auf Ihrem Monitor zu zeichnen.
Da Vektoren verschiedene Dinge enthalten können, könnten Sie sogar eine Matrix beschreiben, die jeweils eine Zeichenfolge mit n Zeichen verschlüsselt, indem Sie diese umeinander mischen oder "multiplizieren" (Sie müssten sich eine Multiplikations- / Additionsfunktion einfallen lassen).
*** : Wenn Sie projizieren , nehmen Sie ein 3D-Objekt wie eine Skulptur, beleuchten es und sehen, welche Art von 2D-Schatten auf eine Wand fällt.
Was sind die Grenzen von Matrizen?
Können Sie jede Funktion mit Matrizen ausführen? Nein. Wenn Sie grafisch denken, können Sie sich nur schwer vorstellen, was eine Matrix nicht kann (aber es gibt einen "Wirbel" -Effekt, der zum Beispiel nicht möglich ist). Hier ist jedoch ein einfaches Beispiel: Nehmen wir an, die Funktion f
ist so, dass f(u)
Sie u
mit jedem quadratischen Element zurückfinden . Sie werden sehen, dass Sie dafür keine Matrix schreiben können: Bei Matrizen gibt es nur die Möglichkeit, Rezepte zu beschreiben, bei denen Koordinaten mit einer konstanten Zahl multipliziert werden. Andere ausgefallene Funktionen wie die Potenz können nicht ausgedrückt werden.
**** : Dies ist auch der Grund, warum es als lineare Algebra bezeichnet wird - die Potenzfunktion ist nicht linear und zeichnet keine gerade Linie.
Auf der seltsamen zusätzlichen Reihe in 4D-Matrizen
Warum ist die Matrix in Ihrem Beispiel 4 mal 4? Bedeutet das nicht 4-dimensionaler Raum? Wir haben keine 4D Computer, warum also? Dies ist tatsächlich ein interessanter Trick mit Matrizen, der sich auf den vorherigen Punkt über lineare Operationen bezieht.
Zu den Funktionen, die mit Matrizen nicht möglich sind: Wie lautet die Matrix zum Verschieben eines 2D-Punkts um 2 Einheiten nach rechts (wodurch der Punkt erzeugt wird) (x+2, y)
? Auch hier bleiben wir stecken. Es gibt eine Möglichkeit, die Eingabe zu multiplizieren, aber keine Möglichkeit zum Hinzufügen Bei 2D-Arbeiten besteht der Trick darin, so zu tun, als ob Sie sich nicht im 2D-Raum befinden, sondern im 3D-Raum, außer dass die Höhe (z-Koordinate oder 3. Element) von allem immer 1 ist (ein bisschen wie bei einem 2D-Universum) Nur eine "Platte", die flach auf dem Boden eines 3D-Universums liegt - in diesem Fall ist die dritte Koordinate immer 0.) Dann können Sie diese magische letzte Koordinate als Konstante verwenden, da Sie wissen, dass sie für jede Eingabe immer 1 ist.
Ebenso benötigen Sie zum Verschieben von 3D-Punkten 4D-Koordinaten. Das ist auch der Grund, warum alle 3D-Transformationsmatrizen, die Sie sehen, [0 0 0 1]
als letzte Zeile angezeigt werden - Sie dürfen niemals die 4. Dimension ändern, da das Ergebnis sonst zu kompliziert ist, um es in 3D darzustellen!