1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi...

33
Gauss-Seidel Yöntemi 1

Transcript of 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi...

Page 1: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Gauss-Seidel Yöntemi1

Page 2: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 3: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 4: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 5: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 6: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 7: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 8: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 9: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 10: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Ö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

Page 11: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Ö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

Page 12: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Ö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

Page 13: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Ö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

Page 14: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Ö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

Page 15: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Ö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

Page 16: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 17: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 18: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 19: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Ö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

Page 20: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 21: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 22: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 23: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 24: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 25: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 26: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

İ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

Page 27: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 28: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 29: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 30: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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

Page 31: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Gauss-Seidel Yöntemi

Özet

-Gauss-Seidel Yönteminin Avantajları

-Gauss-Seidel Yöntemi için Algoritma

-Gauss-Seidel Yönteminin Tuzakları

31

Page 32: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

Gauss-Seidel Yöntemi

Sorular?

32

Page 33: 1 Gauss-Seidel Yöntemi - İstanbul Üniversitesi Gauss-Seidel Yöntemi Neden? Gauss-Seidel Yöntemi kullanıcıya yuvarlatma hatasını kontrol etmesine izin verir. Gaus Eleme ve

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