[Matlab] Liczenie macierzy odwrotnej metodą Gaussa

olabogaretyojej
Użytkownik
Użytkownik
Posty: 16
Rejestracja: 9 sty 2015, o 20:17
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 3 razy

[Matlab] Liczenie macierzy odwrotnej metodą Gaussa

Post autor: olabogaretyojej »

Witam. Bardzo proszę o pomoc w napisaniu projektu w Matlabie, w którym należy obliczyć macierz odwrotną do danej metodą Gaussa i porównać wynik z biblioteką. Zamieszczam poniżej to, co udało mi się uzyskać samodzielnie, jednak są tam błędy, bo nie zgadza się wynik (wychodzą elementy Inf i NaN). Zauważyłam też, że wynikiem drugiej funkcji jest macierz dolnotrójkątna, a powinna być górno-. Nie jestem zbyt dobra w tym temacie i nie mam pomysłu, co zrobić dalej z programem. Czy ktoś byłby w stanie go sprawdzić i poprawić błędy? :)

Kod: Zaznacz cały

function xyz ()
K=[5 2 1 1 0;
    4 10 2 -3 -1;
    0 2 8 2 1;
    1 1 2 9 3;
    0 0 4 2 8];
disp('Wynik z biblioteki Matlaba:')
disp(inv(K))
disp('Wynik uzyskany metodą Gaussa:')
[invK]=metodaGaussa(K)
end%function

function [invK]=metodaGaussa(K)
[m,n]=size(K);
B=[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];
for k=1:n
    for i=k+1:n
        m(i,k)=K(i,k)/K(k,k);
        for j=k+1:n
            K(i,j)=K(i,j)-m(i,k)*K(k,j);
        end%for
        for j=1:n
            B(i,j)=B(i,j)-m(i,k)*B(k,j);
        end%for
    end%for
end%for
invK=wstecz(K,B);
end%function

function X=wstecz(K,B)
n=length(K);
for l=1:n
    for i=n:-1:1
        s=0;
        for j=i+1:n
            s=s+K(i,j)*X(j,l);
        end%for
        X(i,l)=(B(i,l)-s)/K(l,i);
    end%for
end%for
X
end%function
ODPOWIEDZ