StartAlgorytmyProcedury numeryczneMetoda eliminacji Gaussa
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Metoda eliminacji Gaussa
Ocena użytkowników:+++-- / 58
SłabyŚwietny 
Wpisany przez Tomasz Lubiński
poniedziałek, 08 sierpnia 2005 21:28
Metoda eliminacji Gaussa pozwala nam obliczyć układ n równań z n niewiadomymi Ax=b. Przekształcamy w niej macierz współczynników A do macierzy trójkątnej górnej R, z której następnie obliczamy ostateczne rozwiązanie - czyli wektor x. Macierz trójkątną górną R otrzymujemy w następujący sposób: (Przez macierz (A,b) rozumieć będziemy macierz współczynników A z dodaną na końcu kolumną wyrazów wolnych b)
  1. W macierzy (A,b) szukamy elementu ar1 różnego od zera i przechodzimy do następnego punktu. Jeżeli natomiast nie istnieje taki element to znaczy, że macierz jest osobliwa i nie możemy rozwiązać tego układu.
  2. Zamieniamy wiersz r-ty i pierwszy.
  3. Odejmujemy od i-tego wiersza macierzy li krotność wiersza i-tego i pierwszego. Można to przedstawić za pomocą wzorów: (i=2,3,...,n j=2,3,...,n)
    aij = aij - li * a1j,
    bi = bi - li * bi,
    gdzie li = ai1 / a11.

  4. Następnie wywołujemy tą procedurę od punktu pierwszego rekurncyjnie dla macierzy (A',b') - czyli macierz (A,b) pomniejszoną o pierwszą kolumnę i pierwszy wiersz.
    metoda eliminacji Gaussa - rekurencja


    metoda eliminacji Gaussa - wywołanie rekurencyjne


Wybór częściowy elementu podstawowego uzyskamy wybierając za element, a w punkcie pierwszym |ar1|=max|ai1| i=1,2,...,n
Pełny wybór elementu podstawowego poprzez |ars|=max|aij| i=1,2,...,n j=1,2,...,n Musimy przestawić wiersz r-ty i pierwszy oraz kolumnę s-tą i pierwszą (zmiany kolumn należy zapamiętać gdyż powoduje ona zamianę niewiadowmych!).
Gdy przekształcimy już macierz współczynników A do macierzy trójkątnej górnej R, oraz wektor b do wektora c możemy już wyznaczyć ostateczne rozwiązanie ze wzoru: (i=n,n-1,...,1)
metoda eliminacji Gaussa - obliczanie x


Przykład, niech będzie dana macierz A oraz wektor b, z których tworzymy macierz (A,b)
metoda eliminacji Gaussa - przykład 1


po przekształceniach:
metoda eliminacji Gaussa - przykład 2


natępnie wywołujemy procedurę rekurencyjnie dla:
metoda eliminacji Gaussa - przykład 3


po przekształceniach:
metoda eliminacji Gaussa - przykład 4


Ponieważ ostatniej macierzy nie możemy już rekurencyjnie wywołać (po odcięciu górnego wiersza i prawej kolumny zostanie wektor), zatem otrzymaliśmy szukaną macierz R i wektor c, z których wyznaczamy ostateczne rozwiązanie
metoda eliminacji Gaussa - przykład 5


x[3]=0.25 x[2]=0.75 x[1]=-1.25



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Tomasz Lubiński Delphi/Pascal Borland Delphi 5
Implementacja w Delphi/Pascal
Implementacja w Delphi/Pascal
++--- / 13
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: poniedziałek, 20 czerwca 2011 22:02

Komentarze

 
photo
+3 # anonim 2010-04-18 23:30
Artykuł bardzo pomógł. Zobrazował logicznie kroki w eliminacji gaussa oszczędzając mi niemało czasu. =]
Dzięki.
Odpowiedz | Odpowiedz z cytatem | Cytować
 
 
photo
+1 # Anonim zwany Gallem 2011-04-02 17:56
Można by zaimplementować też dla układów z
prostokątną macierzą główną układu przez sprowadzenie go do układu Cramera
Odpowiedz | Odpowiedz z cytatem | Cytować
 
 
photo
0 # _exe 2012-01-16 23:07
ma ktoś może implementacje tego w C++? Dość pilnie potrzebna :)
Odpowiedz | Odpowiedz z cytatem | Cytować
 

Dodaj komentarz

Kod antysapmowy
Odśwież