być może najprostszą iteracyjną metodą rozwiązywania ax = b jest metoda Jacobiego. Zauważ, że prostota tej metody jest zarówno dobra, jak i zła: dobra, ponieważ jest stosunkowo łatwa do zrozumienia, a tym samym jest dobrym pierwszym smakiem metod iteracyjnych; zła, ponieważ nie jest zwykle stosowana w praktyce (chociaż jej potencjalna przydatność została ponownie rozważona wraz z pojawieniem się obliczeń równoległych). Mimo to jest to dobry punkt wyjścia do nauki o bardziej użytecznych, ale bardziej skomplikowanych, iteracyjnych metodach.
biorąc pod uwagę bieżące przybliżenie
x(k) = (x1(k), x2(k), x3(k), …, xn(k))
dla X, strategia metody Jacobiego polega na użyciu pierwszego równania i bieżących wartości X2(k), x3(k), …, xn(k), aby znaleźć nową wartość x1(k+1), i podobnie, aby znaleźć nowa wartość Xi(K) przy użyciu i równania i starych wartości innych zmiennych. Oznacza to, że biorąc pod uwagę bieżące wartości x(k) = (x1(k), x2(k), …, xn(k)), znajdź nowe wartości, rozwiązując dla
x(k+1) = (x1(k+1), x2(k+1),…, xn (k+1))
na
system ten można również zapisać jako
dla jasności, indeks dolny i oznacza, że xi(k) jest i elementem wektora
x (k) = (x1(k), x2(k), …, xi(k), …, xn (k) ),
, A Indeks górny K odpowiada konkretnej iteracji (nie kth potędze xi ).
jeśli napiszemy D, L i U odpowiednio dla przekątnej, ścisłego trójkąta dolnego i ścisłego trójkąta górnego oraz części A,
wtedy metodę Jacobiego można zapisać w notacji macierzowo-wektorowej jako
przykład 1
zastosujmy metodę Jacobiego do systemu
na każdym kroku, biorąc pod uwagę bieżące wartości x1(k), x2(k), x3(k), rozwiązujemy dla x1(k+1), x2(k+1) i x3(k+1) w
tak więc, jeśli nasze początkowe zgadywanie x(0) = (x1(0), x2(0), x3(0)) jest wektorem zerowym 0 = (0,0,0) – wspólne początkowe zgadywanie, chyba że mamy jakieś dodatkowe informacje, które prowadzą nas do wyboru innego — wtedy znajdujemy x(1) = (x1(1), x2(1), x3 (1) ) rozwiązując
więc x(1) = (x1(1), x2(1), x3(1)) = (3/4, 9/6, -6/7) ≈ (0.750, 1.500, -0.857). Wykonujemy iterację tego procesu, aby znaleźć sekwencję coraz lepszych przybliżeń x (0), x(1), x(2),…. Wyniki pokazujemy w poniższej tabeli, wszystkie wartości zaokrąglamy do 3 miejsc po przecinku.
interesuje nas błąd e przy każdej iteracji między prawdziwym rozwiązaniem x a przybliżeniem x (k): e(k) = x − x(K). Oczywiście, zwykle nie znamy prawdziwego rozwiązania x. jednak, aby lepiej zrozumieć zachowanie metody iteracyjnej, jest pouczające, aby użyć metody do rozwiązania systemu AX = B, dla którego znamy prawdziwe rozwiązanie i przeanalizować, jak szybko przybliżenia zbiegają się do prawdziwego rozwiązania. Dla tego przykładu prawdziwym rozwiązaniem jest x = (1, 2, -1).
norma wektora|| x / / mówi nam, jak duży jest wektor jako całość (w przeciwieństwie do tego, jak duży jest każdy element wektora). Normą wektorową najczęściej stosowaną w algebrze liniowej jest norma l2:
na przykład, jeśli x = (1, 2, -1), to
w tym module zawsze będziemy używać normy l2 (w tym dla norm macierzowych w kolejnych tutorialach), tak że | | / / zawsze oznacza|| ||2.
dla naszych celów obserwujemy, że ||x|| będzie mały dokładnie wtedy, gdy każdy z elementów X1, x2,…, xn w x = (x1, x2,…, xn ) jest mały. W poniższej tabeli norma błędu staje się coraz mniejsza, gdy błąd w każdym z trzech elementów X1, x2, x3 staje się mniejszy, lub innymi słowy, gdy przybliżenia stają się coraz lepsze.
k | x(k) | x(k) − x(K-1) | e(k) = x − x(k) | |||||||
---|---|---|---|---|---|---|---|---|---|---|
0 | -0.000 | -0.000 | -0.000 | − | − | − | -0.000 | -0.000 | -1.000 | 2.449 |
1 | 0.750 | 1.500 | -0.857 | -0.000 | -0.000 | -0.857 | 0.250 | 0.500 | -0.143 | 0.557 |
2 | 0.911 | 1.893 | -0.964 | 0.161 | 0.393 | -0.107 | 0.089 | 0.107 | -0.036 | 0.144 |
3 | 0.982 | 1.964 | -0.997 | 0.071 | 0.071 | -0.033 | 0.018 | 0.036 | -0.003 | 0.040 |
4 | 0.992 | 1.994 | -0.997 | 0.010 | 0.029 | 0.000 | 0.008 | 0.006 | -0.003 | 0.011 |
5 | 0.999 | 1.997 | -1.000 | 0.007 | 0.003 | -0.003 | 0.001 | 0.003 | 0.000 | 0.003 |
6 | 0.999 | 2.000 | -1.000 | 0.000 | 0.003 | 0.001 | 0.000 | 0.001 | 0.000 | 0.001 |
7 | 1.000 | 2.000 | -1.000 | 0.001 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
8 | 1.000 | 2.000 | -1.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |