Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %dane
- A=[ 10.000 0.810 -1.630 4.280 ;
- 2.970 5.730 -0.700 -0.150 ;
- -3.800 -0.340 -6.650 -1.070 ;
- -2.300 -0.630 -0.820 -4.810 ] ;
- B=[ 23.670 ;
- 0.580 ;
- 15.670 ;
- 6.280 ] ;
- N = rows(A) ; %liczba wierszy A wiec 4
- blad = 0.01 ;
- max_iter = 100 ;
- %spr warunkow zbieznosci
- P = ones(N,1) ; %tworze macierz jedynkowa o wielkściach '4:1'
- sprawdzenie = zeros(N,1) ; % macierz zerowa owielkościach '4:1;
- for i = 1 : N %petla sprawdziajaca warunki dla i od 1 do 4
- sprawdzenie(i,1) = -A(i,[1:i-1,i+1:N])*P([1:i-1,i+1:N],1)/A(i,i) ;
- endfor
- if (abs(sprawdzenie([1:N],1)) < 1 )
- printf ("Warunki zbierznosci spelnione \n\n\n") ;
- if (abs(sprawdzenie([1:N],1)) > 1 )
- printf ("Warunki zbierznosci nie sa spelnione spelnione \n\n\n") ;
- break;
- %metoda iteracyjna
- X_pomocnicza = zeros(N,1) ; % macierz zerowa o wielkości '4:1' zapisuje wartosc poprzedniego x
- X = zeros(N,1) ; % macierz zerowa o wielkości '4:1' wartosc aktualnego x
- for k = 1 : max_iter % zabezpieczenie przed petla nieskonczona
- for i = 1 : N
- X(i,1) = ( -A(i,[1:i-1,i+1:N])*X_pomocnicza([1:i-1,i+1:N],1)+B(i,1) ) / A(i,i) ;
- endfor
- if ( abs( X - X_pomocnicza ) < blad )
- break ;
- endif
- X_pomocnicza = X ;
- il_iteracji++ ;
- endfor
- printf("Przyblizone wartosci wektora niewiadomych: \n\n") ;
- display(X) ;
- endif
- %sprawdzenie poprawnosci przyblizenia
- printf("Ilosc iteracji: ") ;
- display(il_iteracji) ;
- printf("\n\n") ;
- printf("Roznica miedzy watrosciami przyblizonymi a dokladnymi \n")
- ND = abs( B - A*X ) ;
- display(ND) ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement