Metody Numeryczne Wykład 3
Układy równań liniowych
Rozpoczynamy analiz¸e metod dokładnych rozwi¸azywania układów równań liniowych postaci
A−→x =−→ b
gdzie A = (ai,j)ni,j=1 jest macierz¸a nieosobliw¸a (detA 6= 0), wymiaru n × n,−→
b = (bi)ni=1 jest wektorem z Rn.
Zakładamy, że informacja o zadaniu dana jest przez współczynniki ai,j macierzy i współrz¸edne bi wektora.
W wyniku powinniśmy uzyskać współrz¸edne x∗j wektora rozwi¸azania −→x∗ = (x∗j)nj=1,
−
→x∗ = A−1−→ b .
Przypomnijmy, że nieosobliwość macierzy A zapewnia, że rozwi¸azanie −→x∗ istnieje i jest wyznaczone jednoznacznie.
Układy z macierz¸a trójk¸atn¸a.
Szczególnym przypadkiem układu równań liniowych jest układ z macierz¸a trójk¸atn¸a A.
B¸ed¸a nas szczególnie interesować macierze trójk¸atne górne, dla których ai,j = 0 dla i > j, oraz macierze it trójk¸atne dolne z jdynkami na przek¸atnej , ai,j = 0 dla i < j, oraz aii = 1. Macierze pierwszego rodzaju b¸edziemy oznaczć przez U, drugiego roodzaju przez L. Układ z macierz¸a trójk¸atn¸a górn¸a
U −→x = −→c ,
U = (Ui,j), −→c = (cj) można rozwi¸azać, stosuj¸ac w OCTAVE nast¸epuj¸acy skrypt: o na- zwie na przykład ukladU .m
% wprowadź macierz U U = input(0U =0);
%wprowadź wektor kolumnowy −→c c = input(0c =0);
n = length(c);
x = zeros(n, 1);
x(n) = c(n)/U (n, n);
for k = n − 1 : −1 : 1
x(k) = (c(k) − U (k, k + 1 : n) ∗ x(k + 1 : n))/U (k, k);
end x
1
Patrz: zał¸acznik 1
Program ten jest wykonalny, ponieważ nieosobliwość macierzy U implikuje, żeV k, Uk,k 6= 0.
Podobnie rozwi¸azujemy układ z macierz¸a trójk¸atn¸a doln¸a L−→x = −→c
gdzie L = (Li,j). Możemy napisać skrypt w OCTAVE o nazwie na przykład ukladL.m rozwi¸azuj¸acy powyższy układ równań.
% wprowadź macierz L L = input(0L =0)
% wprowadź wektor kolumnowy −→c c = input(0c =0);
n = length(c);
x = zeros(n, 1);
x(1) = c(1)/L(1, 1);
for k = 2 : n
x(k) = (c(k) − L(k, 1 : k − 1) ∗ x(1 : k − 1))/L(k, k);
end x
Patrz: zał¸acznik 2
Rozwi¸azywanie układów równań liniowych - metoda eliminacji Gaussa Rozwi¸ażemy metod¸a eliminacji Gaussa układ równań
−0.04 0.04 0.12 0.56 −1.56 0.32
−0.24 1.24 −0.28
x1 x2 x3
=
3 1 0
posługuj¸ac si¸e pakietem OCTAVE. (patrz zał¸acznik 3) Możemy nasze obliczenia on-line zast¸apić skryptem w OCTAVE na przykład o nazwie gauss.m.
% Wrowadzenie danych
a = [−0.040.040.123; 0.56 − 1.560.321; −0.241.24 − 0.280]; x = [0, 0, 0]0;
% Znalezienie pierwszego elementu głównego - zamiana wierszy pierwszego z drugim tempo = a(2, :);
a(2, :) = a(1, :);
a(1, :) = tempo;
a;
%Eliminacja elementów poniżej pierwszego elementu głównego a(2, :) = a(2, :) − a(1, :) ∗ a(2, 1)/a(1, 1);
a(3, :) = a(3, :) − a(1, :) ∗ a(3, 1)/a(1, 1);
a
2
%Znalezienie drugiego elementu głównego - zamiana wierszy drugiego z trzecim tempo = a(3, :);
a(3, :) = a(2, :) a(2, :) = tempo;
a
% Eliminacja elementu poniżej drugiego elementu głównego a(3, ; ) = a(3, :) − a(2, :) ∗ a(3, 2)/a(2, 2);
% Obliczenie x1, x2, x3 x(3) = a(3, 4)/a(3, 3);
x(2) = a(2, 4) − a(2, 3) ∗ x(3)/a(2, 2);
x(1) = (a(1, 4) − a(1, 2 : 3) ∗ x0(2 : 3))/a(1, 1);
x
Na zakończenie naszych rozważań podamy instrukcje wewn¸etrzne OCTAVE do rozwi¸azywania układów równań metod¸a macierzy odwrotnej i eliminacj¸a Gaussa.
Z kursu algebry liniowej
−
→x = A−1−→c
W OCTAVE
Wprowadzamy macierz A = [a(1, 1), a(1, 2), ..., a(1, n); ...; a(n, 1), a(n, 2), ..., a(n, n)]
Wprowadzamy wektor kolumnowy c = [c(1), c(2), ... ,c(n)]’
x = inv(A) ∗ c Eliminacja Gaussa : x = A\c
W praktycznym rozwi¸azywaniu zadań dotycz¸acych układów równań liniowych (lista 2) b¸edziemy wykorzystywać te instrukcje.
3