Matrix operations

This commit is contained in:
Antti H S Laaksonen 2017-01-14 17:35:27 +02:00
parent 8b4a58b3ba
commit 58aa6bef6d
1 changed files with 107 additions and 112 deletions

View File

@ -1,11 +1,10 @@
\chapter{Matrices} \chapter{Matrices}
\index{matriisi@matriisi} \index{matrix}
\key{Matriisi} on kaksiulotteista taulukkoa A \key{matrix} is a mathematical concept
vastaava matemaattinen käsite, that corresponds to a two-dimensional array
jolle on määritelty laskutoimituksia. in programming. For example,
Esimerkiksi
\[ \[
A = A =
\begin{bmatrix} \begin{bmatrix}
@ -14,19 +13,19 @@ A =
9 & 5 & 4 & 18 \\ 9 & 5 & 4 & 18 \\
\end{bmatrix} \end{bmatrix}
\] \]
on matriisi, jossa on 3 riviä ja 4 saraketta is a matrix of size $3 \times 4$, i.e.,
eli se on kokoa $3 \times 4$. it has 3 rows and 4 columns.
Viittaamme matriisin alkioihin The notation $[i,j]$ refers to
merkinnällä $[i,j]$, the element in row $i$ and column $j$
jossa $i$ on rivi ja $j$ on sarake. in a matrix.
Esimerkiksi yllä olevassa matriisissa For example, in the above matrix,
$A[2,3]=8$ ja $A[3,1]=9$. $A[2,3]=8$ and $A[3,1]=9$.
\index{vektori@vektori} \index{vector}
Matriisin erikoistapaus on \key{vektori}, A special case of a matrix is a \key{vector}
joka on kokoa $n \times 1$ oleva yksiulotteinen matriisi. that is a one-dimensional matrix of size $n \times 1$.
Esimerkiksi For example,
\[ \[
V = V =
\begin{bmatrix} \begin{bmatrix}
@ -35,13 +34,13 @@ V =
5 \\ 5 \\
\end{bmatrix} \end{bmatrix}
\] \]
on vektori, jossa on 3 alkiota. is a vector that contains three elements.
\index{transpoosi@transpoosi} \index{transpose}
Matriisin $A$ \key{transpoosi} $A^T$ syntyy, The \key{transpose} $A^T$ of a matrix $A$
kun matriisin rivit ja sarakkeet vaihdetaan is obtained when the rows and columns in $A$
keskenään eli $A^T[i,j]=A[j,i]$: are swapped, i.e., $A^T[i,j]=A[j,i]$:
\[ \[
A^T = A^T =
\begin{bmatrix} \begin{bmatrix}
@ -52,11 +51,12 @@ A^T =
\end{bmatrix} \end{bmatrix}
\] \]
\index{nelizmatriisi@neliömatriisi} \index{square matrix}
Matriisi on \key{neliömatriisi}, jos sen A matrix is a \key{square matrix} if it
korkeus ja leveys ovat samat. has the same number of rows and columns.
Esimerkiksi seuraava matriisi on neliömatriisi: For example, the following matrix is a
square matrix:
\[ \[
S = S =
@ -67,17 +67,15 @@ S =
\end{bmatrix} \end{bmatrix}
\] \]
\section{Laskutoimitukset} \section{Operations}
Matriisien $A$ ja $B$ summa $A+B$ on määritelty, The sum $A+B$ of matrices $A$ and $B$
jos matriisit ovat yhtä suuret. is defined if the matrices are of the same size.
Tuloksena oleva matriisi on The result is a matrix where each element
samaa kokoa kuin is the sum of the corresponding elements
matriisit $A$ ja $B$ ja sen jokainen in matrices $A$ and $B$.
alkio on vastaavissa kohdissa
olevien alkioiden summa.
Esimerkiksi For example,
\[ \[
\begin{bmatrix} \begin{bmatrix}
6 & 1 & 4 \\ 6 & 1 & 4 \\
@ -100,10 +98,10 @@ Esimerkiksi
\end{bmatrix}. \end{bmatrix}.
\] \]
Matriisin $A$ kertominen luvulla $x$ tarkoittaa, Multiplying a matrix $A$ by a value $x$ means
että jokainen matriisin alkio kerrotaan luvulla $x$. that we multiply each element in $A$ by $x$.
Esimerkiksi For example,
\[ \[
2 \cdot \begin{bmatrix} 2 \cdot \begin{bmatrix}
6 & 1 & 4 \\ 6 & 1 & 4 \\
@ -121,26 +119,23 @@ Esimerkiksi
\end{bmatrix}. \end{bmatrix}.
\] \]
\subsubsection{Matriisitulo} \subsubsection{Matrix multiplication}
\index{matriisitulo@matriisitulo} \index{matrix multiplication}
Matriisien $A$ ja $B$ tulo $AB$ on määritelty, The product $AB$ of matrices $A$ and $B$
jos matriisi $A$ on kokoa $a \times n$ is defined if $A$ is of size $a \times n$
ja matriisi $B$ on kokoa $n \times b$ and $B$ is of size $n \times b$, i.e.,
eli matriisin $A$ leveys on sama kuin matriisin the width of $A$ equals the height of $B$.
$B$ korkeus. The result is a matrix of size $a \times b$
Tuloksena oleva matriisi whose elements are calculated using the formula
on kokoa $a \times b$
ja sen alkiot lasketaan kaavalla
\[ \[
AB[i,j] = \sum_{k=1}^n A[i,k] \cdot B[k,j]. AB[i,j] = \sum_{k=1}^n A[i,k] \cdot B[k,j].
\] \]
Kaavan tulkintana on, että kukin $AB$:n alkio The idea is that each element in $AB$
saadaan summana, joka muodostuu $A$:n ja is a sum of products of elements in $A$ and $B$
$B$:n alkioparien tuloista seuraavan according to the following picture:
kuvan mukaisesti:
\begin{center} \begin{center}
\begin{tikzpicture}[scale=0.5] \begin{tikzpicture}[scale=0.5]
@ -158,7 +153,7 @@ kuvan mukaisesti:
\end{tikzpicture} \end{tikzpicture}
\end{center} \end{center}
Esimerkiksi For example,
\[ \[
\begin{bmatrix} \begin{bmatrix}
@ -185,18 +180,18 @@ Esimerkiksi
\end{bmatrix}. \end{bmatrix}.
\] \]
Matriisitulo ei ole vaihdannainen, Matrix multiplication is not commutative,
eli ei ole voimassa $A \cdot B = B \cdot A$. so $AB = BA$ doesn't hold.
Kuitenkin matriisitulo However, it is associative,
on liitännäinen, eli on voimassa $A \cdot (B \cdot C)=(A \cdot B) \cdot C$. so $A(BC)=(AB)C$ holds.
\index{ykkzsmatriisi@ykkösmatriisi} \index{identity matrix}
\key{Ykkösmatriisi} on neliömatriisi, An \key{identity matrix} is a square matrix
jonka lävistäjän jokainen alkio on 1 where each element on the diagonal is 1,
ja jokainen muu alkio on 0. and all other elements are 0.
Esimerkiksi $3 \times 3$ -yksikkömatriisi on For example, the $3 \times 3$ identity matrix
seuraavanlainen: is as follows:
\[ \[
I = \begin{bmatrix} I = \begin{bmatrix}
1 & 0 & 0 \\ 1 & 0 & 0 \\
@ -206,8 +201,8 @@ seuraavanlainen:
\] \]
\begin{samepage} \begin{samepage}
Ykkösmatriisilla kertominen säilyttää matriisin Multiplying a matrix by an identity matrix
ennallaan. Esimerkiksi doesn't change it. For example,
\[ \[
\begin{bmatrix} \begin{bmatrix}
1 & 0 & 0 \\ 1 & 0 & 0 \\
@ -245,24 +240,26 @@ ennallaan. Esimerkiksi
\] \]
\end{samepage} \end{samepage}
Kahden $n \times n$ kokoisen matriisin tulon Using a straightforward algorithm,
laskeminen vie aikaa $O(n^3)$ we can calculate the product of
käyttäen suoraviivaista algoritmia. two $n \times n$ matrices
Myös nopeampia algoritmeja on olemassa: in $O(n^3)$ time.
tällä hetkellä nopein tunnettu algoritmi There are also more efficient algorithms
vie aikaa $O(n^{2{,}37})$. for matrix multiplication:
Tällaiset algoritmit eivät kuitenkaan at the moment, the best known time complexity
ole tarpeen kisakoodauksessa. is $O(n^{2.37})$.
However, such special algorithms are not needed
in competitive programming.
\subsubsection{Matriisipotenssi} \subsubsection{Matrix power}
\index{matriisipotenssi@matriisipotenssi} \index{matrix power}
Matriisin $A$ potenssi $A^k$ on The power $A^k$ of a matrix $A$ is defined
määritelty, jos $A$ on neliömatriisi. if $A$ is a square matrix.
Määritelmä nojautuu kertolaskuun: The definition is based on matrix multiplication:
\[ A^k = \underbrace{A \cdot A \cdot A \cdots A}_{\textrm{$k$ kertaa}} \] \[ A^k = \underbrace{A \cdot A \cdot A \cdots A}_{\textrm{$k$ times}} \]
Esimerkiksi For example,
\[ \[
\begin{bmatrix} \begin{bmatrix}
@ -286,7 +283,7 @@ Esimerkiksi
33 & 114 \\ 33 & 114 \\
\end{bmatrix}. \end{bmatrix}.
\] \]
Lisäksi $A^0$ tuottaa ykkösmatriisin. Esimerkiksi In addition, $A^0$ is an identity matrix. For example,
\[ \[
\begin{bmatrix} \begin{bmatrix}
2 & 5 \\ 2 & 5 \\
@ -298,9 +295,9 @@ Lisäksi $A^0$ tuottaa ykkösmatriisin. Esimerkiksi
\end{bmatrix}. \end{bmatrix}.
\] \]
Matriisin $A^k$ voi laskea tehokkaasti ajassa The matrix $A^k$ can be efficiently calculated
$O(n^3 \log k)$ soveltamalla luvun 21.2 in $O(n^3 \log k)$ time using the
tehokasta potenssilaskua. Esimerkiksi algorithm in Chapter 21.2. For example,
\[ \[
\begin{bmatrix} \begin{bmatrix}
2 & 5 \\ 2 & 5 \\
@ -316,31 +313,29 @@ tehokasta potenssilaskua. Esimerkiksi
\end{bmatrix}^4. \end{bmatrix}^4.
\] \]
\subsubsection{Determinant}
\subsubsection{Determinantti} \index{determinant}
\index{determinantti@determinantti} The \key{determinant} $\det(A)$ of a matrix $A$
is defined if $A$ is a square matrix.
Matriisin $A$ \key{determinantti} $\det(A)$ If $A$ is of size $1 \times 1$,
on määritelty, jos $A$ on neliömatriisi. then $\det(A)=A[1,1]$.
Jos $A$ on kokoa $1 \times 1$, The determinant of a larger matrix is
niin $\det(A)=A[1,1]$. calculated recursively using the formula \index{cofactor}
Suuremmalle matriisille determinaatti lasketaan rekursiivisesti
kaavalla \index{kofaktori@kofaktori}
\[\det(A)=\sum_{j=1}^n A[1,j] C[1,j],\] \[\det(A)=\sum_{j=1}^n A[1,j] C[1,j],\]
missä $C[i,j]$ on matriisin $A$ \key{kofaktori} where $C[i,j]$ is the \key{cofactor} of $A$
kohdassa $[i,j]$. at $[i,j]$.
Kofaktori lasketaan puolestaan kaavalla The cofactor is calculated using the formula
\[C[i,j] = (-1)^{i+j} \det(M[i,j]),\] \[C[i,j] = (-1)^{i+j} \det(M[i,j]),\]
missä $M[i,j]$ on matriisi $A$, josta on poistettu where $M[i,j]$ is a copy of matrix $A$
rivi $i$ ja sarake $j$. where row $i$ and column $j$ are removed.
Kofaktorissa olevan kertoimen $(-1)^{i+j}$ ansiosta Because of the multiplier $(-1)^{i+j}$ in the cofactor,
joka toinen determinantti every other determinant is positive
lisätään summaan positiivisena and negative.
ja joka toinen negatiivisena.
\begin{samepage} \begin{samepage}
Esimerkiksi For example,
\[ \[
\det( \det(
\begin{bmatrix} \begin{bmatrix}
@ -351,7 +346,7 @@ Esimerkiksi
\] \]
\end{samepage} \end{samepage}
ja and
\[ \[
\det( \det(
@ -384,19 +379,19 @@ ja
) = 81. ) = 81.
\] \]
\index{kxxnteismatriisi@käänteismatriisi} \index{inverse matrix}
Determinantti kertoo, onko matriisille The determinant indicates if matrix $A$
$A$ olemassa \key{käänteismatriisia} has an \key{inverse matrix}
$A^{-1}$, jolle pätee $A \cdot A^{-1} = I$, $A^{-1}$ for which $A \cdot A^{-1} = I$,
missä $I$ on ykkösmatriisi. where $I$ is an identity matrix.
Osoittautuu, että $A^{-1}$ on olemassa It turns out that $A^{-1}$ exists
tarkalleen silloin, kun $\det(A) \neq 0$, exactly when $\det(A) \neq 0$,
ja sen voi laskea kaavalla and it can be calculated using the formula
\[A^{-1}[i,j] = \frac{C[j,i]}{det(A)}.\] \[A^{-1}[i,j] = \frac{C[j,i]}{det(A)}.\]
Esimerkiksi For example,
\[ \[
\underbrace{ \underbrace{