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:
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.