Warszawa, 7.11.02
wydz elektryczny – informatyka
Sem III, gr 2
METODY NUMERYCZNE I SYMULACJE KOMPUTEROWE
Prowadzący Dr. T.H. Linth
Projekt nr 2:
Metody rozwiązywania układów równań liniowych
zywa
1. Dla wybranych zestawów (A,b) oraz x obliczyć za pomocą funkcji Matlaba rozwiązanie układu równań A.x = b. Wyznaczyć błąd obliczeniowy i współczynnik zbieżności.
2. Przeprowadzić obliczenia za pomocą pozostałych metod iteracyjnych. Wyznaczyć błędy numeryczne i przyrządzić odpowiednie wykresy przebiegów obliczenia i błędów (funkcje błędu i rozwiązania od iteracji).
3. Omówić uzyskane wyniki (!!!).
Wstęp teoretyczny i Realizacja projektu
Cel projektu: Zaznajomienie się z metodami iteracyjnymi rozwiązywania układów równań liniowych m.in. metodą Jacobiego, Gaussa-Seidla i SOR czyli tzw nadrelaksacji.
Wzór iteracji :
A*x=B
Jest to wzór ogólny, gdzie:
jest n x n wymiarową macierzą współczynników układu,
jest wektorem wyrazów wolnych,
jest szukanym
Należy przejść do układu równoważnego postaci:
Za pomocą trzech metod :
Jacobiego, która wyraża się wzorem
Gaussa-Seidla która wyraża się wzorem
i SOR która wyraża się wzorem
wyznaczamy B i c, przebiegi obliczenia funkcji w funkcji liczby iteracji, błedy w funkcji liczby iteracji.
1)wygenerowanie macierzy A
2)sprawdzenie waruneku koniecznego i dostatecznego zbieżności iteracji prostej
r(B) < 1
3)obliczenie błędu
błąd = ||x – xorg||
4)uwzględnic warunek przy którym pętle odpowiedzialne za iteracje zakończą działanie tzw warunek dokładności wyrażony wzorem:
e <= ||x k – x(k+1)|| 2
5)wyliczenie x
x= A/b
tak więc :
za pomocą Matlaba:
J = 1:n;
J = J(ones(n,1),:);
A = ones(n,n)./(J'+J-1)
..,
1))wygenerowana została macierz Hilberta.
A=[1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429]
b=A*xorg;
b=[ 4.000
2.7167
2.1000
1.7214 ]
A=gallery(3)
A=[ -149 -50 -154
537 180 546
-27 -9 -25 ]
b=[ -711
2532
-120 ]
3))Macierz A o wymiarach 5x5- żle uwarunkowana
A=gallery(5)
A=[ -9 11 -21 63 -252
70 69 141 -421 1684
-575 575 -1149 3451 -13801
3891 -3891 7782 -23345 93365
1024 -1024 2048 -6144 24575 ]
b=[ -1058
7091
-58073
392900
103404 ]
1))x obliczony ze wzoru A/B dla macierz hermitowskeij wynosi:
x=[ 1
2
3
4
5
6
7
8 ]
błąd = ||x – xorg||2=1,8*10-6
METODA JACOBIEGO:
r(BJ)=6.042134
z czego wynika iż metoda Jacobiego nie jest zbieżna bo |r(B)| > 1
Jest zbieżna
błąd obliczeniowy= ||x – xorg||2 =1.6448
ilość iteracji=942
błąd obliczeniowy= 1.1641
ilość iteracji=3386
2))x obliczony ze wzoru A/B (dla macierzy 3x3) wynosi
3 ]
błąd obliczeniowy= ||x – xorg||2 =6,58*10-6
r(BJ)=2,068236
r(Bgs)=1,099
z czego wynika iż metoda Gaussa-Seidla nie jest zbieżna bo |r(B)| > 1
r(Bsor)=1,0228
z czego wynika iż metoda SOR nie jest zbieżna bo |r(B)| > 1
3))x obliczony ze wzoru A/B (dla macierzy 5x5) wynosi
x=[1.0000
1.4147
6.9579
-23.1203
-2.1354 ]
r(BJ)=4,155601
r(Bgs)=1,227035
r(Bsor)=1,238619
z czego wynika iż metoda SOR nie jest zbieżna bo |r(B)| >1
KOD ŹRÓDŁOWY:
clear
n=8; %liczba równań
eps=0.001;
J = 1:n; %1 2 3 4
A = ones(n,n)./(J'+J-1); %generowanie macierzy Hilberta
%A=gallery(3) % zwraca źle uwarunkowana macierz 3x3
%A=gallery(5) %źle uwarunkowana macierz 5x5
[m,n]=size(A);
xorg=(1:n)';
b=A*xorg; % macierz b
A\b %obliczanie x
bl=norm(A\b-xorg,2) %błąd obliczeniowy
%rozkład macierzy A na macierze L U D
L=tril(A,-1) %macierz trójkątna z elementów pod
% główną przekątną macierzy A
U=triu(A,1) %macierz trójkątna z elementów nad
%górną przekątna macierzy A
D=diag(diag(A)) % macierz diagonalna
disp(‘Metoda Jacobiego’)
x=zeros(n,1); ...
wips1