%% 29   Hantera vektorer och matriser
%
% Innehåll
% 29.1   Rad- och kolonnvektorer
% 29.2   Speciella vektorer
% 29.3   Matriser
% 29.4   Radoperationer
%% 29.1   Rad- och kolonnvektorer
%
% En radvektor  \mathbf v   är en rad med en lista av tal som kallas vektorns koordinater. Varje koordinat hör i hop med ett ordningstal. T.ex. är  14   koordinat nummer 5 (eller femte koordinaten) i vektorn
% \mathbf v = ( 51,\, -5,\, 32,\, -21,\, 14,\, 17,\, -3)
% som har 7 koordinater. Mängden av alla radvektorer med  7 koordinater betecknas \mathbb R^7. Du anger vektorn  \mathbf v  i  Matlab med kommadot
% v = [ 51, -5, 32, -21, 14, 17, -3 ]
% Kommandot
% v( 6 )
% ger dig svaret 17  som är den sjätte koordinaten i  v . Antalet koordinater i vektorn får du med
% length( v )
% som i Matlab ger svaret  7  eftersom  \mathbf v  har sju koordinater. Detta har inget att göra med det geometriska begreppet längd av vektor.
% Vill du plocka ut fler koordinater ur  \mathbf v  kan du  ange en lista på vilka koordinater man vi ha fatt i. T.ex. ger
% u = v([ 6, 3, 4 ])
% en radvektor  \mathbf u  med tre koordianter ( length( u )  är 3 ), där den första är sjätte koordinaten i  \mathbf v, den andra är den tredje koordinaten i  \mathbf v och den tredje är den fjärde koordinaten i  \mathbf v. Det betyder att
% \mathbf u = (17,\, 32,\, -21).
% Radvektorer kan i Matalb också lite snabbare anges utan kommatecken mellan koordinaterna. Använd då bara (ett eller flera) mellanslag:
% v = [ 51 -5 32 -21 14 17 -3 ]
% Man kan ändra valda koordinater i en inmatad vektor. T.ex. gör kommandot
% v( [3  4  7 ] ) = [ 33  34  37]
% att  tredje, fjärde och sjunde koordinaterna i  \mathbf v  blir  33, 34 respektive 37.
% Pröva detta nu



