Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos

-e

mlMatriisit

1. Potenssimenetelmä on eräs keino löytää magnitudiltaan isoin ominaisarvo ja -vektori. Menetelmä toimii seuraavasti:

• Valitse alkuarvaus b_{0}. Ainoa vaatimus on, että tällä vektorilla on nollastapoikkeava komponentti ominaisarvon suuntaan – käytännössä kannattaa valita vektori, jonka jokainen alkio on nollasta poikkeava.

• Aseta

b_{k+1} = \frac{Ab_{k}}{||Ab_{k}||}

• Jatka kunnes jono (b_{k}) suppenee. Ominaisarvo λ = ||Ab_{k}|| ja vektori x = b_{k}.

Toteuta menetelmä MATLABissä, ja laske matriisin gallery(5) isoin ominaisarvo ja -vektori. Testaa tuloksen oikeellisuus.

Vihje:

2. Tehdään LU-hajotelma tuentaa hyväksikäyttäen. Ensimmäiseksi, yritetään ymmärtää, kuinka tuenta toimii seuraavan pseudokoodin avulla.

[Kommentoitu pois codebox-osuus]

Kirjoita vastaava MATLAB-funktio, ja ratkaise sen avulla ongelma Ax = b, kun

A = [ \begin{matrix}0 & 3 & 12 \\ 3 & 12 & 1 \\ −1 & −3 & 4 \end{matrix}] , b = [ \begin{matrix}29 \\ 21 \\ 45 \end{matrix}] .

Kokeile sitten ratkaista ongelma Ax = b, kun A on 18 × 18 Hilbertin matriisi, ja b = A[1]_{18},

Vihje: Hilbertin matriisi MATLABina:

A = hilb(18);
b = A*ones(18,1);

3. Gram-Schmidtin menetelmä vektorijoukon {v_{1}, v_{2}, …, v_{n}} ortonormalisoimiseksi toimii seuraavasti:

• Ortogonalisoidaan:

u_{1} = v_{1}

u_{2} = v_{2} − \frac{u_{1}·v_{2}}{u_{1}·u_{1}} u_{1}

⋮

u_{n} = v_{n} − ∑ _{k=1}^{n−1} \frac{u_{k}·v_{n}}{u_{k}·u_{k}} u_{k}

• Normitetaan: e_{i} = \frac{u_{i}}{||u_{i}||} , i = 1 …n

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

Vinkki: Laskutoimitus \frac{u_{k}·v_{n}}{u_{k}·u_{k}} u_{k} vastaa toimitusta (u_{k}^{T}v_{n})u_{k}. Lisätehtävä nopeille: Matriisin sarakeavaruuden normalisointi ei poikkea kovin paljon QR-hajotelman tekemisestä. Jos ehdit, toteuta oma algoritmisi QR-hajotelmalle.

Vihje:

4. Matriisi (a_{ij}) = A ∈ R^{n×m} on yläkolmiomatriisi, jos a_{ij} = 0 kun i > j. (a)Kirjoita MATLAB funktio, joka ratkaiseen yhtälöryhmän Ax = b, kun A on yläkolmiomatriisi.

(b) Generoi satunnaisia yläkolmiomatriiseja, ja tutki josko

(1) kahden yläkolmiomatriisin tulo on aina yläkolmiomatriisi,

(2) yläkolmiomatriisin käänteismatriisi on aina yläkolmio.

(3) determinantti on aina nollastapoikkeava.

Vihje: Satunnaisia matriiseje voi luoda kommennoilla rand ja randn. Näitä kertomalla saa matriiseja joiden arvot ovat millä vain halutulla välillä. Yläkolmion saa matriisista A komennolla triu(A).

5.

Olkoon

A = [ \begin{matrix}5 & 1 & 1 \\ 1 & 5 & 1 \\ 1 & 1 & 5 \end{matrix}]

a) Laske matriisin A diagonalisointiin tarvittavat matriisit P ja D.

b) Varmista, että P on ortogonaalinen, ja D on diagonaalinen ja diagonaalialkiot suuruusjärjestyksessä.

c) Osoita, että spektraalikaava

λ_{1}u_{1}u_{1}^{T} + λ_{2}u_{2}u_{2}^{T} + λ_{3}u_{3}u_{3}^{T} = A

Vihje: