MattieT-tehtäväportaali


Yhteydenotot:

Heikki Apiola
Dept. of Math. Sci.
Aalto-yliopisto
heikki.apiola'at'aalto.fi

Juha Kuortti
Dept. of Math. Sci.
Aalto-yliopisto
juha.kuortti 'at' aalto.fi

Miika Oksman
Dept. of Math. Sci.
Aalto-yliopisto
miika.oksman 'at' aalto.fi

Matlab/Lineaarialgebra

Käytön idea: Kun löydät mieleisesi tehtävän, sen alapuolella on linkki tex-tiedostoon. Lataa tiedosto, ja liitä se harjoituspohjaan tai omaan Latex-pohjaasi.

Sisällysluettelo


  1. mlLA0001

    mlLA0001.tex

    Kolmio \(\mathbb{R}^2\):ssa on annettu \(2\times 3\)-matriisina, jonka sarakkeet edustavat tason \(\mathbb{R}^2\) pisteitä. (Yleisemmin mikä tahansa \(n\):n jananpätkän muodostama kuvio voitaisiin esittää \(2\times n\)-matriisina.)

    Muodosta lineaarikuvauksen: “peilaus y-akselin suhteen” matriisiesitys \(A\) ja kolmion \[\mathtt{K} = \begin{bmatrix} 5&4&2\\ 0 &3&2 \end{bmatrix}.\]

    kuva \(A(\mathtt{K})\). Piirrä lähtökolmio ja kuvakolmio tasoon ja totea kuvan perusteella, että matriisesityksesi on oikein muodostettu.

    Huom! Tämä tehtävä auttaa ymmärtämään tulevissa tietokoneharjoituksissa yleisempien lineaarikuvausten ja kuvioiden esittämistapaa.

    Ohje: Suljetun monikulmion esitysmatriisissa M on syytä sijoittaa alkupisteen kopio myös loppupisteeksi, jotta plot(M(1,:),M(2,:)) piirtää myös viimeisen jananpätkän. Siten esim. kolmio esitetäänkin \(2\times 4-\)matriisina ja siis yleinen suljettu monikulmio \(2\times (n+1)-\)matriisina.

    Vaativuus: 1
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0001.tex

    Avainsanat, keywords: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg, mlLA, #lineaarikuvaukset



  2. mlLA0002E

    mlLA0002E.tex


    cf. mlLA0002.tex Finnish, with some differences
    Playing with houses

    1. Write a (“script file”) talo.m, to create a “house matrix” T as follows:
      T=[0 0 -1 6 13 12 12 3 3 6 6 0;0 9 8 15 8 9 0 0 5 5 0 0];
      Give the command talo and plot it: plot(T(1,:),T(2,:)).

    2. If you multiply a vector \(x\) by a matrix \(A\), it is mapped onto a vector \(y=A x\). A set of points can be mapped “simultaneously” by taking the points as the columns of a matrix \(xmat\). Thus a \(2\) by \(2\) matrix applied to a set of poins (like T above) gives you the set of image points under the linear mapping determined by the matrix. Try for instance:
      >> A=[3 0;0 4]
      >> S=A*T
      >> plot(T(1,:),T(2,:)),hold;
      >> plot(S(1,:),S(2,:))
      Writing
      >> S=A*S;plot(S(1,:),S(2,:))
      you can iterate with the up arrow key. (Use the axis-command to fix a suitable coordinate system if needed.)

    3. Let \(A= \left [\begin {array}{cc} \cos \theta &-\sin \theta \\\noalign{\medskip} \sin \theta &\cos \theta\end {array}\right ] \) Then multiplying by \(A\) rotates the points in the plane by the angle \(\theta\) around \(O\). (Why?) Write a function kierto in the file kierto.m . The header lines and initial comments (displayed by help kierto) could be as follows (brush up your Finnish!)
      function y=kierto(fii,data)
      % Kierretaan pistejoukkoa data kulman fii verran.
      % fii on kiertokulma
      % data on 2-rivinen matriisi, jonka sarakkeet ovat pisteiden koordinaatit.
      % Esim: data=[rivi1;rivi2];S=data;
      % S=kierto(pi/4,S) % (toista nuolinappaimella)
      Rotate the house \(T\) by steps of \(\pi/4\).

    4. Jatkoksi voidaan ottaa ominaisarvoteht., vrt. Y3 1995

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0002E.tex

    Avainsanat, keywords: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg, mlLA, #lineaarikuvaukset, #lineaarikuvaus, #Strangin talo, peilaus, projektio, kierto, #linearmappings



  3. mlLA0002

    mlLA0002.tex

    Olkoon \(F\) lineaarikuvaus, jonka geometrinen kuvailu on annettu seuraavissa eri kohdissa.

    (a) Peilaus x-akselin suhteen tasossa \(\mathbb{R}^2\) ,
    (b) Kohtisuora projektio y-akselille \(\mathbb{R}^2\):ssa,
    (c) Venytys/kutistus kertoimilla \(0.5,1.5,3\) kussakin koordinaattisuunnassa \(\mathbb{R}^3\):ssa,
    (d) Peilaus xy-taon suhteen \(\mathbb{R}^3\):ssa,

    Kynä-paperiosuus:

    • Selvitä ensin pelkän kuvailun perusteella, mitkä kuvauksista ovat kääntyviä ja mitkä eivät.

    • Muodosta kunkin kuvauksen matriisiesitys.

    Matlab-osuus:

    Sijoita “talomatriisi” muuttujaan \(T\) ja piirrä. Kyseessä on kaksirivinen matriisi, jonka 1. rivi edustaa nurkkapisteiden x-koordinaatteja ja toinen vastaavia y-koordinaatteja.

    T=[0 0 -1 6 13 12 12 3 3 6 6 0;
       0 9 8 15 8 9 0 0 5 5 0 0]
    plot(T(1,:),T(2,:)

    Kyseessä on MIT:n matematiikan professorin Gilbert Strang’n mieliesimerkki, joka esiintyy myös kirjan Strang: Linear Algebra kansikuvassa.

    Olkoon \(A\) \(2\times 2\)-matriisi ja \(F_A\) sen määräämä lineaarikuvaus (jota useimmiten merkitään samalla A-kirjaimella). Siten (pysty)vektorin \(x\) kuva \(y\) saadaan kertolaskulla \(y=Ax\). Pistejoukko voidaan kuvata kokoamalla \(\mathbb{R}^2\):n pisteet sarakkeiksi matriisiin (kuten T yllä) ja kertomalla se kuvausmatriisilla \(A\). Niinpä talon nurkkapisteiden kuvat saadaan suoraan kertomalla “talomatriisi” \(T\) kuvausmatriisilla \(A\), ts. \(S=A T\). Lineaarisuuden perusteella lähtöpisteiden yhdistysjanat kuvautuvat kuvapisteiden yhdistysjanoille.

    Olkoon \(A\) kiertomatriisi \(A= \left [\begin {array}{cc} \cos \theta &-\sin \theta \\ \sin \theta &\cos \theta \\ \end {array}\right ]\)

    Suorita

    >> theta=pi/4   % voit muutella.
    >> A=[cos(theta) -sin(theta);sin(theta) cos(theta)]

    Suorita S=T; ja iteroi (nuolinäppäimellä) sitten riviä:

    >> S=A*S;plot(S(1,:),S(2,:))

    Kuva käyttäytynee odotuksiesi mukaisesti.

    Piirrä “Strangin talon” T kuva yllä olevissa kuvauksissa (a) ja (b) sekä kuvauksessa, joka kertoo x-koordinaatit luvulla \(0.75\) ja jättää y-koordinaatit ennalleen.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0002.tex

    Avainsanat, keywords: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg, mlLA, #lineaarikuvaukset, #lineaarikuvaus, #Strangin talo, peilaus, projektio, kierto, #linearmappings



  4. mlLA0009

    mlLA0009.tex

    Arnoldin kissa: mlCA008

    Avainsanat, keywords: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg, mlLA, #lineaarikuvaukset, #lineaarikuvaus, #Arnoldinkissa,#Arnoldcat, peilaus, projektio, kierto, #linearmappings



  5. mlLA000

    mlLA000.tex
    Ohjetiedosto, poimi mukaan tehtäväpaperiin tarpeen mukaan.

    Matlab-ohjeita (aluksi samat kuin mlBasic-osassa)

    • Komennon suorittama tulos tulee ruudulle ENTER-painalluksen jälkeen (kuvat erilliseen ikkunaan). Jos haluat estää tulostuksen, päätä komento puolipisteeseen. Jos myöhemmin haluat katsoa muuttujan sisällön, kirjoita sen nimi (ilman puolipistettä). Jos muuttuja on suuri matriisi, kannattaa ensin katsoa sen koko size(A) tai sen jotain osaa, esim. A(1:10,1:10)

    • Edellisen komennon tulos on muuttujassa ans. Yleensä on suositeltavaa antaa tulokselle oma nimi tyyliin nimi= ...

    • format long : Tulostetaan enemmän numeroita (n. 16). Laskutarkkuuteen tämä ei vaikuta.
      format rational laskee rationaaliluvuilla.
      format short: Paluu oletustulostukseen.

    • Matriisin A transpoosi: A’

    • Kokonaislukuvektori: Esim 1:10 tai 1:2:20. Myös linspace. Pystyvektoriksi transponoimalla.

    • A(i,j) A:n alkio (i,j).
      A(2,:) A:n 2. rivi
      A(:,3) A:n 3. sarake
      A(1:4,1:4) osamatriisi
      Matriisin osaa voi päivittää, vaikkapa:
      A(1:4,1:4)=ones(4,4) tai
      A(2,:)=A(2,:)-2*A(:,1) (Gaussin rivioperaatio).

    • Matriisien liittäminen: Jos \(A\):lla ja \(B\):llä on yhtä monta riviä, ne voidaan liittää peräkkäin: [A b] (tai [A, b])
      Jos yhtä monta saraketta, niin allekkain: [A;B]

    • Laskutoimitukset tarkoittavat matriisilaskua. Siis esim.
      A*B, A^p

    • Vektorien ja matriisien (samankokoisten) pisteittäinen eli alkioittainen laskenta tapahtuu lisäämällä eteen piste. Esim:

      u=[1 2 3], v=[-2 -2 -2], u.*v.
      Toinen operandi voi olla skalaari.

      Siten esim. vektorin \(u\) kaikki komponentit voidaan korottaa toiseen komennolla u.^2

    Matlab-ohjeita lineaarialgebraan

    • Lineaarisen yhtälöryhmän \(A x = b\) ratkaisu:

                  x=A\b
    • Matriisifunktioita:

      • Käänteismatriisi inv

      • Rangi rank

      • Ominaisarvot ja -vektorit:
        [U,V]=eig(A)

      • Täydennä

    • Täydennä

    Ohjetiedoston Latex-koodi:
    ../mlteht/mlLinalg/mlLA000.tex

    Avainsanat: Ohjetiedosto, Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA,Harjoitusohjeita,Matlabperusteet,



  6. mlLA002a

    mlLA002a.tex
    Suorita Gaussin algoritmi systeemille \[\begin{cases} 2x_1+x_2+3x_3+x_4+x_5+3x_6 = 2 \\ 4x_1 +2x_2 + 9x_3+3x_4-2x_5+8x_6 = 1 \\ 6x_1+3x_2+9x_3+3x_4+5x_5+8x_6 = 11 \end{cases}\] (a)Selvitä alakolmiomuodon perusteella ratkaisujen lukumäärä (montako vapaata parametria.
    (b)Identifioi luvut \(m,n,r\) ja totea, että päätelmäsi on sopusoinnussa “teorian” kanssa. (c)Suorita sarakevaihdot niin, että saat “kanonisen muodon” esille.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA002a.tex

    Avainsanat:
    Lineaarialgebraa, matriisilaskentaa,mlLinalg,mlLA, Gaussin algoritmi, Lineaarinen yhtälöryhmä, Matlabperusteet, Matlabalkeet,perusmatriisilaskenta



  7. mlLA002b

    mlLA002b.tex
    Opettajalle: Seuraavassa sama tehtävä usealle eri matriisille, valitse, mitä haluat (tai sitten jotain muuta). Sopii käsinlaskuun, voit myös tehdä rivioperaatioita Matlabilla yms.

    • Muodosta matriisin \[A=\left [\begin {array}{ccc} 371&-76&-40 \\36&-7&-4\\-176&36 &19\end {array}\right ]\] käänteismatriisi Gauss–Jordan-menettelyllä.

    • Muodosta matriisin \[A=\left [\begin {array}{ccc} 5&-1&-6\\ 0&2&-8\\ 6&0&10\end {array}\right ]\] käänteismatriisi Gauss–Jordan-menettelyllä.

    • Muodosta matriisin \[A=\left [\begin {array}{cc} 2&1 \\ 5&3\\\end {array}\right ]\] käänteismatriisi Gauss–Jordan-menettelyllä.

    • Muodosta matriisin \[A=\left [\begin {array}{cc} 0&a \\ b&0\\\end {array}\right ]\] käänteismatriisi Gauss–Jordan-menettelyllä.

    • Muodosta matriisin \[A=\left [\begin {array}{cc} \cos \phi & -\sin \phi \\ \sin \phi & \cos\phi\\ \end {array}\right ]\] käänteismatriisi Gauss–Jordan-menettelyllä.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA002b.tex

    Avainsanat:
    Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA Käänteismatriisi, Matrixinverse,perusmatriisilaskenta, #Gauss-Jordan



  8. mlLA002c

    mlLA002c.tex

    Matlab-istunto määrittelee \(5 \times 6\)-matriisin \(A\) ja laskee sille redusoidun porrasmuodon \(E\).

    >> A=reshape(1:30,5,6)
    A =
       1          6          11         16         21           26      
       2          7          12         17         22           27      
       3          8          13         18         23           28      
       4          9          14         19         24           29      
       5         10          15         20         25           30      
    >> E=rref(A)
    E =
       1          0          -1         -2         -3           -4      
       0          1           2          3          4            5      
       0          0           0          0          0            0      
       0          0           0          0          0            0      
       0          0           0          0          0            0   

    Määritä matriisin rangi sekä riviavaruuden ja sarakeavaruuden kannat. Perustele rivi- ja sarakeavaruuksien muodostamistapasi. Määritä myös nolla-avaruuden \(N(A)\) kanta. Miten luonnehdit niitä \(b\)-vektoreita, jotka tekevät yhtälöryhmän \(A x = b\) ratkeamattomaksi?

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA002c.tex

    Avainsanat:
    Lineaarialgebraa Matlabilla (ja käsin), matriisilaskentaa,mlLinalg,mlLA Lineaarinen yhtälöryhmä, Matlabperusteet, Matlabalkeet,perusmatriisilaskenta, #porrasmuoto, #row-echelon form, #riviavaruus, #sarakeavaruus, #nolla-avaruus, #rank



  9. mlLA002d

    mlLA002d.tex (vrt. mlLA002b.tex)
    Määritä matriisien a) \(\left [\begin {array}{ccc} 2&0&-1 \\5&1&0\\0&1&3 \end {array}\right ]\) ja b) \(\left [\begin {array}{ccc} 3&-1&5 \\2&6&4\\5&5&9 \end {array}\right ]\)

    käänteismatriisit tai totea, ettei ole olemassa. Käytä Gauss–Jordan-menettelyä. Laske ainakin toinen käsin, toisessa voit käyttää halutessasi Matlabin rref-funktiota rutiinilaskutyön vähentämiseksi (vaikkei siinä käsinkään laskien iso vaiva liene).

    Tarkista kertolaskulla, Vaivattomimmin Matlabilla (tai vastaavalla.): A*B

    Vaativuus: 1
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA002d.tex

    Avainsanat:
    Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA, rref, “reduced row echelon form” Käänteismatriisi, Matrixinverse,perusmatriisilaskenta, #Gauss-Jordan



  10. mlLA002e

    mlLA002e.tex
    Olkoon \[A=\left [\begin {array}{cccc} 1&1&4&3\\3&1&10&7 \\4&2&14&10\\2&0&6&4\end {array} \right ]\]

    Määritä riviavaruuden kanta. Esitä rivivektorit näiden kantavektorien lineaarikombinaationa.

    Huom: Sopii käsinlaskuun, apuna voi käyttää sopivia Matlab/Maple/Mathematica- komentoja.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA002e.tex

    Avainsanat:
    #riviavaruus, #rowspace, kanta, basis



  11. mlLA002f

    mlLA002f.tex
    Määritä matriisin

    \(A= \left[ \begin {array}{cccc} 1&0&-1&2\\ 1&-1&0&0\\4&-5&1&-2\end {array} \right] \)

    nolla-avaruuden \(N(A)\) kanta, sekä rivi- ja sarakeavaruuksien dimensiot.

    Huom: Sopii käsinlaskuun, apuna voi käyttää sopivia Matlab/Maple/Mathematica- komentoja.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA002f.tex

    Avainsanat:
    #riviavaruus, #rowspace, #sarakeavaruus, #columnspace, #nolla-avaruus, #nullspace, kanta, basis



  12. mlLA002

    mlLA002.tex
    Olkoon \[\mathbf{A} = \begin{bmatrix} 5 & -13 &-13& -2 & 7 \\ 18 & -4 & 30& -1 & -12 \\ -23 & 3 & 7& 15 & 7 \\ 9 & 36 & -1& 14 & 16 \\ 3 & 28& 7& 14 & 5 \end{bmatrix}\] ja \[\mathbf{b}= \begin{bmatrix} -196\\ 435\\ 11\\ 111\\ 195 \end{bmatrix}.\] Ratkaise yhtälösysteemi \(A x = b\) ja tarkista tulos matriisikertolaskulla.

    Vaativuus: 1-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA002.tex

    Ratkaisu:
    ../mlteht/mlLinalg/ratkaisut/mlLA002R.m

    Matlabfunktioita: Takakeno, backslash, A\b

    Avainsanat:
    Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA Lineaarinen yhtälöryhmä, Matlabperusteet, Matlabalkeet,perusmatriisilaskenta



  13. mlLA0031E

    mlLA0031E.tex

    A real square matrix is orthogonal if its columns form an orthonormal set. Find out whether the following matrices are orthogonal.
    a) \(P= \left [\begin {array}{ccc} 1/\sqrt{6} & 1/\sqrt{3} & 1/\sqrt{2} \\\noalign{\medskip} -2/\sqrt{6} & 1/\sqrt{3} & 0 \\\noalign{\medskip} 1/\sqrt{6} & 1/\sqrt{3} &-1/\sqrt{2} \end {array}\right ]\) b) \(P= \left [\begin {array}{cccc} 1 & 1 & 1 & 1 \\\noalign{\medskip} 1 & -1 & 1 & 1 \\\noalign{\medskip} 1 & 0 & -2 & 1 \\\noalign{\medskip} 1 & 0 & 0 & -3 \end {array}\right ]\)

    First check the inner procucts “manually”, colmn by column (to practise parts of matrices).

    Then find a short Matlab expression (using matrix multiplication and ...) for testing orthogonality of a matrix and apply it to a) and b) above.

    Evaluate the condition numbers of these matrices.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0031E.tex

    Ratkaisu:
    ../mlteht/mlLinalg/ratkaisut/html/mlLA0031ER.html
    ../mlteht/mlLinalg/ratkaisut/mlLA0031ER.m

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA

    Matlabfunktioita:



  14. mlLA003

    mlLA003.tex [myös Maple, Mathematica]

    1. Ratkaise lineaarinen yhtälöryhmä ja tarkista tulos kertolaskulla. \[\begin{cases} 4 x -5 y = 11\\ 2x + y = 9 \end{cases}\] Vihje: Matlab: “Matriisijako”: \(A\backslash b\)

    2. Tiedetään, että Celsius-asteiden ja Fahrenheit-asteiden välillä on lineaarinen yhteys:

      \[C = aF + b.\]

      Lisäksi tiedetään, että vesi jäätyy 32 F:ssa ja -40 on sama kummassakin asteikossa. Johda kaava. Tarkoitus on kirjoittaa kertoimien a ja b määräämiseksi lineaarinen yhtälösysteemi, joka ratkaistaan Matlab:n takakenolla (\).

    3. Muodosta matriisi, jonka 1. sarake on C-asteet \(-50\):sta \(5\):n asteen välein \(100:\)aan ja toinen sisältää vastaavat F-asteet.

    Vihje: Tarkan rationaalilukukaavan saat komentamalla format rat. Tee m-tiedosto kommentteineen.
    Huomaa, että taulukkoa ei ole mukavaa katsoa koknaisuutena, esim. 10 ekaa riviä näet näin: taulukko(1:10,:) (eikö vain?).
    Hivelevää on myös mennä “Workspace-ikkunaan” ja kaksoisklikata taulukko-ikonia.

    Kokeile sen ajamista myös pdf:ksi publish(Fahrenheit,pdf)-komennolla (jos skripti on Fahrenheit.m), kunhan ensin testailet sen kuntoon.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA003.tex

    Ratkaisu:
    ../mlteht/mlLinalg/ratkaisut/html/mlLA003R.html
    ../mlteht/mlLinalg/ratkaisut/mlLA003R.m

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA

    Matlabfunktioita:



  15. mlLA0041E

    mlLA0041E.tex
    Condition nr, ill-conditioning, see mlLA004.tex (Finnish)

    1. Let A be a square matrix. Write Matlab expressions to compute the matrix norms \(||A||_1\) and \(||A||_\infty\) and enjoy!

      Hint: Use sum, abs, max, see help sum, help max, to see how they operate on a matrix.

      Test with some matrices, ex. hilb, vander, rand and compare with builtin norm-functions (help norm)

    2. The Hilbert matrix \(H=(1/(i+j+1))_{i,j}\) arises for instance in the polynomial least squares problem. The Matlab function hilb(n) forms such a matrix. It is known that the first entry of the exact solution of the system \(H_n x= e_n\) is \(n^2\), where \(e_n=(1,0,...,0)\). Form a table of values of cond(\(H_n\)) , \(1/\)rcond\((H_n)\), \(n^2\) and the first entry of the computed solution (by Matlab) for \(n=1,...,15\).

    3. Form the unit circle in \(\R^2\) in a similar form as “talo” above:
      >> t=linspace(0,2*pi);x=cos(t);y=sin(t);T=[x;y];
      To visualize the matrix norm concept you can draw the unit circle along with its image under a linear transformation. Let H=hilb(2) (\(2\times 2\) Hilbert matrix)). Plot the unit circle and its image under \(H\) in the same graphics window (use axis(’square’)). Plot in another window (figure(2), hopefully works for telnet/kermit also) similarly using the inverse \(H^{-1}\). Observe the values cond(H) and rcond(H).

    4. Suhteellisen virheen suurtenemisypäyhtälö:

      \[\frac{|| \Delta x||}{|| x ||} \leq \kappa \frac{|| \Delta b||}{|| b ||}\]

      Pahimmillaan ratkaisun suhteellinen virhe voi olla luokkaa \(\kappa \times\) (datan suhteellinen virhe) (\(\kappa = cond(A)\))

    Vaativuus: 2+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0041E.tex

    Ratkaisu:
    ../mlteht/mlLinalg/ratkaisut/html/mlLA0041ER.pdf
    ../mlteht/mlLinalg/ratkaisut/mlLA0041ER.m

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA,Numeerinen lineaarialgebra, matriisit, lineaariset yhtälöryhmät, häiriöalttius



  16. mlLA004

    mlLA004.tex Matlab/Maple/Mathematica

    Tarkastellaan yhtälösysteemejä: \[\begin{cases} 10 x_1 + 7 x_2 + 8 x_3 + 7 x_4 = 32 \\ 7 x_1 + 5 x_2 + 6 x_3 + 5 x_4 = 23 \\ 7x_1 + 6x_2 + 10 x_3 + 9 x_4 = 33\\ 7 x_1 + 5 x_2 + 9 x_3 + 10 x_4 = 31 \end{cases}\] ja \[\begin{cases} 2x_1+x_2+5x_3+x_4=9\\ x_1+x_2-3x_3 -x_4 = -5\\ 3x_1 + 6x_2-2x_3+x_4 = 8\\ 2 x_1 + 2 x_2 + 2 x_3 -3 x_4 = 3 \end{cases}\]

    1. Ratkaise molemmat systeemit.

    2. Muuttamalla vähän yhtälön dataa (oikeaa puolta ja/tai kerroinmatriisia), voidaan tutkia systeemin herkkyyttä pienille virheille (datassa ja pyöristyksessä).

      Ratkaise 1. systeemi oikean puolen vektoreilla
      [32.1, 22.9, 32.9,31.1]' ja [32.01, 22.99,32.99,31.01]'
      ja 2. systeemi vektoreilla
      [9.1 -5.1, 7.9, 3.1]' ja [9.01, -5.01, 7.99, 3.01]' .

      Mitä nämä pienet häiriöt vaikuttavat ratkaisuihin?

    3. Muuta kerroinmatriiseja lisäämällä matriisien kuhunkin alkioon pieni satunnaisluku
      0.1*rand . Ratkaise systeemit alkuperäisillä oikeilla puolilla. Mitä nämä muutokset vaikuttavat ratkaisuihin.

    4. Lineaarisen yhtälösysteemin herkkyyttä pienille virheille sanotaan häiriöalttiudeksi (``ill-conditioned ``). Laske kummankin matriirin häiriöalttius.

      Suhteellisen virheen suurtenemisypäyhtälö:

      \[\frac{|| \Delta x||}{|| x ||} \leq \kappa \frac{|| \Delta b||}{|| b ||}\]

      Pahimmillaan ratkaisun suhteellinen virhe voi olla luokkaa \(\kappa \times\) (datan suhteellinen virhe) (\(\kappa = cond(A)\))

    Vaativuus: 2+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA004.tex

    Ratkaisu:
    ../mlteht/mlLinalg/ratkaisut/html/mlLA004R.pdf
    ../mlteht/mlLinalg/ratkaisut/mlLA004R.m

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA,Numeerinen lineaarialgebra, matriisit, lineaariset yhtälöryhmät, häiriöalttius



  17. mlLA0051

    mlLA0051.tex

    Puhdas päättelytehtävä. Toki voit lisätä pikku Matlab-rutiiniharjoittelun vaikka rand,det,diag, ym. komennoilla.

    Osoita, että yläkolmiomatriisin (yhtä hyvin alakolmiomatriisin) determinantti = diagonaalialkioiden tulo.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0051.tex

    Avainsanat, keywords: determinantti, det, diag,rand



  18. mlLA005

    mlLA005.tex
    Olkoon \[\mathbf{A} = \begin{bmatrix} 5&1&1\\ 1 &5&1\\ 1&1&5 \end{bmatrix}, \mathbf{b} = \begin{bmatrix} 10\\14\\18 \end{bmatrix}.\] Varmista ensin, että matriisi \(\mathbf{A}\) on kääntyvä laskemalla \(\det(A)\).
    Tutki, mitä muita keinoja on matriisin ei-singulaarisuuden tarkistamiseen. Kokeile vaikka \(\mathbf{rank, rref, lu,cond, rcond }\) (katso helpillä).
    (Huomaa, että “oikeissa tehtävissä” tärkeämpi käsite on “lähes singulaarisuus”, tähän \(\det\) ei ole yleispätevä työkalu.)

    Ratkaise yhtälöryhmä \(\mathbf{A}\mathbf{x} = \mathbf{b}\) käyttämällä

    1. Käänteismatriisia inv

    2. MATLABin matriisijakoa x = A\b.

    Opetus: Huomaa, että “matriisijako” on numeerisen tarkkuuden ja laskentatehon kannalta yleensä parempi tapa (mikä ei pienissä, hyvänlaatuisissa tehtävissä tule ilmi).

    Opettajalle: Tehtävään voidaan lisätä myös A-matriisin muodostaminen diagonaaleittain \(\mathbf{diag}\)-funktiolla (vaikkei mene hyödyn puolelle näin pienessä tehtävässä).

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA005.tex

    Avainsanat, keywords: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA Numeerista matriisilaskentaa, #det, #cond, #rcond, #rank, #diag



  19. mlLA0061

    mlLA0061.tex = mlPDE0011.tex (tee pelkkä linkki)

    Vrt. mlLA006.
    Opettajalle: Tehtävä on hiukan työläs, mutta toisaalta tulos on “palkitsevampi” kuin tuossa minimikokoisessa tehtävässä mlLA006.

    Tässä tehtävässä tarvitsee vain muodostaa ja ratkaista lineaarinen yhtälöryhmä annettujen ohjeiden mukaan. Toisaalta johdattelee PDE-numeriikkaan.

    Tasapainolämpötilajakauma metallilevyssä.

              50   20   10   0
         |----|----|----|----|----|
         |                        |
      80 |   T1   T2   T3   T4    | 80
         |                        |
      60 |   T5   T6   T7   T8    | 60
         |                        |
      40 |   T9   T10  T11  T12   | 40
         |                        |
      20 |   T13  T14  T15  T16   | 20
         |                        |
         |----|----|----|----|----|
              0    0    0    0

    Kuva esittää metallilevyä, joka on ylä- ja alapinnoiltaan lämpöeristetty ja jonka reunojen lämpötilat on kiinnitetty. (Lämpöä virtaa vain reunojen kautta.) Tasapainolämpötilajakauma saadaan Laplacen yhtälön \(\Delta u=0\) ratkaisuna. Numeerinen approksimaatio voidaan laskea ns. differenssimenetelmällä: Jaetaan levy sopivilla hilaviivoilla osiin ja numeroidaan näin muodostuvat solmupisteet. Menetelmä: Kunkin hilasolmun lämpötila on naapurisolmujen lämpötilojen keskiarvo.

    Sisäpisteiden lämpötilat \(T_1,...,T_{16}\) saadaan siis naapuripisteiden lämpötilojen keskiarvona. (Kullakin sisäpisteellä on 4 naapuria, pohjois-, etelä-, itä-, länsi.)

    Muodosta lineaarinen yhtälösysteemi lämpötilojen \(T_1,...,T_{16}\) ratkaisemiseksi. Rakenna yhtälösysteemi itsellesi ensin kynää ja paperia käyttäen (kotona!) ja syötä sitten ao. matriisi ja vektori Matlabiin, tietysti editorin kautta.

    Käytä ratkaisuun Matlabin valmista ratkaisijaa T=A\b . Piirrä lämpötilafunktion kuvaaja. Tämä käy muotoilemalla ratkaisuvektori T \(4\times4\)- matriisiksi TMAT , jonka saat kätevästi komennon reshape avulla. Sovella tähän mesh- tai surf-tyyppistä funktiota. Voit kokeilla kuvan pyörittämistä ja komennon colorbar antamista ym.

    Huom! Tässä on kyse ihan oikeasta numeerisesta menetelmästä Laplacen osittaisdifferentiaaliyhtälön ratkaisemiksi, ns. differenssimenetelmästä, jossa osittaisderivaatat korvataan differensseillä (periaatteessa erotusosamäärillä).

    Ohjeita: Katso lisää tehtävän mlLA006 ohjeista.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0061.tex

    Avainsanat: Lämpötilamatriisi, Laplacen yhtälön diskretointi, differenssimenetelmän perustehtävä, lineaarinen yhtälöryhmä, Discretizaton of Laplace PDE, Linear system of equations



  20. mlLA006a

    mlLA006a.tex, [Maple:mplLinalg/mplLA010.tex]
    (Kynä-paperitehtävä)
    Tarkastellaan lämmönjohtumista ohuessa metallilevyssä. Oletetaan, että johtumista tapahtuu vain levyn suunnassa, ja levyn reunoilla on annetut (ajan suhteen) vakiolämpötilat. Levyn lämpötilat eri pisteissä asettuvat ajan kuluessa arvoihin, jotka ovat ajan suhteen vakioita, tällöin puhutaan lämpötilajakauman tasapainotilasta (“steady state”). Tehtävänä on määrittää lämpötilajakauma levyssä tasapainotilan vallitessa.

    Tarkastellaan kuvan mukaista tilannetta: (Klikkaa oikealla olevaa pdf-linkkiä, niin kuva näkyy kunnolla.)

                   --- 20----20---20----    
                  |    |     |     |    |
                 10----*-----*-----*---40
                  |    |     |     |    |
                 10----*-----*-----*----40
                  |    |     |     |    |
                   ----20----20----20---

    Kuvassa näkyvät annetut vakioreunalämpötilat (reunaehdot). Tehtävänä on laskea ratkaisuapproksimaatiot *:llä merkityissä sisäsolmupisteissä käyttäen seuraavaa periaatetta: Lämpötila levyn solmupisteessä on naapurisolmujen lämpötilojen keskiarvo.

    Jos indeksoidaan solmupisteiden lämpötilat vaakarivijärjestyksessä: \(T_1,\ldots T_6\), voidaan ryhtyä kirjoittamaan yhtälöitä tyyliin:

    \(T_1=\frac{20+10+T_4+T_2}{4}, \ldots .\)

    Kirjoita koko \(6\times 6\)- yhtälösysteemi “standardimuodossa”.
    Huom: Tasapainotilaratkaisu saadaan ns. Laplacen yhtälön \(\nabla^2 T = 0\) ratkaisuna. Tässä esitettyyn likimääräismenettelyyn ns. differenssimenetelmään

    Ratkaisua pyydetään seuraavassa tehtävässä.


  21. mlLA006b

    mlLi006b.tex, [Maple:mplLinis/mplLi011.tex]
    Ratkaise edellisen tehtävän yhtälösysteemi Maplea (tai Matlabia) käyttäen. (Tässä Maple-ohjeet.) Muodosta sitten edellisen tehtävän kuvan mukainen \(4\times 5\) matriisi, jossa on annetut reunalämpötilat sekä lasketut sisälämpötilat oikeilla kohdillaan. Ota nurkkapisteiden lämpötiloiksi kahden naapurisolmun lämpötilojen keskiarvo. Piirrä kuva, pyörittele hiirellä.

    Maplevihje

    (Matlabissa et tarvitse vihjettä, vaan teet suoraan todella “matlabmaisesti”.)

    Tehtävässä riittää käytellä LinearAlgebra-kirjaston funktiota LinearSolve.

    Ratkaisuvektorin muokkaaminen matriisiksi onnistuu mukavasti, kun leikkaat/liimaat alla olevan funktiomäärityksen Maple-työarkillasi. (Suorita leikkaus pdf-tehtävätiedostosta.)

    Reshape:=(vek,m,n)->Matrix(linalg[matrix](m,n,convert(vek,list)));

    Funktio on tehty vastaamaan Matlabin funktion reshape käytöstä siinä tapauksessa, jossa vektori muutetaan annetun kokoiseksi matriisiksi.

    Lämpötilamatriisin rakentelu kannattaa hoidella (Matlabinomaiseen) tyyliin:

    Tsisa:=Reshape(T,2,3); # vektorissa T on ratkaisulampotilat.
    Tiso:=Matrix(4,5,0);
    vaaka:=<15|20|20|20|30>;
    pysty:=...;
    Tiso[2..3,2..4]:=Tsisa;
    ...

    Piirtäminen komennolla matrixplot (muista with(plots):)

    matrixplot(Tiso,axes=boxed);

    Pyörittele kuvaa hiirellä.

    Huom: Sanomattakin on selvää, että tehtävä sopii erikoisen hyvin Matlab:lle. Tässä pikemminkin näytetään, että Maplen LinearAlgebra-työkaluilla voidaan matkia Matlab-työtapaa ja päästä lähelle samaa käsittelymukavuutta.

    Lisätehtävä: Tee ratkaisu Matlabilla!

    Palataan asiaan perusteellisemmin Matlab-tehtävien yhteydessä, jolloin käsitellään lähemmin differenssimenetelmää.


  22. mlLA006

    mlLA006.tex = mlPDE001.tex

    Tässä tehtävässä tarvitsee vain muodostaa ja ratkaista lineaarinen yhtälöryhmä annettujen ohjeiden mukaan. Toisaalta johdattelee PDE-numeriikkaan.

    Tasapainolämpötilajakauma metallilevyssä.
    Kuva esittää metallilevyä, joka on ylä- ja alapinnoiltaan lämpöeristetty ja jonka reunojen lämpötilat on kiinnitetty. (Lämpöä virtaa vain reunojen kautta.) Tasapainolämpötilajakauma saadaan Laplacen yhtälön \(\Delta u=0\) ratkaisuna. Numeerinen approksimaatio voidaan laskea ns. differenssimenetelmällä: Jaetaan levy sopivilla hilaviivoilla osiin ja numeroidaan näin muodostuvat solmupisteet. Menetelmä: Kunkin hilasolmun lämpötila on naapurisolmujen lämpötilojen keskiarvo. (Johdetaan kurssin lopulla.)

    Muodosta \(4\times 4-\) yhtälösysteemi solmujen \(1,2,3,4\) lämpötilojen likiarvoille \(u_1,u_2,u_3,u_4.\) Ohje: Aloitetaan solmusta 1: \(u_1 = \frac{1}{4}(30 + u_2 + u_3 + 10)\). Vastaavasti muut kolme solmua.

                   20      20
            |----- o  ----  o ------|
            |                       |
            |                       |
         10 o      o 3      o 4     o  40
            |                       |
            |                       |
         10 o      o 1      o 2     o  40
            |                       |
            |                       |
            |----- o ------ o ------|
                   30       30
    1. Ratkaise yhtälösysteemi ja sijoita ratkaisulämpötilat ao. hilapisteisiin.

    2. Muodosta \(4\times 4-\) matriisi, jossa on reunalämpötilat ja ratkaisemasi sisäpistelämpötilat sekä nurkissa lähinnä olevien kahden reunasolmun keskiarvot tähän tapaan: U=[15 20 20 30;10 u3 u4 40; 10 u1 u2 40; 20 30 30 35]; Piirrä ratkaisupinnan approksimaatio: mesh(U) tai surf(U).

    3. Ehka hiukan selkeämpää on rakentaa U-matriisi vaiheittain vaikka tähän tapaan:

         u=u'  % Vaakavektoriksi
         U=zeros(4,4)
         U(1,:)=[15 20 20 30]
         U(2,:)=[10 u(3:4) 40]
         ...
         ...   

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA006.tex

    Ratkaisu:
    ../mlteht/mlLinalg/ratkaisut/html/mlLA006R.pdf
    ../mlteht/mlLinalg/ratkaisut/mlLA006R.m

    Avainsanat: Lämpötilamatriisi, Laplacen yhtälön diskretointi, differenssimenetelmän perustehtävä, lineaarinen yhtälöryhmä, Discretizaton of Laplace PDE, Linear system of equations



  23. mlLA007

    mlLA007.tex
    Oheinen kuva esittää liikenneverkkoa. Kuhunkin solmuun A,B,C,D tulevien ja siitä lähtevien ajoneuvojen lukumäärien summa pysyy samana (solmuun ei häviä eikä siinä synny ajoneuvoja). Kadut ovat yksisuuntaisia nuolien osoittamalla tavalla.

    image

    (a) Muodosta yhtälösysteemi tuntemattomien ajoneuvomäärien \(x_1,\ldots x_5\) suhteen.
    (b) Määritä systeemin yleinen ratkaisu.
    (c) Jos \(x_4\):llä merkitty katuosuus suljetaan, niin mikä on yleinen ratkaisu?
    (d) Määritä kohdan (c) tilanteessa pienin \(x_1:\)n ja suurin \(x_3:\)n arvo (jotta yhdensuuntaisuutta osoittavia liikennemerkkejä ei tarvitse kääntää).

    Huom! Porrasmuotoon saattamisessa saat halutessasi käyttää Matlab/Octave-funktiota rref (kts. help rref).

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA007.tex

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA,Liikenneverkko, lineaarinen yhtälöryhmä, (redusoitu)porrasmuoto, rref.



  24. mlLA008

    mlLA008.tex
    Tehtävä liittyy LU-hajotelma-algoritmin opiskeluun.

    1. Muodosta \(5\times 5\)-yksikkömatriisi I. (help eye)

    2. Muodosta matriisi \(E_1\), jossa on vaihdettu \(I\):n rivit 2 ja 5.

    3. Muodosta matriisi \(E_2\), joka saadaan kertomalla \(I\):n \(4.\) rivi
      luvulla \(4\).

    4. Muodosta matriisi \(E_3\), joka saadaan \(I\):stä Gaussin rivioperaatiolla: \[r_4 \leftarrow r_4 + 4\,r_1 ,\] missä \(r_i\) tarkoittaa matriisin riviä numero \(i\).

    5. Muodosta matriisit \(E_1^{-1},\ \ E_2^{-1}, \ \ E_3^{-1}\) käyttäen komentoa inv ja selitä, mitä rivioperaatiota ne vastaavat.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA008.tex

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA, alkeismatriisit,elementarymatrix, LU-hajotelma, Gaussin rivioperaatio, käänteismatriisi, LU-decomposition, matrixinverse



  25. mlLA009

    mlLA009.tex (KP3-ii, 2008, harj1)
    Olkoon \[A= \left[ \begin {array}{ccc} a_{{1,1}}&a_{{1,2}}&a_{{1,3}} \\a_{{2,1}}&a_{{2,2}}&a_{{2,3}}\\ a _{{3,1}}&a_{{3,2}}&a_{{3,3}}\end {array} \right]\]

    ja olkoot

    \(E_0= \left[ \begin {array}{ccc} 0&1&0\\ 1&0&0 \\ 0&0&1\end {array} \right] \) \(E_1= \left[ \begin {array}{ccc} 1&0&0\\ 0&1&0 \\ 0&0&3\end {array} \right] \),\(E_2=\left[ \begin {array}{ccc} 1&0&0\\ 2&1&0 \\ 0&0&1\end {array} \right]. \)

    Muodosta matriisitulot \(E_0 A\), \(E_1 A\), \(A E_1\) ja \(E_2 A\) ja selvitä, mitä nämä operaatiot tekevät matriisin \(A\) riveille/sarakkeille.

    Vihje:
    Käsinlasku ja ajattelutehtävä, tarkistukseen voit hyödyntää Matlabin syms-komentoa tai voit tehdä symboliset matriisioperaatiot Maplella/Mathematicalla.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA009.tex

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA, Alkeismatriisit, LU-hajotelma, Gaussin rivioperaatio



  26. mlLA010

    mlLA010.tex
    Harjoituksen (KP3-II/s. 2006) ohjetta:
    Seuraavissa tehtävissä voitaisiin johonkin johtopäätökseen päästä determinantin avulla. Näissä harjoituksissa ei kelpuuteta tällaisia ratkaisuja, vaan harjoitellaan johtopäätösten tekoa rivioperaatioiden seurauksena.

    Osa tehtävistä on käsinlaskuun tarkoitettu, mutta niiden yhteydessä voidaan harjoitella samalla Matlab/Octave/Scilab-työskentelyä (Kts. MattieO).

    Annettuna on \(3\times 3-\)systeemin liitännäismatriisi \[\left[ \begin {array}{cccc} 1&2&3&4\\ 4&5&6&7 \\ 6&7&8&9\end {array} \right].\] Muodosta rivioperaatioilla porrasmuoto “ref” — “row echelon form”. Merkitse tukisarakkeet ja tukialkioiden paikat. Jatka sitten rivioperaatioita alhaalta ylöspäin päästäksesi redusoituun porrasmuotoon “rref”.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA010.tex

    Matlabfunktioita: rref

    Avainsanat: Lineaarinen yhtälöryhmä, Gaussin rivioperaatio, ref, rref, (redusoitu) porrasmuoto, row echelon form.



  27. mlLA011

    mlLA011.tex

    Millä parametrin \(t\) arvoilla tulo \(AB\) on singulaarinen (ts. ei säännöllinen), kun

    \(A= \left[ \begin {array}{ccc} 1&1&3\\-1&t&3 \\2&7&6\end {array} \right]\) ja \(B=\left[ \begin {array}{ccc} 1&t&1\\t&0&1 \\-3&1&1\end {array} \right]. \)

    Ohje: Älä suotta muodosta tuloa \(A B\). Laske vaihtelun vuoksi determinanttien avulla.
    Laske a) käsin ja/tai b) Matlab:lla, jolloin on syytä aloittaa komentamalla: syms t (edellyttää “symbolic toolboxia”, joka Aallossa on, ei toimi Octavella tai Scilab:lla) . Soveltuu tietysti Maplelle tai Mathematicalle erinomaisesti.

    Jos tämänkaltainen tehtävä haluttaisiin tehdä Matlab:lla ilman symbolic toolboxia, kirjoitettaisiin parametrin \(t\) funktio, jonka nollakohdat laskettaisiin (numeerisesti).

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA011.tex

    Avainsanatkeywords: determinantti, singulaarinen/saannollinen matriisi, matriisitulo, #det



  28. mlLA012

    mlLA012.tex

    Matlab-koodin luku ja muokkaus-tehtävä

    Suorita Matlab-komento type rref (Tai Octave). Kopioi koodi (vaikka copy/paste) Matlab-editoriin tai muuhun tekstieditoriin (Octaven tapauksessa). Etsi kohta, jossa “alhaalta-ylös-rivioperaatiot” alkavat, ja kommentoi koodista tämä osuus pois. Talleta vaikka nimellä: ref, ja testaa.

    Motiivi: rref-saattaa johtaa numeerisiin virhepäätelmiin helpommin kuin pelkkä ref.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA012.tex

    Avainsanat, keywords: ref, rref, matlabkoodi



  29. mlLA013

    mlLA013.tex (** Siirrä aiheeseen mlDiffintV) **
    Piirretään toisen asteen pintoja. Tätä varten tulee pinnat esittää parametrimuodossa \[x_1 = x_1(u,v), x_2 = x_2(u,v), x_3 = x_3(u,v),\] missä muuttujat \(u\) ja \(v\) saava arvoja jostain sopivasta alueesta. Esimerkiksi parametrisointi \[\begin{cases} z_1 = r_1 \sin u \cos v, \\ z_2 = r_2 \sin u \sin v \\ z_3 = r_3 \cos u, \end{cases} \qquad \begin{cases} 0 \le u \le \pi\\ 0 \le v \le 2\pi \end{cases}\]

    MATLAB ilmoittaa \(\mathrm{R}^2\):n muuttujat tietyllä tavalla organisoituhin matriiseihin seuraavasti:

    [U,V] = meshgrid(linspace(0,pi,21),linspace(0,2*pi,21));

    Nyt ellipsoidin \(r_1=r_2= r_3\) parametrisointi tehdään seuraavasti

    Z1 = sin(U).*cos(V);
    Z2 = sin(U).*sin(V);
    Z3 = cos(U);

    Kuvan tästä saa piirrettyä komennolla surf(Z1,Z2,Z3). Kokeile miten pinta muuttuu, kun asetat kertoimiksi \(r_k\) eri arvoja. Tutustu myös komentoon axis.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA013.tex



  30. mlLA014

    mlLi014.tex
    Tarkastellaan yhtälöryhmää \[\begin{cases} 0.0001 x_1 + 2 x_2 = 4\\ x_1 + x_2 = 3 \end{cases}\]

    Tarkka ratkaisu on \(\lbrack \frac{2}{1.9999} , \frac{3.9997}{1.9999} \rbrack^T\), joka \(5\):llä numerolla esitettynä on \(\lbrack 1.0001, 1.9999 \rbrack^T\).

    (a) Ratkaise yhtälösysteemi niin, että suoritat laskut (järjestystä vaihtamatta) \(3\):lla merkitsevällä numerolla. (Laske laskimella, Matlabilla tms. ja pyöristä kunkin operaation jälkeen tulos 3:een numeroon.)

    (b) Tee samoin kuin (a)-kohdassa, mutta vaihda yhtälöiden järjestys.

    Selitä, miksi (a)-tapauksessa tulee suuri suhteellinen virhe ( \(100\)%:n suhteellinen virhe toisessa komponentissa), kun taas (b)-tapauksessa virhe on olematon.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA014.tex

    Avainsanat: Lineaarinen yhtälöryhmä, Gaussin rivioperaatio, numeerinen ratkaisu, numeerinen lineaarialgebra, pyöristysvirhe, pyoristysvirhe, #roundingerrorGaussianelimination #errorGaussianelimination #Gaussianelimination



  31. mlLA015

    mlLA015.tex
    Olkoon \(A=\left[ \begin {array}{ccc} 1&8&6\\ -1&-4&5 \\ 2&4&-6\end {array} \right] \) ja \(\mathbf{b}= \left[ \begin {array}{ccc} 8&1&4\end {array} \right]^T. \) Ratkaise yhtälö \(A x = b\) osittaistuentaa (“partial pivoting”) käyttäen.

    Olkoon \(P\) permutaatiomatriisi (rivinvaihtomatriisi), joka määräytyy rivien vaihdoista. Muodosta hajotelma \(P A = L U.\)

    Ohje: Osittaistuenta tarkoittaa itseisarvoltaan suurimman tukialkion valitsemista pienen tukialkion aiheuttamien numeeristen ongelmien välttämiseksi. Matlab käyttää ns. skaalattua osittaistuentaa (tai sen muunnelmaa), jolloin rivinvaihtostrategia voi olla erilainen.

    Matlab:lla: help lu, [L,U,P]=lu(A) (Tämä siis vertailun vuoksi, tarkoitus on laskea käsin.)

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA015.tex

    Avainsanat: Lineaarinen yhtälöryhmä, Gaussin rivioperaatio, #LU-hajotelma, numeerinen lineaarialgebra, (osittais)tuenta, (partial) #pivoting, #LUdecomposition

    Matlabfunktioita: lu



  32. mlLA017

    mlLA017.tex

    Muodosta “ylimääräytyvälle” yhtälöryhmälle \[\begin{cases} x+3y = 5\\ x-y=1\\ x+y = 0 \end{cases}\] normaaliyhtälöt ja ratkaise pienimmän neliösumman (PNS,LSQ) mielessä. Piirrä suorat ja ratkaisupiste tasoon.

    Vastaustarkistuskeino: Huomaa, että Matlab:n yhtälösysteemin ratkaisija: \(x=A\backslash b\) on niin älykäs, että se ymmärtää ylimääräytyvässä tapauksessa suorittaa PNS-ratkaisun.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA017.tex

    Avainsanat: Lineaarinen yhtälöryhmä, #PNS,#LSQ, pienimmän neliösumman menetelmä #leastsquares

    Matlabfunktioita: Takakeno, #backslash, A\b



  33. mlLA018

    mlLA018.tex

    Huom: Käsinlasku täydennettynä pikku Matlab-osuudella.

    Eräässä mittauksessa saatiin seuraava data:

          xdata     1    2   3   4   5
          ydata     1.8 2.7 3.4 3.8 3.9

    Dataa mallinnetaan polynomilla \(p(x)=c_1\,x + c_2\,x^2.\)

    (a) Muodosta PNS-tehtävän matriisi \(X\) ja vektori \(y\) siten, että tehtävä saadaan ylimääräytyväksi yhtälöryhmäksi \(X\,c = y\).

    (b) Ratkaise kerroinvektori \(c\). Piirrä data ja PNS-polynomi samaan kuvaan.

    Vihje:
    (b)-kohdassa saat mieluusti käyttää Matlab:ia. Tee kuitenkin vaiheittain matriikertolaskut, transpoosit ym., lopuksi toki voit tarkistaa “takakenolla”. Piirrä samaan kuvaan datapisteet ja polynomi.

    Piirtäminen käy näin:
    xd=1:5; yd=[1.8 ...]; plot(xd,yd,'x'); hold on; kertoimet=[c2 c1 0]; x=linspace(1,5); y=polyval(kertoimet,x); plot(x,y,'r'); xlim([0 6]); grid on
    Huomaa, että polyval haluaa kertoimet korkeimmasta potenssista alkaen.

    Vast: \(p(x)= 1.76x -0.2x^2\)

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA018.tex

    Matlabfunktioita: polyfit, polyval

    Avainsanat: #PNS,#LSQ, pienimmän neliösumman menetelmä, käyrän sovitus, #curvefitting, #datafitting.



  34. mlLA0191

    mlLA0191.tex
    Ohjeita, ominaisarvo-oppia (Liitettäväksi aiheen tehtäväpaperiin)

    • Ominaisarvo on luku, se voi olla kompleksiluku, vaikka matriisi olisi reaalinen.

    • Ominaisvektori on (reaalisen matriisin tapauksessa) \(\mathbb{R}^n\):n tai \(\mathbb{C}^n\):n vektori sen mukaan, onko vastaava ominaisarvo reaalinen vai kompleksinen.

    • Ominaisarvo saa aivan mainiosti olla \(0\), ominaisvektoriksi emme hyväksy nollavektoria.

    • Ominaisarvoon \(\lambda\) liittyvä ominaisavaruus \(E_\lambda\) koostuu kaikista \(\lambda\):aan liittyvistä ominaisvektoreista ja lisäksi nollavektorista. Tällöin kyseessä on vektori(ali)avaruus, nimittäin matriisin \(A-\lambda I\) nolla-avaruus, \(N(A-\lambda I)\).

    • Ominaisarvon \(\lambda_j\) algebrallinen kertaluku \(M_{\lambda_j}\) on karakteristisen polynomin \(\det(A-\lambda I)\) juuren kertaluku. Geometrinen kertaluku \(m_{\lambda_j}\) on \(\dim(E_{\lambda_j}).\)
      Pätee: \(m_{\lambda_j} \leq M_{\lambda_j}\)

    • Jos reaalisella matriisilla \(A\) on kompleksinen ominaisarvo \(\lambda=\alpha + i\,\beta,\) niin myös \(\overline{\lambda}=\alpha-i\,\beta\) on \(A:\)n ominaisarvo. Jos \(\mathbf{v}\) on \(\lambda:\)aa vastaava ominaisvektori, niin liittolukua \(\overline{\lambda}\) vastaava ominaisvektori on \(\overline{\mathbf{v}}.\) (Tarkoittaa vektoria, jonka koordinaatit ovat \(\mathbf{v}:\)n koordinaattien liittolukuja.)

    • Jos on määrättävä diagonaalimatriisin ominaisarvot ja -vektorit, niin laskentatyötä ei jää lainkaan. Älä siis suotta ryhdy veivaamaan \(\det(A - \lambda I)\):n kautta. (Koko ominaisarvohomman perustavoite on saattaa lineaarikuvauksen matriisi diagonaalimuotoon. Jos se jo on, niin mitään ei tarvitse enää tehdä, kunhan osaat siitä lukea.)

    • Kolmiomatriisin (ylä- tai ala-) ominaisarvot ovat diagonaalialkiot. (Siis yleistys edelliselle, tässä tapauksessa ominaisvektoreista ei voida sanoa mitään yleistä.)

    • Kun pyydetään laskemaan johonkin ominaisarvoon liittyvät ominaisvektorit, on sopivaa antaa vastaukseksi ominaisavaruuden kanta. Helpoimmin se saadaan antamalla ratkaisun vapaille muuttujille vuorollaan arvot ( \(1,0,0\)) , (\(0,1,0\)) , (\(0,0,1\)) (jos kyseessä on 3-ulotteinen ominaisavaruus). Tässähän on kyse nolla-avaruuden kannan määräämistehtävästä.

    • Eri ominaisarvoihin liittyvät ominaisvektorit ovat LRT.

    • Diagonalisointi: Annettu \(A\). Etsittävä, jos mahdollista, matriisit \(V\) ja \(D\), \(V\) kääntyvä ja \(D\) diagonaalimatriisi siten, että \(A = V D V^{-1}\).
      Jos tehtävänä on diagonalisoida \(A\), etsitään matriisit \(V\) ja \(D\) ja perustellaan \(V\):n kääntyvyys. (Yleensä ei vaadita \(V^{-1}\):n laskemista ilman eri kehoitusta, tai jatkotehtävän asettamaa tarvetta.)

    • Octave/Matlab-komentoa eig kannattaa käyttää ainakin tarkistukseen. Muoto [V,D]=eig(A) antaa suoraan diagonalisointimatriisit: \(V:\)n sarakkeina ominaisvektorit ja \(D:\)n diagonaalilla (samassa järjestyksessä) ominaisarvot. Jos \(A\) on diagonalisoituva, niin \(V:\)n sarakkeet ovat LRT, jolloin voidaan muodostaa \(V^{-1};\) Matlab/Octavella: inv(V).

    Ohjetiedoston Latex-koodi:
    ../mlteht/mlLinalg/mlLA0191.tex

    Avainsanat: Ominaisarvo-opin perus(lasku)ohjeita


  35. mlLA0192

    mlLA0192.tex
    Määritä matriisin \(A\) ominaisarvot ja muodosta kutakin ominaisarvoa vastaavalle ominaisavaruudelle jokin kanta, kun

    \(A=\left [\begin {array}{ccc} 2&0&0\\0&1&1 \\0 &1 &1 \end {array} \right ] \)

    Mitkä ovat algebralliset ja geometriset kertaluvut?

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0192.tex

    Avainsanat: Ominaisarvot, ominaisvektorit, eig, ominaisarvon kertaluku (alg/geom)



  36. mlLA0193

    mlLA0193.tex
    Määrää matriisin \(A=\left [\begin {array}{ccc} 8&6&6\\- 3&-1&-3\\-6&-6&-4\end {array}\right ]\)

    ominaisarvot ja -vektorit simuloimalla Matlab:lla käsinlaskutekniikkaa.

    Katso help poly, help roots + ohje alla.

    Suorita lopuksi sama eig-funktion avulla.

    Keksi naseva -ilmaus tarkistaaksesi ominaisarvo/vektoriominaisuuden suoraan määritelmään nojautuen. (eig-funktio palauttaa tulokset muodossa,josta ratkaisu paistaa läpi.)

    Ohje:
    Jos \(A\) on \(n\times n\)-neliömatriisi, niin poly(A) muodostaa karakteristisen polynomin \(det(\lambda I-A)=p(\lambda)= c_1\lambda^n+c_2\lambda^{n-1} + ...+ c_{n+1}\) kerroinvektorin: . (Matlab:ssa karakteristinen polynomi on monissa kirjoissa esiintyvän karakteristisen polynomin “vastalukupolynomi”, mutta sepä ei vaikuta nollakohtiin.)
    roots(kerroinvekt) puolestaan ratkaisee (numeerisesti) ko. polynomin nollakohdat. (Kokeile vaikkapa roots([1 2 1] .)

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0193.tex

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA, #ominaisarvot, #ominaisvektorit, Matlab: #eig, #poly, #roots, #eigenvalues, #eigenvectors



  37. mlLA0194

    mlLA0194.tex
    Olkoon \(A= \left[ \begin {array}{ccc} 1&0&0\\2&1&0 \\0&0&3\end {array} \right]. \) Määritä \(A\):n ominaisarvot ja niiden algebralliset kertaluvut. Eräs ohjelma antaa komennolla ref(A-eye(3)) tuloksen: \[\left[ \begin {array}{ccc} 2&0&0\\0&0&2 \\0&0&0\end {array} \right]\] Määritä tämän ja edellä laskemiesi perusteella ominaisarvojen geometriset kertaluvut ja selvitä, onko matriisi defektiivinen (eli jonkun ominaisarvon geometrinen on pienempi kuin algebrallinen).

    Huom: eye(3) tarkoittaa Matlabin tapaan \(3 \times 3\)-yksikkömatriisia. ref voidaan editoida Matlab-funktiosta rref, vrt. mlLA012.

    Ominaisvektoreita ei välttämättä tarvitse laskea. Peruslineaarialgebratuntemus riittää.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0194.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, Matlab: #ref, #eye, #eig, #eigenvalues, #eigenvectors, algebrallinen/geometrinen kertaluku



  38. mlLA0195

    mlLA0195.tex
    Määritä seuraavien lineaarikuvausten ominaisarvot ja -vektorit laskematta, pelkän geometrisen kuvailun perusteella.

    • Peilaus \(y\)-akselin suhteen tasossa \(\mathbb{R}^2\),

    • Venytys \(\mathbb{R}^3\):ssa tekijällä \(4\),

    • Kierto \(\mathbb{R}^2\):ssa kulman \(\pi/2\) verran. Tämän geometrista ymmärtämistä ominaisarvotehtävän kannalta ei vaadita täydellisesti, koska se edellyttäisi \(\mathbb{C}^2\):n eli \(\mathbb{R}^4\):n geometrian ymmärrystä, mihin on hiukan vaikea ylettyä. Ajattele kuitenkin, mitä kompleksiluvulla kertominen geometrisesti tarkoittaa \(\mathbb{C}^2\):n vektorin komponenteille. Sivistynyt arvaus ominaisarvosta (tai pelkkä lasku) riittäköön tässä.

    • Peilaus \(xy\)-tason suhteen \(\mathbb{R}^3\):ssa.

    • Kohtisuora projektio y-akselille \(\mathbb{R}^2\):ssa.

    Selvitä sitten kukin kohta laskemalla. Laskutyön minimoimiseksi kannattaa katsoa ohjeita.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0195.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, Matlab: #eig, #eigenvalues, #lineaarikuvaus #eigenvectors



  39. mlLA0196

    mlLA0196.tex

    Olkoon \(A= \left[ \begin {array}{cc} 3/2&1/2\,\sqrt {2}\\1/2\, \sqrt {2}&1\end {array} \right]. \) Määritä \(A\):n määräämän lineaarikuvauksen pääakselien suunnat ja venytys/kutistuskertoimet. Hahmottele yksikköympyrän kuvaellipsi.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0196.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, Matlab: #eig, #poly, #roots, #eigenvalues, #eigenvectors, pääakselit, paaakselit, pricipal axes



  40. mlLA0197

    mlLA0197.tex

    Päättelytehtävä (“osoita, että ...”)

    (a) Osoita, että jos \(\lambda\) on \(A\):n ominaisarvo ja \(\mathbf{x}\) vastaava ominaisvektori, niin \(\lambda^k\) on \(A^k\):n ominaisarvo, ja samainen \(\mathbf{x}\) on vastaava ominaisvektori.

    (b) Oletetaan, että \(A\) on kääntyvä. Osoita, että \(\lambda^{-1}\) on \(A^{-1}\):n ominaisarvo ja \(\mathbf{x}\) siihen liittyvä ominaisvektori (yhtä hyvin \(A x\)). Mistä tiedät, että \(\lambda \ne 0\)?

    (c) Osoita, että \(A\):lla ja \(A^T\):lla on samat ominaisarvot. (Tiedoksi: ominaisvektorit eivät välttämättä ole samat.)

    (d) Osoita, että reaalisen matriisin kompleksiset ominaisarvot ovat pareittain toistensa liittolukuja.

    Vihje: (a): Tarvitset vain määritelmää.
    Mieti (b)-kohdan loppykysymyksessä, mitä merkitsee kääntyvyyteen nähden, jos ominaisarvo on \(0\), ajattele vaikkapa homogeeniyhtälön ratkaisuja tms.
    (c): Muista, että \((A+B)^T = A^T + B^T\) ja että matriisilla ja sen transposilla on sama determinantti. Sitten vain kirjoitat \(A^T\):n karakteristisen polynomin \(A\):n karakteristisen polynomin avulla.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0197.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, #eigenvalues, #eigenvectors, #theory



  41. mlLA0198

    mlLA0198.tex

    Määritä matriisin

    \[A=\left[ \begin {array}{cc} a&b\\-b&a\end {array} \right], (a,b \in \mathbb{R})\]

    ominaisarvot ja -vektorit. Huomaa, että ominaisvektorit ovat nyt \(\mathbb{C}^2\):n vektoreita.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0198.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, #eigenvectors, complex eigenvalues/vectors, kompleksiset ominaisarvot/vektorit



  42. mlLA019

    mlLA019.tex
    Määritä PNS-ratkaisu tehtävälle \(A\, x = b\), kun \(A= \left[ \begin {array}{cc} 1&-1\\ 1&4 \\ 1&-1\\ 1&4\end {array} \right] \) ja
    \(b=\left[ \begin {array}{cccc} -1&6&5&7\end {array} \right]^T.\) Hyödynnä QR-hajotelmaa, jonka voit muodostaa seuraavilla komennoilla: (Huom: Yleensä ei lasketa rationaaliaritmetiikalla, mutta opettelussa voi olla hyödyksi.)

    >> format rational
    >> A=[...]    
    >> [Q,R]=qr(A)

    Vihje Matlab muodostaa ns. täyden QR-hajotelman. Kuten huomaat, riittää ottaa Q:n kaksi ensimmäistä saraketta ja R:n 2 ensimmäistä riviä, miten nyt vain haluat. Huomaa siis, että Q on ortogonaalinen ja R on yläkolmiomatriisi.

    Vaativuus: 1-3+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA019.tex

    Matlabfunktioita: qr

    Avainsanat: #PNS,#LSQ, pienimmän neliösumman menetelmä,#QR-hajotelma, #QRdecomposition.



  43. mlLA020a

    mlLA020a.tex
    Ohjeita, ominaisarvo-oppia (Liitettäväksi aiheen tehtäväpaperiin)

    • Ominaisarvo on luku, se voi olla kompleksiluku, vaikka matriisi olisi reaalinen.

    • Ominaisvektori on (reaalisen matriisin tapauksessa) \(\mathbb{R}^n\):n tai \(\mathbb{C}^n\):n vektori sen mukaan, onko vastaava ominaisarvo reaalinen vai kompleksinen.

    • Ominaisarvo saa aivan mainiosti olla \(0\), ominaisvektoriksi emme hyväksy nollavektoria.

    • Ominaisarvoon \(\lambda\) liittyvä ominaisavaruus \(E_\lambda\) koostuu kaikista \(\lambda\):aan liittyvistä ominaisvektoreista ja lisäksi nollavektorista. Tällöin kyseessä on vektori(ali)avaruus, nimittäin matriisin \(A-\lambda I\) nolla-avaruus, \(N(A-\lambda I)\).

    • Ominaisarvon \(\lambda_j\) algebrallinen kertaluku \(M_{\lambda_j}\) on karakteristisen polynomin \(\det(A-\lambda I)\) juuren kertaluku. Geometrinen kertaluku \(m_{\lambda_j}\) on \(\dim(E_{\lambda_j}).\)
      Pätee: \(m_{\lambda_j} \leq M_{\lambda_j}\)

    • Jos reaalisella matriisilla \(A\) on kompleksinen ominaisarvo \(\lambda=\alpha + i\,\beta,\) niin myös \(\overline{\lambda}=\alpha-i\,\beta\) on \(A:\)n ominaisarvo. Jos \(\mathbf{v}\) on \(\lambda:\)aa vastaava ominaisvektori, niin liittolukua \(\overline{\lambda}\) vastaava ominaisvektori on \(\overline{\mathbf{v}}.\) (Tarkoittaa vektoria, jonka koordinaatit ovat \(\mathbf{v}:\)n koordinaattien liittolukuja.)

    • Jos on määrättävä diagonaalimatriisin ominaisarvot ja -vektorit, niin laskentatyötä ei jää lainkaan. Älä siis suotta ryhdy veivaamaan \(\det(A - \lambda I)\):n kautta. (Koko ominaisarvohomman perustavoite on saattaa lineaarikuvauksen matriisi diagonaalimuotoon. Jos se jo on, niin mitään ei tarvitse enää tehdä, kunhan osaat siitä lukea.)

    • Kolmiomatriisin (ylä- tai ala-) ominaisarvot ovat diagonaalialkiot. (Siis yleistys edelliselle, tässä tapauksessa ominaisvektoreista ei voida sanoa mitään yleistä.)

    • Kun pyydetään laskemaan johonkin ominaisarvoon liittyvät ominaisvektorit, on sopivaa antaa vastaukseksi ominaisavaruuden kanta. Helpoimmin se saadaan antamalla ratkaisun vapaille muuttujille vuorollaan arvot ( \(1,0,0\)) , (\(0,1,0\)) , (\(0,0,1\)) (jos kyseessä on 3-ulotteinen ominaisavaruus). Tässähän on kyse nolla-avaruuden kannan määräämistehtävästä.

    • Eri ominaisarvoihin liittyvät ominaisvektorit ovat LRT.

    • Diagonalisointi: Annettu \(A\). Etsittävä, jos mahdollista, matriisit \(V\) ja \(D\), \(V\) kääntyvä ja \(D\) diagonaalimatriisi siten, että \(A = V D V^{-1}\).
      Jos tehtävänä on diagonalisoida \(A\), etsitään matriisit \(V\) ja \(D\) ja perustellaan \(V\):n kääntyvyys. (Yleensä ei vaadita \(V^{-1}\):n laskemista ilman eri kehoitusta, tai jatkotehtävän asettamaa tarvetta.)

    • Octave/Matlab-komentoa eig kannattaa käyttää ainakin tarkistukseen. Muoto [V,D]=eig(A) antaa suoraan diagonalisointimatriisit: \(V:\)n sarakkeina ominaisvektorit ja \(D:\)n diagonaalilla (samassa järjestyksessä) ominaisarvot. Jos \(A\) on diagonalisoituva, niin \(V:\)n sarakkeet ovat LRT, jolloin voidaan muodostaa \(V^{-1};\) Matlab/Octavella: inv(V).

    Ohjetiedoston Latex-koodi:
    ../mlteht/mlLinalg/mlLA020a.tex

    Avainsanat: Ominaisarvo-opin perus(lasku)ohjeita


  44. mlLA020

    mlLA020.tex
    Suorita Matlab-komento eigshow. Opiskele helppiteksti ja suorita joitakin kokeiluja kuljettamalla \(x\)-vektoria läpi koko yksikköympyrän. (Tämä vain lämmittelyksi.)

    Valitse erityisesti matriisit A=[1 3;4 2]/4, B=[3 1;-2 4]/4 ja
    C=[2 4;2 4]/4. Määritä kuvan perusteella kunkin ominaisarvot ja -vektorit. Saat vektorit tarkemmin komentamalla grid on.
    Mitä, jos kuvan perusteella ominaisarvoja/vektoreita ei näyttäisi olevan?
    Määritä kuvan perusteella myös ominaisavaruuden dimensio matriisin \(C\) tapauksessa.

    Laske kunkin matriisin ominaisarvot ja -vektorit eig-komennolla. (help eig)

    Huom: Jos näitä matriiseja ei sattuisi olemaan valmiina valikossa, voit ne sinne lisätä helppiruudun “View code for eigshow”-linkistä. Hae koodista kohta mats = .... Siitä näet, miten matriiseja voi lisätä. Jos editoit koodia, tallenna se omaan hakemistoosi vaikkapa nimelle ominashow, ja sitten vaan ominashow.

    Tee joitakin omia kokeiluja erilaisilla matriiseilla oman “ominashow”:n avulla.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA020.tex

    Avainsanat: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA, Ominaisarvot, ominaisvektorit, ominaisarvojen graafinen havainnollistaminen, ominaisvektorien graafinen havainnollistaminen, Matlab: eigshow, eig



  45. mlLA021

    mlLA021.tex (käsinlasku, Matlab sopii avuksi/opiksi)

    Muodosta matriisin \(A= \left[ \begin {array}{ccc} 3&-2&4\\ -2&6&2 \\ 4&2&3\end {array} \right] \) ortogonaalinen diagonalisointi (tarkoittaa ortonormaalia).

    Laskutyön vähentämiseksi annetaan (tai pyydetään oppilasta komentamaan):

    >> eig(A)
    ans =
             -2.00
              7.00
              7.00

    Vihje:
    Muista, että ominaisvektorit eivät automaattisesti ole yksikkövektoreita, ja useampikertaista ominaisarvoa vastaavat ominaisvektorit eivät automaattisesti ole ortogonaaliset.
    Jos olet saanut samaan ominaisavaruuteen kuuluvat LRT ominaisvektorit \(v_1\) ja \(v_2\), niin ortonormaalin kannan saat
    1) geometrisen ajattelun avulla: Muodosta \(v_2\):n kohtisuora projektio \(v_1\):llä ja vähennä se \(v_2\):sta. Tai
    2) algebrallisesti: Määritä kerroin kerroin \(c\) siten, että \((v_1 + c\, v_2) \perp v_1.\)

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA021.tex

    Avainsanat: Ominaisarvot, ominaisvektorit, ortogonaalinen diagonalisointi, #eigenvalues, orthogonal diagonalization

    Matlabfunktioita:



  46. mlLA022

    mlLA022.tex

    Päättelytehtävä

    1. Osoita, että diagonaalimatriisin ominaisarvot ovat diagonaalialkiot. Mitkä ovat ominaisvektorit?

    2. Osoita, että yläkolmiomatriisin (yhtä hyvin alakolmiomatriisin) ominaisarvot ovat diagonaalialkiot. Ominaisvektoreista tuskin voit sanoa mitään yleispätevää.

    Ohje: Suorita (a)-kohta ominaisarvo/ominaisvektori-määritelmään nojautuen.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0022.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, #eigenvectors, diagonalmatrix, lower/upper diagonal matrix



  47. mlLA023

    mlLA023.tex

    Päättelytehtävä

    Stokastinen matriisi \(P\) tarkoittakoon sellaista, jonka alkiot ovat ei-negatiivisia ja sarakesummat \(=1\). Osoita, että \(1\) on aina \(P\):n ominaisarvo.

    Vihje: Väite on helppo osoittaa transposille \(P^T\), ajattele ominaisvektorin määritelmää ja mitä saat, jos kerrot \(P^T\):llä vektorin \(\lbrack 1,1,\ldots, 1\rbrack^T\).

    Vaativuus: 1
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0023.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, #eigenvectors, stochastic matrix, stokastinen matriisi.



  48. mlLA024

    mlLA024.tex

    Olkoon \(A= \left[ \begin {array}{cc} 4&-3\\2&-1\end {array} \right]. \) Laske \(A^8.\)

    Ohje: Suorita tehtävä diagonalisoimalla matriisi A. Laske ominaisarvot ja -vektorit käsin. Tarvittavan käänteismatriisin saat laskea Matlab/Octavella, vaikkei siinä paljon vaivaa ole käsinkään. Tarkista Matlab/Octavella tuloksesi, ja tee koko käsinlaskusuoritus myös niillä. (Huomaa, että Matlab normeeraa ominaisvektorit yksikkövektoreiksi, siksi ne eivät yleensä koskaan ole siistejä kokonaislukuvektoreita.)

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA0024.tex

    Avainsanat: #ominaisarvot, #ominaisvektorit, #eigenvectors, #diagonalisointi, #diagonalization, #matriisipotenssi, #matrixpower



  49. mlLA028

    mlLA028.tex
    Olkoon \[\mathbf{A} = \begin{bmatrix} 5&1&1\\ 1 &5&1\\ 1&1&5 \end{bmatrix}\]

    1. Laske matriisin \(\mathbf{A}\) diagonalisointiin tarvittavat matriisit \(P\) ja \(D\).

    2. Varmista, että \(P\) on ortogonaalinen, ja \(D\) on diagonaalinen ja diagonaalialkiot suuruusjärjestyksessä.

    3. Osoita, että spektraalikaava \[\lambda_1\mathbf{u}_1\mathbf{u}_1^T+\lambda_2\mathbf{u}_2\mathbf{u}_2^T+\lambda_3\mathbf{u}_3\mathbf{u}_3^T = A\] pätee.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA028.tex

    Avainsanat: orthogonal diagonalization, ortogonaalinen diagonalisaatio

    Matlabfunktioita: eig



  50. mlLA029

    mlLA029.tex
    Potenssimenetelmä on eräs keino löytää itseisarvoltaan suurin ominaisarvo ja vastaava ominaisvektori. Menetelmä toimii seuraavasti:

    • Valitse alkuarvaus \(\mathbf{b}_0\). Ainoa vaatimus on, että tällä vektorilla on nollasta poikkeava komponentti ominaisarvon suuntaan – käytännössä kannattaa valita vektori, jonka jokainen alkio on nollasta poikkeava.

    • Aseta \[\mathbf{b}_{k+1}=\frac{\mathbf{A}\mathbf{b}_k}{||\mathbf{A}\mathbf{b}_k||}\]

    • Jatka kunnes jono \((\mathbf{b}_k)\) suppenee. Ominaisarvo \(\lambda = ||\mathbf{A}\mathbf{b}_k||\) ja vektori \(\mathbf{x} = \mathbf{b}_k\).

    Toteuta menetelmä MATLABissa, ja laske matriisin gallery(5) suurin ominaisarvo ja vastaava ominaisvektori. Testaa tuloksen oikeellisuus.

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA029.tex

    Avainsanat: Ominaisarvojen numeriikkaa, #potenssimenetelmä, #powermethod, #eigenvaluenumerics



  51. mlLA030

    mlLA030.tex
    Ominaisarvojen laskentamenetelmiä, Power method [KRE\(^9\)] Sec. 20.8
    Sovella potenssimenetelmää (3 kierrosta) matriisiin \[A= \left[ \begin {array}{cc} 3.5& 2.0\\ 2.0& 0.5 \end {array} \right]\] alkuarvolla \(x_0=\lbrack 1,1 \rbrack^T\). Laske Rayleigh-osamäärät \(q\) ja virherajat.

    Ratk: Vastaus: \(q=4,4.493,4.4999; |\epsilon| \leq 1.5,0.1849, 0.0206\)

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA030.tex

    Avainsanat: Potenssimenetelmä, ominaisarvojen laskentamenetelmät, #Powermethod, Rayleighquotient .



  52. mlLA031

    mlLA031.tex
    Osoita, että jos \(x\) on ominaisvektori, niin \(\delta=0\) virhekaavassa (2) Theorem 1 s. 872 (KRE\(^9\), luvun 20.8, Power Method for Eigenvalues alkusivulla) .

    Vihje: Päättelytehtävä, ohjelmistoista ei hyötyä.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA031.tex

    Avainsanat: Potenssimenetelmä, ominaisarvojen laskentamenetelmät, #Powermethod



  53. mlLA032

    mlLA032.tex

    (a) Päättele Gershgorinin lauseen avulla matriisin \[A= \left[ \begin {array}{ccc} 11& 0.4&- 0.5\\ 0.4&7&a \\ - 0.5&a& 4\end {array} \right]\] ominaisarvojen likiarvot ja missä rajoissa ne ovat.

    (b) Millä \(a\):n reaaliarvoilla nähdään suoraan, että matriisi on kääntyvä. (Tarkoitus ei ole laskea determinanttia tai ominaisarvoja, korkeintaan halutessasi tarkistukseksi ja varmistuksesi Gershgorinin pätevyydelle.)

    Vihje Käsinlasku, jossa voit harjoitella Matlabin laskinkäyttöä.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA032.tex

    Avainsanat: #Gershgorinin lause , ominaisarvojen laskentamenetelmät, ominaisarvoarvio. #eigenvaluestimate



  54. mlLA033

    mlLA033
    Gershgorinin lauseen graafinen havainnollistus.

    Tee funktio G:n ympyröille.

    Testaa erilaisilla matriiseilla.


  55. mlLA040

    mlLi040.tex
    Olkoot \(\mathbf{A}\) kompleksinen \(n \times n\) matriisi, ja olkoot \(R_i = \sum_{j\neq i} |a_{ij}|\), eli rivin alkioiden itseisarvojen summa diagonaalia lukuunottamatta. Gershgorinin kiekkolauseen väite on, että jokainen matriisin \(\mathbf{A}\) ominaisarvo \(\lambda_i\) sijaitsee jossakin kiekossa \(D(a_{ii},R_i)\), (kompleksitasoon piirretty kiekko, jonka keskipiste on pisteessä \(a_{ii}\), ja jonka säde on \(R_i\)). Totea lauseen väite kokeellisesti, kun A=10*randn(12)+ 5*randn(12)*i;

    Ympyrän, jonka keskipiste on \((x,y)\) ja säde \(r\) saa MATLABissa piirrettyä seuraavasti:

    x = 0.4; y= -0.34  % Muuta haluamiksesi.
    t = 0:0.02:2*pi;
    plot(x+r*cos(t),y+r*sin(t));
    axis equal;axis square % Jotta näyttää ympyrältä.
    hold on 
    %Yksittäinen piste piirretään seuraavasti
    plot(x,y,'r.');       % r='red'

    Vaativuus: 2-
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLA040.tex

    Avainsanat: #Gershgorinin lause , ominaisarvojen laskentamenetelmät, ominaisarvoarvio. #eigenvaluestimate



  56. mlLA050

    mlLi050.tex
    Gram-Schmidtin menetelmä vektorijoukon \(\lbrace \mathbf{v}_1,\mathbf{v}_2, \ldots ,\mathbf{v}_n \rbrace\) ortonormalisoimiseksi toimii seuraavasti:

    • Ortogonalisoidaan:
      \(\mathbf{u}_1 = \mathbf{v}_1\)

      \(\mathbf{u}_2 = \mathbf{v}_2 - \frac{\mathbf{u}_1 \cdot \mathbf{v_2}}{\mathbf{u}_1 \cdot \mathbf{u}_1} \mathbf{u}_1\)

      \(\vdots\)

      \(\mathbf{u}_n = \mathbf{v}_n - \sum_{k=1}^{n-1} \frac{\mathbf{u}_k \cdot \mathbf{v_n}}{\mathbf{u}_k \cdot \mathbf{u}_k} \mathbf{u}_k\)

    • Normitetaan: \(\mathbf{e}_i = \frac{\mathbf{u}_i}{||\mathbf{u}_i||}, i = 1\ldots n\)

    Kirjoita MATLAB-funktio B = grmsch(A) joka hakee Gram-Schmidtin menetelmällä ortonormaalin kannan matriisin \(\mathbf{A}\) sarakeavaruudelle. Testaa ortonormaalius laskemalla B’*B.

    Vinkki: Laskutoimitus \(\frac{\mathbf{u}_k \cdot \mathbf{v_n}}{\mathbf{u}_k \cdot \mathbf{u}_k} \mathbf{u}_k\) vastaa toimitusta \((\mathbf{u}_k^T \mathbf{v}_n)\mathbf{u}_k\). Lisätehtävä nopeille: Matriisin sarakeavaruuden normalisointi ei poikkea kovin paljon QR-hajotelman tekemisestä. Jos ehdit, toteuta oma algoritmisi QR-hajotelmalle.


  57. mlLA090

    mlLA090
    Seuraava kuva esittää kymmenen sivun ”internettiä”.

    image

    Laske tämän verkon tärkein sivu käyttämällä PageRank-algoritmia:

    • Luo verkon vierusmatriisi \(A = [a_{ij}]\), missä \[a_{ij} = \begin{cases} 1 \qquad \text{ jos sivulta j on linkki sivulle i} \\ 0 \qquad \text{ muuten}\\ \end{cases}\]

    • Laske vierusmatriisin suurin ominaisarvo, ja vastaava ominaisvektori.

    • Normalisoi laskemasi suurinta ominaisarvoa vastaava ominaisvektori (jaa kaikki vektori alkiot vektorin summalla). Mikä on tämän verkon tärkein sivu.

    • Piirrä verkon kuva käyttäen laatimaasi vierusmatriisia ja gplot-komentoa. Tutustu gplotin help-sivuun.



  58. mlLA500

    mlLA500.tex
    Luovuttaja: Riikka Kangaslampi (Perustuu Juha-Matti Perkkiön laatimaan hahmontunnistusharjoitukseen.)

    Käynnistä Matlab, ja käy lataamassa kurssin Noppa-sivulta tiedosto nimeltä kuvatiedosto.mat. Vaihda Matlabin työhakemistoksi se hakemisto, mistä tämä tiedosto löytyy, ja kirjoita

    load kuvatiedosto who

    Matlabin muistiin ilmestyi \(10304 \times 400\) -kokoinen matriisi KUVA, jonka kussakin sarakkeessa on pystyvektoriksi venytetty \(112 \times 92\) -kokoinen harmaasävykuva. Kuvissa esiintyy 40 eri henkilöä, joista kustakin on 10 eri valokuvaa. Kuvat on järjestetty niin, että sarakkeissa \[10(n-1) + 1, . . . , 10n\] on kuvat samasta henkilöstä \(n = 1,\ldots,40\). Kuvat on saatavilla ilmaiseksi PNG-muodossa AT&T Laboratories Cambridgen webbisivulta
    http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html.
    Sieltä löytyy myös kätevä esikatseluversio, jossa näkyy yhtä aikaa kaikki 400 kuvaa.

    Luodaan funktio, jonka avulla voidaan katsella sarakkeista löytyviä kuvia. Muodosta tiedosto nimeltä nayta.m, ja kirjoita sinne seuraava koodinpätkä:

    function nayta(kuva)
    imagesc(reshape(kuva,112,92))
    colormap gray
    colorbar
    axis equal tight

    Nyt sarakkeesta \(n\) löytyvä kuva saadaan näkyviin kirjoittamalla

    figure(1)
    nayta(KUVA(:,n)) 

    Selaa läpi matriisista KUVA löytyviä kuvia.

    Yritetään selvittää, miten hyvin tietokoneen saa tunnistamaan ihmiskasvoja. Muodostetaan ensin keskimääräinen kasvokuva \(KA\), ja sen jälkeen matriisi \(X\), joka sisältää kuvat, joista on poistettu tämä keskiarvokuva:

    KA = sum(KUVA')'/400; % Laskee sarakkeiden keskiarvon
    X = zeros(size(KUVA));
    for n=1:400; X(:,n) = KUVA(:,n)-KA; end 

    Katso, miltä keskiarvokuva ja matriisista \(X\) löytyvät kuvat näyttävät.

    Seuraavaksi muodostetaan matriisin \(X\) singulaariarvohajotelma komennolla

    [U,S,V] = svd(X,0); 

    Tässä saattaa mennä hetki. Matriisin \(A \in C^{m\times n}\) singulaariarvohajotelma on \(A = USV^H\), missä matriisien \(U \in C^{m\times n}\) ja \(V \in C^{n\times n}\) sarakevektorit ovat ortonormeerattuja, ja \(S \in C^{n\times n}\) on diagonaalimatriisi, jonka kaikki alkiot ovat ei-negatiivisia reaalilukuja, laskevassa järjestyksessä. Erityisesti \(V\) on unitaarinen, eli \(V^{-1} = V^H\). Alkuperäisen matriisin \(X\) sarakkeet saadaan esiin seuraavalla käskyllä:

    X(:,n) = U*S*V(n,:)';

    Matriisin \(X\) sarakevektorit tulee siis esitettyä lineaarikombinaatioina ortonormaaleista sarakevektoreista \(U(:,n)\), joista ensimmäisiä vastaavat kertoimet ovat tyypillisesti häntäpään kertoimia suurempia. Matriisin U sarakkeet ovat tietyssä mielessä kuvakirjaston “merkittäviä piirteitä”. Tarkastele näitä kirjoittamalla nayta(U(:,n)).

    Matriisia \(X\) voidaan approksimoida singulaariarvohajotelman avulla. Singulaariarvojen suhteista voidaan päätellä, kuinka monta ensimmäistä matriisin \(U\) pystyriviä kannattaa ottaa mukaan. Kirjoita

    var = (diag(S).^2);
    varpart = cumsum(var)/sum(var);
    plot(varpart) 

    Nyt graafista näkyy, kuinka suuri osa singulaariarvojen neliöistä on mukana, kun matriisista U otetaan mukaan annettu määrä vektoreita.

    Katsotaan, miltä eripituiset approksimaatiot näyttävät. Pystyvektoria \(X(:,n)\) vastaava approximaatio \(Y\), jossa on mukana \(k\) ensimmäistä komponenttia, saadaan näkyviin käskyillä

    Y = U(:,1:k)*S(1:k,1:k)*V(n,1:k)';
    nayta(KA + Y) 

    Kokeile, miltä kuvat näyttävät eripituisilla approksimaatioilla.

    Pudotetaan seuraavaksi singulaariarvohajotelmasta 300 viimeistä komponenttia:

    U = U(:,1:100);
    C = S(1:100,1:100)*V(:,1:100)';  

    Nyt siis approksimaatio kuvalle KUVA(:,n) saadaan seuraavasti:

    nayta(KA + U*C(:,n)) 

    Huomaa, kuinka paljon datan määrä tippui, ja kuinka kunkin yksittäisen kasvon koodaamiseen riittää alkuperäisen 10304 luvun sijasta vain 100 lukua. Lisäksi olisi hyvin todennäköistä, että jonkin aivan uuden kasvokuvan koodaamiseen kelpaisi sama \(10304 \times 100\) -matriisi \(U\), eli jopa kirjastosta puuttuvien kasvojen koodaus onnistuisi todennäköisesti ainoastaan sadalla luvulla.

    Kokeillaan seuraavaksi, miten hahmontunnistus onnistuu. Ajatellaan, että tietokone on nähnyt kustakin neljästäkymmenestä henkilöstä yhdeksän eri kuvaa, jotka virittävät aliavaruudet \(W^n \in \mathbb{R}^{10304}\) kullekin henkilölle \(n = 1,\dots, 40\), ja annetaan tietokoneen laskea lopuista 40 kuvasta etäisyydet kuhunkin näistä aliavaruuksista. Pienin etäisyys vastaa siis suurella todennäköisyydellä sitä, että kyseessä on sama henkilö. Koska matriisin \(U\) pystyvektorit ovat ortonormeerattuja, niin etäisyyksien laskemisen voi aivan yhtä hyvin suorittaa sataulotteisessa komponenttiavaruudessa, jossa kasvokuvia vastaavat matriisin \(C\) pystyvektorit. Nyt siis approksimaatiota \(U*C(:,n)\) vastaa sataulotteinen komponenttivektori \(C(:,n)\), ja sisätuloille (ja sitä kautta etäisyyksille) pätee

    (U*C(:,n))'*(U*C(:,k)) = C(:,n)'*C(:,k). 

    Muodosta tiedosto nimeltä tunnistuskoe.m, ja kirjoita sinne seuraava koodinpätkä:

    P = cell(1,40);
    
    for n=1:40
        [Q,R]=qr(C(:,(n-1)*10+1:n*10-1),0);
        P{n} = Q*Q';
    
        for m=1:40
        W(m,n)=norm(C(:,10*m)-P{n}*C(:,10*m));
        end
    end 

    Nyt siis \(P\{n\}\) on projektiomatriisi sarakevektoreiden

    C(:,(n-1)*10+1),...,C(:,n*10-1) 

    virittämään aliavaruuteen, ja \(W(m,n)\) on vektorin \(U*C(:,10*n)\) etäisyys aliavaruudesta \(W_m \subset \mathbb{R}^{10304}\). Aja tämä pieni skripti kirjoittamalla tunnistuskoe, ja tutki matriisia \(W\). Kuinka monen henkilön kohdalla tunnistus meni oikein?


  59. mlLAxxx

    mlLAxxx.tex
    Template file
    Let \[\mathbf{A} = \begin{bmatrix} 1&2&3\\ 4 &5&6\\ 7&8&9 \end{bmatrix}.\] What can you say ...

    Vaativuus: 1 - 3+
    Tehtävän Latex-koodi:
    ../mlteht/mlLinalg/mlLAxxx.tex

    Avainsanat, keywords: Lineaarialgebraa Matlabilla, matriisilaskentaa,mlLinalg,mlLA