Mat-1.1332 KP3-ii Harj. 2 LV tietokone, ratkaisut

Tehtävä 1

>> format compact
>> I=eye(5,5)
I =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

>> E1=I;
>> E1([2 5],:)= E1([5 2],:)

E1 =

     1     0     0     0     0
     0     0     0     0     1   % rivi 2 <- rivi 5
     0     0     1     0     0
     0     0     0     1     0
     0     1     0     0     0   % rivi 5 <- rivi 2
>> E2=I;
>> E2(4,4)=4*E2(4,4)
E2 =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     4     0
     0     0     0     0     1

% Tai koko riville (kuten käsketään):
>> E2=I;   % Huomaa, että E2 pitää palauttaa arvoon I.
>> E2(4,:)=4*E2(4,:)
E2 =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     4     0
     0     0     0     0     1

>> E3=I;
>> E3(4,:)=E3(4,:)+4*E3(1,:)
E3 =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     4     0     0     1     0
     0     0     0     0     1

>> E1, E1I=inv(E1)
E1 =
     1     0     0     0     0
     0     0     0     0     1
     0     0     1     0     0
     0     0     0     1     0
     0     1     0     0     0
E1I =
     1     0     0     0     0
     0     0     0     0     1
     0     0     1     0     0
     0     0     0     1     0
     0     1     0     0     0

>> E1==E1I

ans =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
 Matriisit ovat samat, kaikki vastinalkoiden samuusvertailut
 (==)  tuottavat ehdon 1 (tosi).
 Jos I:n kaksi riviä vaihdetaan ja sitten taas nuo samat 
 rivit vaihdetaan, tullaan takaisin I:hin.

E2,E2I=inv(E2)

E2 =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     4     0
     0     0     0     0     1

E2I =

    1.0000         0         0         0         0
         0    1.0000         0         0         0
         0         0    1.0000         0         0
         0         0         0    0.2500         0
         0         0         0         0    1.0000

Diagonaalimatriisin käänteismatriisi: diagonaalialkioiden
käänteisluvut.

>> E3,E3I=inv(E3)

E3 =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     4     0     0     1     0
     0     0     0     0     1


E3I =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
    -4     0     0     1     0
     0     0     0     0     1

E3: 1. rivi kerrotaan 4:llä ja lisätään kolmanteen.
Kun tähän sovelletaan E3I:tä, niin 1. rivi kerotaan (-4):llä
ja lisätään kolmanteen. Saadaan ainoaan poikkeuskohtaan 4-4=0,
ja yksikkömatriisissa ollaan takaisin.

Tehtävä 2

>> A=[1 3;4 2]/4
A =
    0.2500    0.7500
    1.0000    0.5000
Vihreä x-vektori ja sininen A x-vektori ovat samalla suoralla,
kun x=[1.5 2]. Tällöin venytys on jotain ehkä 1.3:n luokkaa.

Siten x = [3 4 ] ja lambda on noin 1.3.
Vektorit x ja Ax liikkuvat vastakkaisiin suuuntiin.
Toinen yhdensuuntaisuus näkyy olevan suunnassa [1 -1].
Tässä tapahtuu kutisus n. tekijällä 1/2.
>> [V,D]=eig(A)

V =

   -0.7071   -0.6000         % Ominaisvektorit sarakkeina
    0.7071   -0.8000         % normeerattu yksikkövektoreiksi

D =

   -0.5000         0          % ominaisarvot diagonaalilla
         0    1.2500

Varsin hyvin nähty. Yksikköympyrän vihreä kehä kuvautuu siniseksi ellipsiksi.

Matriisi B

Vektori x ja sen kuva (siinä A x, meillä B x) kiertävät samaan suuntaan, edellinen vihreää ympyrää (kuten aina), jälkimmäinen sinistä ellipsiä, joka leikkaa ympyrää. Mutta nuolet eivät missään kohtaa. Siten ei ole reaalisia ominaisarvoja. No, koska ominaisarvoja aina on, niiden on oltava kompleksiset.
Visualisointi tapahtuisi tasossa C2 = R4 , johon rajalliset aistimme eivät yllä. Toki ajatus siitä, että kompleksiluvulla kertomisessa on kierto mukana, auttaa mieltämistä.
>> B=[3 1;-2 4]/4
B =
    0.7500    0.2500
   -0.5000    1.0000
>> eig(B)      % Katsotaan pelkät ominaisarvot.
ans =
   0.8750 + 0.3307i
   0.8750 - 0.3307i
>> [V,D]=eig(B)  % Katsotaan nyt myös ominaisvektorit.
V =
   0.2041 - 0.5401i   0.2041 + 0.5401i   
   0.8165             0.8165          
D =
   0.8750 + 0.3307i        0          
        0             0.8750 - 0.3307i
Ominasrvot ja -vektorit esiintyvät aina liittolukupareina, kun tarkasteltavana on reaalinen matriisi.

Matriisi C

