Lab 7 – przykładowe rozwiązania M. Głowacki, L-10, PK
1
Laboratorium komputerowe 7 – przykładowe rozwiązania
Implementacja metody – szczególny przypadek dla układu 4 równań
A = [2 2 -1 1; -1 1 2 3; 3 -1 4 -1; 1 4 -2 2];
b = [7; 3; 31; 2];
A = [A b];
% dla j=1
A(1,:) = 1/A(1,1) * A(1,:);
A(2,:) = A(2,:) – A(2,1) * A(1,:);
A(3,:) = A(3,:) – A(3,1) * A(1,:);
A(4,:) = A(4,:) – A(4,1) * A(1,:);
% dla j=2
A(2,:) = 1/A(2,2) * A(2,:);
A(1,:) = A(1,:) – A(1,2) * A(2,:);
A(3,:) = A(3,:) - A(3,2) * A(2,:);
A(4,:) = A(4,:) - A(4,2) * A(2,:);
% dla j=3
A(3,:) = 1/A(3,3) * A(3,:);
A(1,:) = A(1,:) – A(1,3) * A(3,:);
A(2,:) = A(2,:) - A(2,3) * A(3,:);
A(4,:) = A(4,:) - A(4,3) * A(3,:);
% dla j=4
A(4,:) = 1/A(4,4) * A(4,:);
A(1,:) = A(1,:) – A(1,4) * A(4,:);
A(2,:) = A(2,:) - A(2,4) * A(4,:);
A(3,:) = A(3,:) - A(3,4) * A(4,:);
x = A(:,end); % ostatnia kolumna macierzy disp(x);
i = 2,3,4
możemy zapisać ogólnie:
i = 1:n oraz i ~= j
A(i,:)= A(i,:)-A(i,j)*A(j,:) ogólnie: j = 1:n
A(j,:) = 1/A(j,j)*A(j,:)
Lab 7 – przykładowe rozwiązania M. Głowacki, L-10, PK
2
Implementacja metody – ogólny przypadek dla układu n równań
function x = metodagaussa(A,b) [n,m] = size(A);
A = [A b];
for j = 1:n
A(j,:) = 1/A(j,j)*A(j,:) for i = 1:n
if i ~= j
A(i,:)= A(i,:)-A(i,j)*A(j,:);
end end end
x = A(:,end);
end
Alternatywnie część w ramce możemy zapisać bez instrukcji warunkowej, zastępując pętlę wewnętrzną dwoma pętlami – dla elementów nad przekątną i dla elementów pod przekątną osobno.
for i = 1:j-1
A(i,:)= A(i,:)-A(i,j)*A(j,:);
end
for i = j+1:n
A(i,:)= A(i,:)-A(i,j)*A(j,:);
end
Lab 7 – przykładowe rozwiązania M. Głowacki, L-10, PK
3 Odwracanie macierzy
W funkcji do rozwiązywania układów równań wystarczy zmodyfikować nagłówek oraz dwie linijki:
function x = metodagaussa(A,b) [n,m] = size(A);
A = [A b];
...
x = A(:,end);
end
Otrzymujemy funkcję:
function Ainv = metodagaussaodwracanie(A) [n,m] = size(A);
A = [A eye(n)]; % wstawiamy macierz jednostkową
...
Ainv = A(:,n+1:2*n);
end