Wpisany przez Tomasz Lubiński,
08 sierpnia 2005 21:48
Metoda Crouta pozwala rozwiązać układ n równań liniowych z n niewiadomymi, w którym macierz współczynników jest trójwstęgowa i diagonalnie dominująca tzn:
T =
\begin{bmatrix}
a_1 & b_1 & 0 & 0 & 0 &... & 0\\
c_2 & a_2 & b_2 & 0 & 0 & ... & 0\\
0 & c_3 & a_3 & b_3 & 0 & ... & 0\\
... & ... & ... & ... & ... & ... & ...\\
0 & ... & 0 & 0 & 0 & c_n & a_n\\
\end{bmatrix}\\\\
|a_1| \geq |b_1|\\
|a_i| \geq |c_i| + |b_i| \text{, dla } i=2,3, ..., n-1\\
|a_n| \geq |c_n|
Metoda wyznaczania rozwiązania układu równań liniowych, metodą Crouta, polega na znalezieniu dla jego macierzy współczynników T macierzy dwuwstęgowej z wyrazami l na głównej przekątnej i wyrazami c pod nimi, oraz macierzy U również dwuwstęgowej z jedynkami na głównej przekątnej i wyrazami u nad nią. Tak by T=LU, wtedy Ly=d, Ux=y i Tx=d to LUx=d (d to wektor zawierający wyrazy wolne równania):
L =
\begin{bmatrix}
l_1 & 0 & 0 & 0 &... & 0\\
c_2 & l_2 & 0 & 0 & ... & 0\\
0 & c_3 & l_3 & 0 & ... & 0\\
... & ... & ... & ... & ... & ...\\
0 & ... & 0 & 0 & c_n & l_n\\
\end{bmatrix}
U =
\begin{bmatrix}
1 & u_1 & 0 & 0 &... & 0\\
0 & 1 & u_2 & 0 & ... & 0\\
0 & 0 & 1 & u_3 & ... & 0\\
... & ... & ... & ... & ... & ...\\
0 & ... & 0 & 0 & 0 & 1\\
\end{bmatrix}
Obliczamy je z następujących wzorów: (wektor x zawiera ostateczne rozwiązanie układu):
u_1 = \frac{b_1}{a_1} \text{ następnie } u_i = \frac{b_i}{a_i - u_{i-1}c_i} \text{ dla } i=2,3,...,n-1\\\\
y_1 = \frac{d_1}{a_1} \text{ następnie } y_i = \frac{d_i - c_iy_{i-1}}{a_i - c_iu_{i-1}} \text{ dla } i=2,3,...,n\\\\
x_n = y_n \text{ następnie } x_i = y_i - u_ix_{i+1} \text{ dla } i=n-1,n-2,...,1
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 3 |
Poprawiony: 23 września 2012 14:32