Kun x kiertää yksikköympyrää, niin kuva piirtää suoraa x2= x1. Nuolet tulevat keskenään samansuuntaisiksi tällä suoralla kaksi kertaa. Molemmat edustavat samaa ominaisarvoa, joka näkyy varsin tarkkaan: lambda=1.5 (Komenna Matlab:ssa grid on ja suurenna grafiikkaikkuna. Venymän suuruus näkyy parhaiten ensi piirtämisellä jommassa kummassa kohtauspaikassa.) Ominaisvektori x=[1;1] (yhtä hyvin -x.) Ominaisavaruuden virittää esim. vektori x=[1;1].
Onko lambda=1.5 kaksinkertainen ominaisarvo, jota vastaava ominaisavaruus on 1-ulotteinen? Katsotaanpa kuvaa vielä tarkemmin. Kun vihreä x on kutakuinkin vektorin [-2,1] suuntainen, niin Ax=0 (Ajatellaan: C=A). Tälle x:lle pätee siis Cx=0x , joten tämä x=[-2,1] on ominaisarvoa lambda=0 vastaava ominaisvektori.
Huomaa, että ominaisarvo saa olla 0, ominaisvektori ei.
Ominaisarvo 0 merkitsee sitä, että jokin nollasta poikkeva vektori x kuvautuu 0-vektoriksi. Matriisista näkee suoraan, että sarakeavaruuden virittää vektori [1,1] ja siis matriisin rangi = 1. Silloinhan nolla-avaruuden dimensio = 1 (= 2-1). Yleisestihän nolla-avaruus on juuri ominaisarvoa 0 vastaava ominaisavaruus, jos 0 on ominaisarvo. (Ellei ole, niin nolla-avaruus on pelkkä nollavektori.)

Ymmärräthän, että nollaominaisrvo on yksi monesta yhtäpitävästä ehdosta matriisin singulaarisuudelle.
Lasketaan vielä:

>> [V,D]=eig(C)
V =
   -0.8944   -0.7071
    0.4472   -0.7071
D =

         0         0      % Ominaisarvot 0  ja
         0    1.5000                             1.5
Matlab normeeraa ominaisvektorit yksikkövektoreiksi. Jos jaetaan jommalla kummalla komponentilla, saadaan ainakin se ykköseksi. Hyvällä onnella toinenkin on "helppo" luku. Katsotaan:
>> V(:,1)/V(1,1)    % Jaetaan 1. sarake ekalla alkiolla
ans =
    1.0000
   -0.5000         % Hyvin kävi!
%  Toiselle nyt nähdään muutenkin, mutta jaetaan nyt sekin:
>> V(:,2)/V(1,2)

ans =

    1.0000
    1.0000
% Tietysi yhtä hyvin toisella (tässä vain harjoitellaan rutiinia).
>> V(:,2)/V(2,2)
ans =

    1.0000
    1.0000

Tehtävä 3

Tämä on hyvin rutiinihomma. Tavallaan ehkä sopisi ennen tehtävää 2. Toisaalta teht. 2 on kaikkein opettavaisin, joten siihen kannattaa panostaa.
>> v=(1:6)'
v =
     1
     2
     3
     4
     5
     6
>> A=vander(v)  % Yllä transponointi ei välttämätöntä, sillä vander
                %  omaa "vektoriälyä", toimii yhtä hyvin vaakavektorille.

A =

  Columns 1 through 5

           1           1           1           1           1
          32          16           8           4           2
         243          81          27           9           3
        1024         256          64          16           4
        3125         625         125          25           5
        7776        1296         216          36           6

  Column 6

           1
           1
           1
           1
           1
           1
Nähdään, että matriisin sarakkeet ovat viimeistä edellisen potensseja: 0,1,...,5 (lopusta alkuun). (Usein määritellään toisinpäin, siis alusta loppuun, Matlabissa tehdään "polynomijohdonmukaisuuden" vuoksi näin.)
>> [V,D]=eig(A)
V =
    0.0104    0.0122   -0.0168   -0.0137   -0.0068    0.0019
    0.0240    0.0135    0.0453    0.0915    0.0779   -0.0313
    0.0652   -0.0082    0.1576   -0.0139   -0.2425    0.1957
    0.1727   -0.1021    0.2293   -0.3429    0.0105   -0.5627
    0.4135   -0.3596    0.0129   -0.4553    0.7578    0.7299
    0.8912   -0.9273   -0.9592    0.8163   -0.6006   -0.3336

D =

  151.9882         0         0         0         0         0
         0 -112.1761         0         0         0         0
         0         0   31.6505         0         0         0
         0         0         0   -6.0047         0         0
         0         0         0         0    0.5611         0
         0         0         0         0         0   -0.0190

>> d=diag(D)  % diag toimii kahteen suuntaan: 1) Tekee vektorista
d =           % diagonaalimatrisiin, 2) poimii matriisista diagonaalin.
  151.9882    % Kokeile vaikka A=rand(4,4), diag(diag(A)).
 -112.1761
   31.6505
   -6.0047
    0.5611
   -0.0190
>> A*V(:,1)
ans =
    1.5770
    3.6467
    9.9116
   26.2492
   62.8480
  135.4529

>> d(1)*V(:,1)  % Tässä diag-komennon ainoa hyöty oli se, että voitiin
ans =           % kirjoitaa d(1) sensijaan että D(1,1). 
                % Opetushyöty on sitten puolestaan mittaamaton!
    1.5770      
    3.6467
    9.9116
   26.2492
   62.8480
  135.4529
>> A
Koska matriisilla on erisuuret ominaisarvot, se on diagonalisoituva. Katsotaan kuitenkin vaikka rangi:
> rank(V)
ans =
          6.00    % On täysi
>> V*D*inv(V)

>> A

Tässä ei näytetä tulostuksia, mutta ovat samat, kun katsot tarkkaan.
Kokeile myös format-komentoja. (Kunkin komennon jälkeen tulostus uudestaan 
tietysti.)

>> format long
>> format bank
>> format short