1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi...
Transcript of 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi...
Gauss-Seidel Yöntemi1
Gauss-Seidel Yöntemi
İteratif (Yinelemeli) bir yöntemdir.
Temel Prosedür:
-Her bir lineer denklemi xi cebirsel için çöz yani eşitliğin bir
tarafında xi yi yalnız bırak
-Başlangıç değeri olarak bir dizi değer al
-Her bir xi için çöz ve tekrarla
-Mutlak yaklaşık bağıl hata için her iterasyon sonrası
önceden tanımlanan tolerans değerleri arasında olup
olmadığını kontrol et.
2
Gauss-Seidel Yöntemi
Neden?
Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol
etmesine izin verir.
Gaus Eleme ve LU Ayrıştırma gibi eleme yöntemleri yuvarlatma
hatalarına yatkındırlar.
Ayrıca: Eğer problemin fiziği anlaşılırsa, yakın bir başlangıç tahmini
yapılabilir, böylece iterasyon sayısı azaltılabilir.
3
Gauss-Seidel Yöntemi
Algoritman eşitlik ve n bilinmeyenden oluşan lineer denklem sistemi:
11313212111 ... bxaxaxaxa nn
2323222121 ... bxaxaxaxa n2n
nnnnnnn bxaxaxaxa ...332211
. .
. .
. .
Eğer: köşegen elemanları
sıfırdan farklı ise
Köşegene karşılık gelen
bilinmeyeni bulmak için eşitliği
yeniden düzenle
Ör:
İlk eşitlik, x1 için çöz
İkinci eşitlik, x2 için çöz
4
Gauss-Seidel Yöntemi
AlgoritmaHerbir eşitlik yeniden yazılır
11
13132121
1a
xaxaxacx nn
nn
nnnnnn
n
nn
nnnnnnnnn
n
nn
a
xaxaxacx
a
xaxaxaxacx
a
xaxaxacx
11,2211
1,1
,122,122,111,11
1
22
232312122
Eşitlik 1’den
Eşitlik 2’den
Eşitlik n-1’den
Eşitlik n’den
5
Gauss-Seidel Yöntemi
Algoritma
11
11
11
1a
xac
x
n
jj
jj
22
21
22
2a
xac
x
j
n
jj
j
1,1
11
,11
1
nn
n
njj
jjnn
na
xac
x
nn
n
njj
jnjn
na
xac
x
1
Her bir eşitlik için Genel Biçim
6
Gauss-Seidel Yöntemi
AlgorithmSatır «i» için Genel Form
.,,2,1,1
nia
xac
xii
n
ijj
jiji
i
Bu eşitlikler nerede ve nasıl kullanılacak?
7
Gauss-Seidel Yöntemi
n
-n
2
x
x
x
x
1
1
[X] için başlangıç değeri tahmin et Herbir xi değerini bulmak için
yeniden yazılmış eşitlikleri kullan.
Önemli: Hesaplama adımlarında
xi’nin en güncel değerini
kullanılmalıdır. Yani hesaplanan yeni
değerleri geri kalan eşitliklerde
kullanılmalıdır.
8
Gauss-Seidel Yöntemi
Mutlak Yaklaşık Bağıl Hatayı hesapla
100yeni eski
i ia eskii
i
x x
x
Öyleyse, cevap ne zaman bulunacak?
İterasyonlar bütün bilinmeyenler için mutlak yaklaşık bağıl
hata öntanımlı tolerans değerinden daha küçük olduğunda
durdurulmaktadır.
9
Örnek:
Denklem sistemi:
Başlangıç Tahmini:
239
248
247
9428.02357.02357.0
9701.02425.00
9701.002425.0
3
2
1
x
x
x
10
10
10
3
2
1
x
x
x
10
Örnek:
239
248
247
9428.02357.02357.0
9701.02425.00
9701.002425.0
3
2
1
x
x
x
Her bir eşitlik yeniden yazılır
2425.0
)9701.0(0247 32
1
xxx
2425.0
)9701.0(0248 31
2
xxx
9428.0
)2357.0()2357.0(239 213
xxx
11
Örnek:
10
10
10
3
2
1
x
x
x
Iterasyon 1İlk tahminleri eşitliklere koyulursa
61058
24250
10970101002471 .
.
.x
71062
24250
10970106105802482 .
.
..x
81783
94280
710622357061058235702393 .
.
....x
12
Örnek:
1
2
3
100
1058 6 10100 99 055
1058 6
1062 7 10100 99 059
1062 7
783 81 10100 101 28
783 81
new old
i ia newi
i
a
a
a
x x
x
.% .
.
.% .
.
.% .
.
Mutlak yaklaşık bağıl hataları bulalım
İlk iterasyonun sonu
Mutlak yaklaşık bağıl
hataların en büyük değeri
%101.28
81783
71062
561058
3
2
1
.
.
.
x
x
x
13
Örnek:
Iterasyon 2
kullanarak
81.783
7.1062
6.1058
x
x
x
3
2
1
1
2
3
247 0 1062 7 0 9701 783 812117 0
0 2425
248 0 2117 0 0 9701 783 812112 9
0 2425
239 0 2357 2117 0 0 2357 2112 9803 98
0 9428
. . .x .
.
. . .x .
.
. . . .x .
.
14
Örnek:
1
2
3
2117 0 1058 6100 150 00
2117 0
2112 9 1062 7100 150 30
2112 9
803 98 783 81100 197 49
803 98
a
a
a
. .% .
.
. .% .
.
. .% .
.
İkinci iterasyonun sonu
Mutlak yaklaşık bağıl
hataların en büyük değeri
%197.49
98.803
9.2112
0.2117
3
2
1
x
x
x
İkinci iterasyonun mutlak yaklaşık bağıl hatalarını bulalım
15
Iterasyon x1 x2 x3
1
2
3
4
5
6
1058.6
−2117.0
4234.8
−8470.1
16942
−33888
99.055
150.00
149.99
150.00
149.99
150.00
1062.7
−2112.9
4238.9
−8466.0
16946
−33884
99.059
150.30
149.85
150.07
149.96
150.01
−783.81
803.98
−2371.9
3980.5
−8725.7
16689
101.28
197.49
133.90
159.59
145.62
152.28
Örnek:
İterasyonlar tekrarlandığında aşağıdaki değerler bulunur.
%1a %
2a %3a
Dikkat: Mutlak yaklaşık bağıl hatalar azalmamaktadır.
16
Gauss-Seidel Yöntemi: Tuzak
Yanlış giden nedir?
Yöntem doğru uygulanmış olmasına rağmen, çözüm doğru cevaba
yakınsamamaktadır.
Bu örnek Gauss-Siedel yöntemi için bir tuzağı göstermektedir: bütün
denklem sistemleri yakınsamazlar.
Bunun için bir çözüm var mıdır?
Bir sınıf denklem sistemi her zaman yakınsar: Diyagonal olarak baskın
katsayı matrisleri.
Diyagonal olarak baskın: [A] [X] = [C] denklem sistemi için [A] eğer:
n
jj
ijaa
i1
ii
n
ijj
ijii aa1
Bütün ‘i’ ler için ve en az bir ‘i’ için ise diyagonal
olarak baskındır.
17
Gauss-Seidel Yöntemi: Tuzak
Diyagonal olarak baskın : Bir başka değişle….
Her bir satır için: Katsayı matrisinin köşegeni üzerindeki her bir eleman kendi satırındaki diğer elemanların toplamından
eşit yada büyük olmalı
En az bir satır için: Katsayı matrisinin köşegeni üzerindeki en az bir eleman kendi satırındaki diğer elemanların toplamından büyük olmalı
Ne yapılabilir? Eğer katsayı matrisi orjinalinde diyagonal olarak baskın değilse, satırlar diyagonal olarak baskın hale gelecek şekilde yeniden düzenlenir.
18
Örnek:
Önceki örnekte ele aldığımız katsayı matrisi diyagonal olarak baskın değildir ve düzenleme yapılarak da diyagonal olarak baskın hale getirilemez.
Bu özel örnek Gauss-Seidel yöntemi ile çözülemeyecek bir örnektir. Diğer yöntemler çözüm için kullanılabilir:
1. Gaus eleme 2. LU Ayrıştırma
9428.02357.02357.0
9701.02425.00
9701.002425.0
19
Gauss-Seidel Yöntemi: Örnek 2
Denklem sistemi eşitlikleri:
15312 321 x- x x
2835 321 x x x
761373 321 x x x
1
0
1
3
2
1
x
x
x
Başlangıç değerleri:
Katsayı matrisi:
1373
351
5312
A
Gauss-Siedel yöntemi
uygulandığında çözüm yakınsar mı?
20
Gauss-Seidel Yöntemi: Örnek 2
1373
351
5312
A
Katsayı matrisinin diyagonal olarak baskın olup olmadığı kontrol ediliyor:
43155 232122 aaa
10731313 323133 aaa
8531212 131211 aaa
Eşitsizliklerin hepsi doğrudur ve en az bir satır kesin büyüktür.
Böylece: Gauss-Siedel yöntemi kullanılarak bulanacak çözüm kesinlikle
yakınsayacaktır.
21
Gauss-Seidel Yöntemi: Örnek 2
76
28
1
1373
351
5312
3
2
1
x
x
x
1
0
1
3
2
1
x
x
x
Her bir eşitlik yeniden yazılır:
12
531 32
1
xxx
5
328 31
2
xxx
13
7376 21
3
xxx
Başlangıç tahminleri ile:
50000.0
12
150311
x
9000.4
5
135.0282
x
0923.3
13
9000.4750000.03763
x
22
Gauss-Seidel Yöntemi: Örnek 2
Mutlak yaklaşık bağıl hata
%00.10010050000.0
0000.150000.01
a
%00.1001009000.4
09000.42a
%662.671000923.3
0000.10923.33a
İlk iterasyondan sonra mutlak yaklaşık bağıl hataların en büyüğü %100
23
Gauss-Seidel Yöntemi: Örnek 2
8118.3
7153.3
14679.0
3
2
1
x
x
x
0923.3
9000.4
5000.0
3
2
1
x
x
x
İterasyon #1 sonunda
14679.0
12
0923.359000.4311
x
7153.3
5
0923.3314679.0282
x
8118.3
13
900.4714679.03763
x
x değerleri eşitliklerde yerine konulduğunda
İterasyon #2’den sonra
24
Gauss-Seidel Yöntemi: Örnek 2
İterasyon 2 mutlak yaklaşık bağıl hatalar
%61.24010014679.0
50000.014679.01a
%889.311007153.3
9000.47153.32a
%874.181008118.3
0923.38118.33a
Bu iterasyon #1 sonunda elde edilen mutlak yaklaşık bağıl hataların en
büyüğünden daha büyük. Bu bir problem midir?
İkinci iterasyondan sonra mutlak yaklaşık bağıl hataların en büyüğü %240.6
25
İterasyon a1 a2 a3
1
2
3
4
5
6
0.50000
0.14679
0.74275
0.94675
0.99177
0.99919
100.00
240.61
80.236
21.546
4.5391
0.74307
4.9000
3.7153
3.1644
3.0281
3.0034
3.0001
100.00
31.889
17.408
4.4996
0.82499
0.10856
3.0923
3.8118
3.9708
3.9971
4.0001
4.0001
67.662
18.876
4.0042
0.65772
0.074383
0.00101
Gauss-Seidel Yöntemi: Örnek 2
İterasyonlar tekrar edildiğinde elde edilen değerler:
%1a %
2a %3a
4
3
1
3
2
1
x
x
x
0001.4
0001.3
99919.0
3
2
1
x
x
xElde edilen sonuç gerçek çözüme yakındır .
26
Gauss-Seidel Yöntemi: Örnek 3
1
0
1
3
2
1
x
x
x
761373 321 xxx
2835 321 xxx
15312 321 xxx
Başlangıç değerleri
Yeniden yazılan eşitlikler
3
13776 321
xxx
5
328 312
xxx
5
3121 21
3
xxx
Denklem sistemi eşitlikleri:
27
Iterasyon a1 A2 a3
1
2
3
4
5
6
21.000
−196.15
−1995.0
−20149
2.0364×105
−2.0579×105
95.238
110.71
109.83
109.90
109.89
109.89
0.80000
14.421
−116.02
1204.6
−12140
1.2272×105
100.00
94.453
112.43
109.63
109.92
109.89
50.680
−462.30
4718.1
−47636
4.8144×105
−4.8653×106
98.027
110.96
109.80
109.90
109.89
109.89
Gauss-Seidel Yöntemi: Örnek 3
Altı iterasyon uygulandığında, aşağıdaki değerler elde edilir:
%1a %
2a %3a
Değerler yakınsamadığını göstermektedir.
Gauss-Seidel yönteminin kullanılamayacağı manasına mı gelir?
28
Gauss-Seidel Yöntemi
1373
351
5312
A
The Gauss-Seidel Yöntemi can still be used
Katsayı matrisi diyagonal olarak
baskın değil
5312
351
1373
A
Fakat bu denklem sistemi 2.
örnekte yakınsayan denklem
sistemi ile aynı denklem
sistemidir.
Eğer bir denklem sistemi diyagonal olarak baskın değilse, eşitlikleri yeniden
düzenlemek diyagonal olarak baskın bir biçime dönüşüp dönüşmediği
kontrol edilebilir.
29
Gauss-Seidel Yöntemi
Eşitlikleri yeniden düzenlemek her zaman diyagonal olarak
baskın bir katsayı matrisi ile sonuçlanmayabilir.
Denklem sistemini inceleyelim:
3321 xxx
9432 321 xxx
97 321 xxx
Hangi eşitlik(ler) bu denklem sisteminin diyagonal olarak baskın
katsayı matrisine sahip olmasını engelliyor ?
30
Gauss-Seidel Yöntemi
Özet
-Gauss-Seidel Yönteminin Avantajları
-Gauss-Seidel Yöntemi için Algoritma
-Gauss-Seidel Yönteminin Tuzakları
31
Gauss-Seidel Yöntemi
Sorular?
32
clc, clear all, close all;
%Gauss Seidel %Ax=c A=[8 -2 2 3;1 -9 4 2;2 0 6 1;1 2 3 8]; c=[21;-5;1;25]; n=size(c,1);
x=randi([-10 10],n,1); x_old=x;
MAX_ITER=100; eps_s=1e-4;
fprintf('ite \txold(1) \tx(1) \t eps_a(1) \t xold(2) \tx(2) \teps_a(2) \txold(3) \tx(3) \t eps_a(3) \txold(4) \tx(4) \t
eps_a(4)') fprintf('\n')
for k=1:MAX_ITER
for i=1:n toplam=0; for j=1:n if i~=j toplam=toplam+A(i,j)*x(j); end end
x(i)=(c(i)-toplam)/A(i,i); eps_a(i)=abs((x(i)-x_old(i))/x(i)); end
fprintf('%3i %10.4f %10.4f %10.4f %10.4f %10.4f %10.4f %10.4f %10.4f %10.4f %10.4f %10.4f
%10.4f',k,x_old(1),x(1),eps_a(1),x_old(2),x(2),eps_a(2),x_old(3),x(3),eps_a(3),x_old(4),x(4),eps_a(4)); fprintf('\n');
EPS_A=max(eps_a); x_old=x; if EPS_A<eps_s break; end end