next up previous contents
Next: Inproduct en norm Up: Matlab instructie Previous: MATLAB scripts

Lineaire vergelijking

Gegeven zijn de vier vectoren:

 \begin{displaymath}
{\bf a}_1=\begin{pmatrix}1\\ 2\\ 3\end{pmatrix},
{\bf a}_2...
...end{pmatrix},
{\bf b}=\begin{pmatrix}-1\\ 4\\ 5\end{pmatrix}.
\end{displaymath} (4)

Gevraagd is: welke lineaire combinatie van de vectoren ${\bf a}_1, {\bf a}_2$ en ${\bf a}_3$ is gelijk aan de vector ${\bf b}$, oftewel, los op:

\begin{displaymath}x_1 {\bf a}_1 + x_2 {\bf a}_2 + x_3 {\bf a}_3 = {\bf b}.
\end{displaymath} (5)

Dit lineaire stelsel kan herschreven worden als
$\displaystyle {\bf A}$ = $\displaystyle [ {\bf a}_1 {\bf a}_2 {\bf a}_3 ]$ (6)
$\displaystyle {\bf A}{\bf x}$ = $\displaystyle {\bf b}.$ (7)

In MATLAB kun je dit stelsel oplossen met
   x = A\b
Als de inverse van ${\bf A}$ bestaat, d.w.z., ${\bf A}$ is een vierkante matrix waarvan de determinant ongelijk aan nul is [MATLAB commando: det(A)], kun je de oplossing ook schrijven als

\begin{displaymath}{\bf x}= {\bf A}^{-1} {\bf b}
\end{displaymath} (8)

en in MATLAB wordt dit
  x = inv(A) * b
In MATLAB is de methode met de backslash (\) het beste (iets nauwkeuriger en iets sneller). Let op: de forward slash (/) doet net iets anders:
  C=A/B
is de ``betere manier'' om
  C=A*inv(B)
uit te rekenen. In een enkel geval wil je helemaal geen lineair stelsel oplossen, maar, voor twee matrices A en B die dezelfde afmetingen hebben ieder element van A delen door een element van B:

\begin{displaymath}D_{i,j} = \frac{A_{i,j}}{B_{i,j}}
\end{displaymath} (9)

Dit doe je in MATLAB met
   D = A./B
Voor matrix vermenigvuldiging is de situatie analoog:
   C = A * B
is een matrix vermenigvuldiging:

\begin{displaymath}C_{i,j} = \sum_k A_{i,k} B_{k,j}
\end{displaymath} (10)

terwijl
   D = A .* B
een zogenaamde puntsgewijze vermenigvuldiging is:

Di,j = Ai,j Bi,j (11)

De zogenaamde standaard basis voor ${\bf R}^3$ bestaat uit de drie vectoren $\{ {\bf e}_1, {\bf e}_2, {\bf e}_3\}$

\begin{displaymath}{\bf e}_1 = \begin{pmatrix}1\\ 0\\ 0\end{pmatrix},
{\bf e}_2...
...{pmatrix},
{\bf e}_3 = \begin{pmatrix}0\\ 0\\ 1\end{pmatrix}.
\end{displaymath} (12)

Als je deze vectoren naast elkaar zet krijg je de eenheidsmatrix. In MATLAB heb je daarvoor het commando
   E = eye(3)
Van het vak lineaire algebra weet je misschien nog de regel: ``de kolommen van een matrix zijn de beelden van de basisvectoren''. Probeer te voorspellen wat hier uit komt:
   e2 = E(:,2)
   d  = A(:,2) - A*e2

Met de volgende commandos kun je een matrix of vector met allemaal nullen respectievelijk allemaal enen maken:

   zeros(3)      % 3x3 matrix met nullen
   ones(3)       % 3x3 matrix met enen
   ones(3,1)     % kolom vector met enen
   zeros(1,3)    % rijvector met nullen

Wat ook handig kan zijn:

   D = diag([2 3 -1])      % diagonaal matrix met gegeven elementen
   d = diag(D)             % stop diagonaal elementen weer in een vector

Bedenk een alternatief voor het commando eye(17)



 
next up previous contents
Next: Inproduct en norm Up: Matlab instructie Previous: MATLAB scripts
Gerrit Groenenboom
2002-09-05