%  En kolonnvektor  \mathbf w  är en kolonn med en lista av tal. Terminologi och kommandon är samma som för radvektorer även om formatet är annorlunda. Radbyte gör du i Matlab med ett semikolon (som inte kan utelämnas). T.ex ger kommandot
% w = [ 22; -13; 4; 0; 1; 12; 5; -4 ]
% kolonnvektorn
% \mathbf w = \left(\begin{array}{r} 22\\ -13\\ 4 \\ 0\\ 1 \\12 \\5 \\-4 \end{array}\right)
% Mängden av alla kolonnvektorer med  8  koordinater betecknas \mathbb R^8\,. Man skiljer då inte på  kolonn- och radvektorer, utan det får framgå av sammanhanget vad som avses.
% Transponatet  \mathbf v^\top  till radvektorn \mathbf v får du  genom att skriva \mathbf v som en kolonn i stället för som en rad. På liknande sätt är transponatet av en kolonnvektor motsvarande lista av tal skriven som en rad. Transpontet till  en  inmatad radvektor  \mathbf v  i Matlab får du  genom ett prim ( ' ) på slutet. Om
% v = [ 11  -2  3 ]'
% så är  \mathbf v en kolonnvektor med tre koordinater
% \mathbf v = \left(\begin{array}{r} 11\\ -2\\ 3\end{array}\right).
% Ett tips för att mata in kolonnvektorer är att mata in en radvektor och sen sätta dit ett prim.
%
%% 29.2   Speciella vektorer
%
% Med  kommandot
% v = a : h : b
% sätter du  \mathbf v  till en radvekor vars koordinater är en lista på tal som börjar med  a  och sedan adderas successivt stegländen  h  tills man når  b  (eller så nära  b  det går). Om inget värde på  h  anges förutsätts att det  är  1:
% v = 12 : 16
% ger  \mathbf v = (12,\, 13,\, 14,\, 15,\, 16).
% Pröva nu att sätta  \mathbf v  till radvektorn med koordinater som börjar med  3  och stegas nedåt till  -20  med steglängd  -3  och plocka ut de fyra  sista koordinaterna i vektorn i omvänd ordning.



%
% Med
% v = linspace( a , b , n )
% sätter man  \mathbf v  till vektorn vars koordinater är  n stycken jämnt fördelade tal mellan talen  a   och  b\,. Om inget värde anges på  n förutsätts att det är  100\,.
% Pröva nu att sätta  \mathbf v till radvektorn med  200  jämnt fördelade tal mellan  50  och  149  och plocka sedan ut talen vars koordinater är  74,\, 83,\, och 23\,.



%
%% 29.3   Matriser
%
% Matrisen
% A=\left(\begin{array}{rrrr}
% a_{11} & a_{12} & \ldots & a_{1m} \\
% a_{21} & a_{22} & \ldots & a_{2m} \\
% \vdots & \vdots & \ldots & \vdots \\
% a_{n1} & a_{n2} & \ldots & a_{nm} \\
% \end{array}\right)
% med  n  rader och  m  kolonner ( A  är en  n\times m-matris) anger du  i Matlab genom att mata in raderna och använder semikolon ( ; ) för att markera radbyte. T.ex. ger dig
% A = [ 10  -3  -5   6 ;
%       -4  12  -7  23 ;
%       12  -6   6   2  ]
% (som också kan skrivas  A = [10,-3,-5,6; -4,12,-7,23; 12,-6,6,2] )
% matrisen
% A=\left(\begin{array}{rrrr}
% 10 & -3 & -5 & 6\\
%  -4 & 12 & -7 & 23\\
% 12 & -6 & 6 & 2
% \end{array}\right).
% Om matriserna A  och  B  har samma antal rader kan de monteras till en ny matris
% [ A  B ]
% vars kolonner först består av de i  A  och sedan de i  B\,.  Har de samma antal kolonner kan de moteras till
% [ A ; B ]
% som är en matris vars rader först består av de i  A  och sedan de i  B\,.
% Pröva detta med
% A = \left(\begin{array}{rr}
% 10 & -3\\ -4 & 12\\ 12 & -6 \end{array}\right)
% \quad\mbox{och}\quad
% B = \left(\begin{array}{rr}
% -5 & 6\\
% -7 & 23\\
%  6 & 2 \end{array}\right)



%
% Om du vill kan du  mata in en matris genom att först speca kolonnerna (eller raderna) och sedan montera dem till matrisen.
% Pröva detta med matrisen
% A=    \left(\begin{array}{rrr}
% 1 & 5 & -7\\
% 1 & -3 & -7\\
% 6 & -1 & -4\\
% 7 & 5 & 0
% \end{array}\right).



%
% Genom att lista vilka rader och vilka kolonner man vill ha kan man plocka ut delar av en matris.
% T.ex ger kommandot
% A( [5 2 1] , [ 4 1 3] )
% en matris vars första rad består av det som står i kolonn 4, 1  respektive 3 på femte raden i A\,. Andra raden är det som står i samma kolonner på rad 2 i A\, och sista raden är det som står i samma kolonner på rad 1 i A\,.
% Pröva detta nu med
% A =    \left(\begin{array}{rrr}
% 9 & 8 & 2 & 6\\
%  4 & 3 & 9 & -6
% \\ -4 & -5 & -8 & -1\\
%  -4 & -8 & 2 & -2\\
%  7 & 6 & -4 & 6 \end{array}\right)\,.
%



% När du vill plocka ut kolonner ur en matris gör du det genom att speca villka du vill ha  (och i vilken ordning) och ange samtliga rader med ett kolon ( : ). T.ex. ger dig  kommandot
% A( : , [ 1 4 3] )
% matrisen som består av kolonnerna 1, 4 och 3  i A. På motsvarande sätt kan du  plocka ut fulla rader.
% Pröva detta nu genom att ur A  ovan plocka ut  rad  3, 1 och 4 (i denna ordning) och kalla resultatet för  B\,.



% Du ändrar element (eng. entry/entries) i en matris genom att ange vilka positioner du vill ändra på och vad de nya värdena ska vara. OBS! Detta ändrar den ursprungliga matrisen, så att den inte längre är tillgänglig! Behöver du använda den ursprungliga matrisen också, ska du göra en kopia av den, genom att t.ex. sätta  B = A  och göra ändringarna på  B .
% Pröva detta nu genom att ändra alla element i  A  som står i udda rader och jämna kolonner till  0\,. Ändra sedan elementen på dessa positioner till 1, 2 , 3 , 4 , 5 , 6.



%
%% 29.4   Radoperationer
%
% De tre olika typerna av radoperationerna som kan utföras på en matris  A  är
% lägga en multipel av en rad till en annan,
% multiplicera en rad med en konstant \not=0\,,
% byta plats på två rader.
% Vill du lägga rad i\, multiplicerad med c\, till rad j\, kan du göra det  med
% A( j , : ) = c * A( i , : ) + A (j , : ).
% Lägg märke till  att den ursprungliga matrisen A\, då får ett nytt värde. Vill du bevara den kan du  först  sätta  B = A  och sen göra operationerna på  B .
% Med
% A( j , : ) = c * A( j , : )
% multiplicerar du  rad j\, i A\, med konstanten c\,. Detta är bara en radoperation om  c\not=0\,.
% Du byter plats på rad i\, och rad j\,  i A\, med
% A( [i j] , : ) = A( [j i], : )
% Första elementet på en rad i en matris som inte är  0  kallas radens ledande element.
% T.ex har matrisen
% A =    \left(\begin{array}{rrrr}
% 0 & 0 & 1 & 7\\
% 0 & 5 & 9 & 8\\
% 0 & -1 & 0 & 3\\
%  0 & 0 & 0 & -2\\
% -8 & 5 & -6 & 9 \end{array}\right)\
% 1 som ledande element på första raden, 5\, på andra, -1\, på tredje, -2\, på fjärde och -8\, på femte.
% En matris är på trappstegsform (TF, eng. echelon form) om
% varje ledande element är i kolonn till vänster om kolonner med ledande element på tidigare rader,
% rader med enbart nollor står under alla rader med ledande element. (En rad med enbart nollor saknar ledande element)
% T.ex är matrisen B nedan på trappstegsform, men inteA\, ovan.
% B=   \left(\begin{array}{rrrrrrr}
% 0 & 8 & 4 & 1 & 1 & 1 & 2\\
% 0 & 0 & -2 & -4 & 1 & 1 & -1\\
% 0 & 0 & 0 & -8 & 1 & 1 & 7\\
% 0 & 0 & 0 & 0 & 0 & 0 & 1\\
% 0 & 0 & 0 & 0 & 0 & 0 & 0
% \end{array}\right)
% De ledande elementen på raderna är i tur och ordning 8\, -2,\, -8\, och 1\,, medan nedersta raden saknar ledande element.
% Sats: Varje martirs kan med radoperationer överföras till en matris på trapprstegsform.
% Pröva detta nu med
% A =    \left(\begin{array}{rrr}
% 0 & 8 & 2 & 6\\
%  4 & 3 & 9 & -6
% \\ -4 & -5 & -8 & -1\\
%  -4 & -8 & 2 & -2\\
%  7 & 6 & -4 & 6 \end{array}\right)\,.
% Håll dig till heltal i resultatet!



% En matris är på reducerad trappstegsform (RTF, eng. row reduced echelon form) om
% Den är på trappstegsform
% Ledande element är alla 1
% Ledande element är ensama om att vara skilda från 0 i sina kolonner.
% För att få en matris som är på trappstegsform till reducerad trappstegsform gör man radoperationer nerifrån och uppåt för att rensa i kolonner med ledande element. Sen ser man till att dessa alla är 1.
% Pröva detta nu med resultatet av att överföra marisen A till trappstegsform ovan.



%
% Definition: Två matriser  A  och  B  är radekvivalenta (eng. row equivalent), skrivs  A\sim B\,, om de kan överföras till varandra med hjälp av radoperationer.
% Sats: Varje matris är radekvivalent med precis en matris på reducerad trappstegsform.
% En matris är radekvivalent med flera matriser på trappstegsform men alltså bara med en på reducerad trappstegsform.
% Radoperationer på en matris kan genomföras på många olika sätt och i olika ordning, men oavsett hur du gör är resultatet alltid det samma om det är på reducerad trappstegsform.
% Matlab har ett inbyggt kommando,  rref( A ) , för att överföra matriser till reducerad trappstegsform.
% Pröva detta nu på matrisen  A  ovan!



%
% Definition: OmA\sim U\,där U\, är på trappstegsfom kallas positioner i  A som motsvarar postioner i  U  med ledande element för pivotpositioner. De kolonner i A\,  som innehåller pivotpositioner kallas pivotkolonner.
% Metod: För att bestämma matrisen A:s  pivotpostitioner överför du den alltså först till (reducerad) trappstegsform U\, och bestämmer postionerna för de ledande elementen  i  U\,.
% Pröva nu att bestämma pivotkolonnerna i matrisen
% A =  \left(\begin{array}{rrrrrrr}
% 1 & -2 & 3 & -1 & 2 & -3 & -1\\
% 0 & 0 & 0 & -1 & 2 & -3 & -2\\
%  3 & -6 & 9 & -2 & 4 & -6 & -1\\
% 1 & -2 & 3 & 3 & -6 & 9 & 2
%  \end{array}\right) \,.

