Page 1 of 1

Finne invertibel matrise med MATLAB

Posted: 22/04-2013 19:09
by Flabbrø
Gitt matrisen [tex]A=\begin{pmatrix} 1 & 5 & 1\\ 2 & 1 & 2\\ 3 & 2 & 9\\ 4 & 3 & 1\\ \end{pmatrix}[/tex]

Bruk MATLAB til å finne en invertibel matrise B slik at multiplikasjon av A med B fra venstre bringer A på redusert trappeform.

Hvordan kan jeg gjøre det? Takk for alle svar.

Re: Finne invertibel matrise med MATLAB

Posted: 22/04-2013 20:05
by Emilga
Bruk funksjonen lu.

Re: Finne invertibel matrise med MATLAB

Posted: 23/04-2013 11:46
by Flabbrø
Må innrømme at jeg ikke ser helt hvordan det skal gjøres med lu. Kunne du utdypet litt?

Jeg tenkte at det kunne gjøres slik:

Code: Select all

>> A = [1 5 1; 2 1 2; 3 2 9; 4 3 1];
>> B = sym(rref(A)/A)
 
B =
 
[ -25/141, 0, -2/141,  43/141]
[   11/47, 0,  -1/47,   -2/47]
[   1/141, 0, 17/141, -13/141]
[       0, 0,      0,       0]
 
>> B*A
 
ans =
 
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]
[ 0, 0, 0]

>> rref(A)

ans =

     1     0     0
     0     1     0
     0     0     1
     0     0     0

Men denne matrisen B er jo åpenbart ikke invertibel: den har en søyle med bare nuller.

Re: Finne invertibel matrise med MATLAB

Posted: 23/04-2013 13:06
by Emilga
Antar at matrisen B er definert. Kjør scriptet:

Code: Select all

[L U] = lu(B);
Da er [tex]L^{-1}[/tex] matrisen du er ute etter, siden [tex]L^{-1}B = U[/tex].

Bruk "help lu" for å finne ut hvordan lu-funksjonen funker. :)

Re: Finne invertibel matrise med MATLAB

Posted: 23/04-2013 13:58
by Flabbrø
Men L-en jeg får er ikke invertibel, og U er ikke den reduserte trapperformen av B (kalt A i åpningsinnlegget). Er det noe mer jeg skal gjøre?

Code: Select all

>> B = [1 5 1; 2 1 2; 3 2 9; 4 3 1];
>> [L U] = lu(B)                    

L =

    0.2500    1.0000         0
    0.5000   -0.1176    0.1915
    0.7500   -0.0588    1.0000
    1.0000         0         0


U =

    4.0000    3.0000    1.0000
         0    4.2500    0.7500
         0         0    8.2941

Re: Finne invertibel matrise med MATLAB

Posted: 23/04-2013 15:10
by Gustav

Code: Select all

>> B = [1 5 1; 2 1 2; 3 2 9; 4 3 1];
>> [L U]=lu(B);
>> C=pinv(L);
>> C*B

ans =

    4.0000    3.0000    1.0000
   -0.0000    4.2500    0.7500
   -0.0000   -0.0000    8.2941

>> U

U =

    4.0000    3.0000    1.0000
         0    4.2500    0.7500
         0         0    8.2941
Funksjonen pinv(L) er pseudoinversen av L. Det som gjenstår er å finne en matrise man kan gange U med fra høyre som bringer U på redusert form.

Re: Finne invertibel matrise med MATLAB

Posted: 23/04-2013 15:46
by Flabbrø
Hvis vi kaller den matrisen X, så kan vel det gjøres slik:

Code: Select all

>> B = [1 5 1; 2 1 2; 3 2 9; 4 3 1];
>> [L U]=lu(B);
>> C=pinv(L);
>> [V W]=lu(U) 

V =

     1     0     0
     0     1     0
     0     0     1


W =

    4.0000    3.0000    1.0000
         0    4.2500    0.7500
         0         0    8.2941

>> X = inv(W)

X =

    0.2500   -0.1765   -0.0142
         0    0.2353   -0.0213
         0         0    0.1206

>> U*X

ans =

    1.0000         0         0
         0    1.0000    0.0000
         0         0    1.0000

Men hvordan finner jeg så matrisen jeg kan multiplisere B (A i åpningsinnlegget) med fra venstre slik at jeg får [tex]\begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ 0 & 0 & 0\\ \end{pmatrix}[/tex]? Beklager om jeg er treig eller har uttrykt meg uklart.

Jeg vet ikke om det kan være relevant, men første del av oppgaven var å finne en maksimal undermengde av søylevektorene i [tex]\begin{pmatrix} 1 & 5 & 1 & 5\\ 2 & 1 & 2 & 1\\ 3 & 2 & 9 & -4\\ 4 & 3 & 1 & 6\\ \end{pmatrix}[/tex] slik at disse er lineært uavhengige. Matrisen A (som skiftet navn til B innlegg #4) er den man får når den eller de overflødige søylene er fjernet. Min løsning var å ta bort den siste av søylene.

Re: Finne invertibel matrise med MATLAB

Posted: 25/04-2013 19:16
by Flabbrø
Det ble til at jeg fant [tex]B^{-1}[/tex] for hånd, og brukte MATLAB for å invertere den.