• Nie Znaleziono Wyników

Laboratorium komputerowe 7

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium komputerowe 7"

Copied!
3
0
0

Pełen tekst

(1)

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,:)

(2)

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

(3)

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

Cytaty

Powiązane dokumenty

Przy nazwach funkcji proszę zwracać uwagę na małe/wielkie litery oraz ogólne zasady tworzenia nazw2. Plik funkcyjny musi zaczynać się od nagłówka funkcji i

Przy czym możemy odwołać się albo do jednego elementu, albo do wielu elementów naraz (w szczególności do całego wiersza/całej kolumny czy wybranej podmacierzy).. W drugim

Fragment w ramce traktujemy jako przypomnienie używania pętli i instrukcji

[r]

Zapis -0.0000 nie oznacza żadnego specjalnego symbolu matematycznego - jest to po prostu mała liczba ujemna, której co najmniej pierwsze cztery cyfry po

Macierz R jest macierzą pseudolosową, dlatego za każdym razem uzyskamy inne wyniki (dla mniejszych macierzy warto dodatkowo wyświetlić jak wygląda wygenerowana macierz

Jest to metoda mniej efektywna, wymaga zapamiętania wszystkich elementów większych od 10, a następnie przeglądnięcie ich w celu

Funkcja obliczająca