3 Zadatak Final Gotov

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

List broj:

MAŠINSKI FAKULTET
PODGORICA Broj listova:

3. Gaus-Siedelov iteracioni postupak

PROGRAM:

%*****************************************************************
% SOLVERI
% PREDMET: KME
% Milan Sekularac, predmetni asistent
%*****************************************************************
clear all;
clc;
% POLAZNI PODACI:
A = [6. -1. 0. 0. ; -1. 2. -1. 0.; 0. -1. 4. -1.; 0. 0. -1 6.];
B = [150. 200. 150. 100.]';
% DIMENZIJA SISTEMA (BROJ JEDNACINA) JE:
N = size(A,1);
% ZADATAK: ODREDITI VEKTOR RESENJA X, KOJI ZADOVOLJAVA MATRICNU JEDNACINU: A*X=B.
%*****************************************************************
%DIREKTNE METODE
% 1. NACIN u Matlabu: INVERZIJA MATRICE
X = inv(A)*B;
% % 2. NACIN: GAUSOVA ELIMINACIJA
%
% % 3. NACIN: TDMA (TOMASOV) ALGORITAM
%
%######################################################################################
% 4. NACIN: GAUS-SEIDEL ITERATIVNI ALGORITAM
% OVDJE DATA VARIJANTA JE PRIMJENJIVA ZA 3-dijagonalni SISTEM JEDNACINA, REDA N
% ZA SISTEM SA VISE DIJAGONALA (2d PROBLEMI, ISL) TREBA DODATI POTREBNE SABIRKE U
IZRAZE
% PRETPOSTAVKA ZA fi U 0-TOJ ITERACIJI:
for i =1:1:N
fi(i) = 0.0;
end
epsilon = 10.^-6.; % MJERA SMANJENJA NORMIRANOG REZIDUALA
Rezidual = epsilon + 1.; % ZA USLOV WHILE PETLJE
brojac = 0.0 ; % BROJAC ITERACIJE
omega = 0.5; % FAKTOR PODRELAKSACIJE
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
while Rezidual > epsilon % USLOV ITERIRANJA
brojac = brojac + 1. % (BEZ ; -> PRIKAZUJE SE BROJ ITERACIJE)
%........................................................................................
.........
12/23/18 11:11 PM C:\Users\Producer Boka\D...\gaus borko.m 2 of 3
% za svaku jednacinu (vrijednost zavisno promjenjive, osim onih fiksiranih
Dirihleovim g.uslovom):
for i = 1:1:N;
% NOVO fi(i), U TEKUCOJ ITERACIJI:
if i == 1.
fi(1) = omega*[B(1)-A(1,2)*fi(2)]./A(1,1) + (1-omega)*fi(1);
elseif i > 1.
if i < N
fi(i) = omega*[B(i)-A(i,i-1)*fi(i-1)-A(i,i+1)*fi(i+1)]./A(i,i) + (1-
omega)*fi(i);
elseif i == N
fi(N) = omega*[B(N)-A(N,N-1)*fi(N-1)]./A(N,N) + (1-omega)*fi(N);
end
end
end

Datum: Ime i prezime: Broj indeksa: Zadatak: Ovjerio:


List broj:
MAŠINSKI FAKULTET
PODGORICA Broj listova:

%........................................................................................
.........
%*************************************************
% REZIDUAL:
% Rezidual(i) u k-toj iteraciji = b + suma_nb_od_(fi)nb - ap*(fi)p;
% to je ne-nula broj u k-toj iteraciji. Kod tacnog resenja je Rezidual = 0.
% ZA 1. I N.-TU JEDNACINU JE:
rezidual(1)= abs( B(1)-A(1,2)*fi(2) - A(1,1)*fi(1) );
rezidual(N)= abs( B(N)-A(N,N-1)*fi(N-1) - A(N,N)*fi(N) );
% ZA SVE OSTALE JE:
for i = 2:1:N-1
rezidual(i) = abs( B(i)-A(i,i-1)*fi(i-1)-A(i,i+1)*fi(i+1) - A(i,i)*fi(i)
);
end
%*************************************************
% ODREDJIVANJE NAJVECEG REZIDUALA U DOMENU, ZA TEKUCU ITERACIJU:
for i = 1:1:N
if rezidual(i) > Rezidual
Rezidual = rezidual(i);
end
end
% NAJVECI REZIDUAL NAKON 1. ITERACIJE IZNOSI:
if brojac == 1.
Rez_1 = Rezidual;
end
% TEKUCI NORMIRANI REZIDUAL JE:
Rezidual = Rezidual/Rez_1;
end % KRAJ ITERIRANJA
%######################################################################################
% UPOREDJENJE INVERZIJE MATRICE I GAUS SEIDEL:
disp('RESENJE INVERZIJOM MATRICE JE:')
X
12/23/18 11:11 PM C:\Users\Producer Boka\D...\gaus borko.m 3 of 3
disp('RESENJE GS ITERATIVNIM ALGORITMOM JE:')
fi
disp('RAZLIKA JE:')
X - fi'

Datum: Ime i prezime: Broj indeksa: Zadatak: Ovjerio:


List broj:
MAŠINSKI FAKULTET
PODGORICA Broj listova:

RJESENJE INVERZNOM MATRICOM JE:

X=

53.4562
170.7373
88.0184
31.3364

RJESENJE GS ITERATIVNIM ALGORITMOM JE:

fi =

53.4562
170.7373
88.0184
31.3364

RAZLIKA JE:

1.0e-04 *

0.2613
0.3350
0,0965

Datum: Ime i prezime: Broj indeksa: Zadatak: Ovjerio:

You might also like