Qu'est-ce qu'une matrice?
Une matrice avec m
colonnes et n
lignes représente une fonction qui consomme un vecteur * avec des m
éléments (ou coordonnées) et produit un vecteur avec des n
éléments.
De cela, vous pouvez observer que si et seulement si une matrice est carrée, la dimensionnalité du vecteur ne changera pas. Par exemple. vous obtenez un vecteur 3D en transformant un vecteur 3D, un 2D en 2D, etc.
* : En physique, les vecteurs sont généralement utilisés pour indiquer des forces ou d'autres "influences" qui "se déplacent" telles que la vitesse ou l'accélération. Mais rien ne vous empêche d'utiliser un vecteur pour représenter un point ou tout tableau arbitraire de nombres (certaines bibliothèques et langages de programmation utilisent même "vecteur" pour signifier "tableau 1D"). Pour une utilisation avec des matrices, tout peut être les éléments de votre vecteur (même des chaînes ou des couleurs), tant que vous avez un moyen de les additionner, de les soustraire et de les multiplier par quels que soient les éléments de votre matrice. D'où le nom du vecteur , qui signifie «porteur» - il porte ou détient des valeurs pour vous.
Que signifie multiplier par une matrice?
Donc, si une matrice est une fonction, quel genre de fonction ? Que fait la fonction? La recette est définie par les éléments de la matrice. Appelons l'entrée u
, la sortie v
, la matrice M
(la multiplication M*u=v
est alors la même que f(u)=v
) et u(i)
donne le i
th élément de u
(le 2e élément est la coordonnée y, par exemple). Pour la matrice, M(i,j)
signifie ligne i
, colonne j
.
La construction de l'élément v(1)
, la première du résultat, est décrite par la première ligne de la matrice. u(1)
fois M(1,1)
, plus u(2)
fois M(1,2)
, ... plus u(i)
fois M(1,i)
. Une matrice est un peu comme un langage de programmation très simple, qui n'est bon que pour programmer des fonctions qui fonctionnent en mélangeant les entrées, en les ajoutant à elles-mêmes, etc. **
Il est utile d'imaginer que vous travaillez sur un élément de sortie à la fois, par conséquent, vous n'utilisez qu'une seule ligne de la matrice à la fois. Vous écrivez u
horizontalement. Vous écrivez la ième ligne en M
dessous. Vous multipliez chaque paire ci-dessus / ci-dessous et écrivez les produits ci-dessous, puis additionnez les produits. Répétez l'opération pour chaque ligne pour obtenir chaque élément v
. (Maintenant, vous voyez pourquoi une matrice m
by n
doit fonctionner sur un m
vecteur et produire un n
vecteur.)
Une autre façon de penser à cela - disons que nous faisons une transformation 3D en 3D, donc une matrice 3x3 (ou transformation 3D comme on les appelle souvent parce que vous pouvez prétendre que cette "fonction" "déplace" des points 3D, même si c'est vraiment juste changer les chiffres). Disons que la première ligne est [1 2 0]
. Cela signifie que, pour obtenir x du résultat, obtenez 1 du x de l'entrée, 2 du y de l'entrée et 0 du z de l'entrée. C'est donc vraiment une recette.
** : Si une matrice est un langage de programmation, alors ce n'est même pas Turing complet.
Que signifie multiplier deux matrices?
S'ils sont tous les deux des matrices de taille appropriée, cela A*B
signifie "une fonction qui s'applique en premier B
alors A
". Vous pouvez voir pourquoi les contraintes sur les tailles de multiplication existent, car la taille détermine la taille d'entrée et de sortie, et une matrice consomme la sortie de l'autre. Pourquoi la multiplication signifie-t-elle combiner des fonctions? Il est plus facile de remarquer que cela doit être le cas. Si A*u
est identique à f(u)
et B*u
est identique à g(u)
alors f(g(u))
est identique à f(B*u)
qui est identique à A*(B*u)
.
De même, des applications répétées de la même fonction peuvent être représentées comme des pouvoirs, car cela A*A*A
signifie appliquer la fonction qui A
représente trois fois.
Comment les matrices sont-elles utiles?
À quoi sert une transformation comme new_x = 1*x+2*y+0*z
(si la première ligne est [1 2 0])? Ce n'est pas très évident, mais prenons une autre matrice 2D pour expliquer cela. La matrice est:
[ 0 1
1 0 ]
Ou en [0 1; 1 0]
utilisant la notation Matlab pratique. Que fait cette matrice? Il transforme un vecteur 2D comme ceci: Pour le x du résultat, prenez 1 du y de l'entrée. Pour le y de résultat, prenez 1 du x de l'entrée. Nous venons d'échanger les coordonnées x et y de l'entrée - cette matrice reflète les points sur la ligne x = y. C'est en quelque sorte utile! Par extension, vous verrez que toutes les matrices avec 1s le long de la ligne SW - NE se reflètent. Vous pouvez également voir pourquoi les matrices d'identité vous donnent l'entrée (pour x de sortie, prenez x d'entrée; pour y de sortie, prenez y d'entrée ...).
Vous voyez maintenant pourquoi les symboles sont par exemple. Xx
, Yx
- ils veulent dire combien d'entrée X
, Y
etc. passe en sortie x
.
Sinon, comment les matrices sont-elles utiles?
Quelle autre transformation pouvez-vous faire? Vous pouvez redimensionner en prenant une matrice d'identité, mais avec un nombre différent de 1 le long de la diagonale. Par exemple, [2.5 0; 0 22.5]
multipliera chaque coordonnée de l'entrée par 2,5, et si vous appliquez cette matrice à chaque point d'une image, l'image sera 2,5 aussi grande. Si vous ne mettez que 2,5 sur une ligne ( [2.5 0; 0 1]
), seule la coordonnée x sera multipliée, vous ne vous étirez donc que le long de x.
D'autres matrices peuvent donner d'autres transformations, telles que le "biais", qui ont différents degrés d'utilité. Personnellement, l'inclinaison est mon moins préférée parce que la matrice a l'air si simple mais la transformation elle-même ne fait rarement rien, à part altérer une image. Une «rotation» est utile: comment faire pivoter un point? Essayez de déterminer la position du point (x, y)
après une rotation de theta
degrés dans le sens antihoraire autour de l'origine. Vous constaterez que les nouvelles coordonnées x et y proviennent toutes deux de la multiplication des anciens x et y par des sinus et cosinus de thêta. Vous devriez pouvoir écrire facilement une matrice de rotation en utilisant des sinus et des cosinus qui correspondent à cette fonction.
Avec des matrices non carrées, vous pouvez également modifier la dimensionnalité d'une entrée. Transformer une entrée 2D en 3D n'est pas très utile, car il est difficile de «fabriquer» quelque chose à mettre dans la nouvelle coordonnée, mais la 3D en 2D est très utile. Entre autres choses, c'est ainsi que votre ordinateur sait projeter *** une scène 3D en image 2D pour dessiner sur votre moniteur.
Étant donné que les vecteurs peuvent contenir différentes choses, vous pouvez même décrire une matrice qui crypte une chaîne de n caractères à la fois, en les mélangeant ou en les "multipliant" (vous devrez trouver une fonction de multiplication / addition).
*** : Lorsque vous projetez , vous prenez un objet 3D comme une sculpture, vous y éclairez et voyez quel genre d'ombre 2D tombe sur un mur.
Quelles sont les limites des matrices?
Pouvez-vous faire toutes les fonctions avec des matrices? Non. En pensant graphiquement, il est difficile d'imaginer quelque chose qu'une matrice ne pourrait pas faire (mais elle existe: un effet "tourbillonnant" ne peut pas être fait, par exemple). Cependant, voici un exemple simple: disons que la fonction f
est telle qu'elle f(u)
vous rend u
chaque élément au carré . Vous verrez que vous ne pouvez pas écrire de matrice pour cela: Avec les matrices, il n'y a que la possibilité de décrire des recettes qui multiplient les coordonnées par un nombre constant, aucune autre fonction fantaisie comme la puissance ne peut être exprimée.
**** : C'est aussi pourquoi cela s'appelle l' algèbre linéaire - la fonction de puissance est non linéaire , elle ne fait pas une ligne droite lorsqu'elle est tracée.
Sur la ligne supplémentaire étrange dans les matrices 4D
Maintenant, pourquoi la matrice dans votre exemple 4 par 4? Cela ne signifie-t-il pas un espace à 4 dimensions? Nous n'avons pas d'ordinateurs 4D, alors pourquoi? C'est en fait une astuce intéressante avec des matrices qui se rapporte au point précédent sur les opérations linéaires.
Concernant les fonctions qui ne peuvent pas être faites avec les matrices: Quelle est la matrice pour déplacer un point 2D de 2 unités vers la droite (qui produit le point (x+2, y)
? Encore une fois, nous sommes bloqués. Il existe un moyen de multiplier l'entrée, mais aucun moyen d'ajouter Pour le travail 2D, l'astuce consiste à faire comme si vous n'étiez pas dans l'espace 2D, mais dans l'espace 3D, sauf que la hauteur (coordonnée z ou 3e élément) de tout est toujours 1 (c'est un peu comme la façon dont un univers 2D est juste une "plaque" à plat le long du sol d'un univers 3D - dans ce cas, la troisième coordonnée est toujours 0). Ensuite, vous pouvez utiliser cette dernière coordonnée magique comme constante, car vous savez qu'elle est toujours 1 pour chaque entrée.
De même, pour déplacer des points 3D, vous avez besoin de coordonnées 4D. C'est aussi pourquoi toutes les matrices de transformation 3D que vous voyez auront [0 0 0 1]
comme dernière ligne - vous ne devez jamais modifier la 4e dimension, sinon le résultat sera trop compliqué à représenter en 3D!