Burada
Transkript
Burada
3.7 Gauss Siedel ydntemi Bu yontern iterasyonla bilinmeyenleri bulma yontemidir. Esitlikler sirasiyla baslangic degerlerinden yararlamlarak ardisik olarak cozulurler. Eger denklemlerde siralama yonunden bir problem varsa oncelikle diger yontemlerde oldugu gibi bu problem giderilir. Katsayilar matrisi olusturularak veya olusturulmadan denklernler pivotlama isleminden gecirilir. Bu islemi yaptiktan sonra birinci esitlikten birinci bilinmeyen (x.), ikinci esitlikten ikinci bilinmeyen (X2) ve ucuncu esitlikten de ucuncu bilinmeyen (x.) v.s. cekilerek denklernler yeniden duzenlenir. Daha sonra bilinmeyenlerin tamarruna birer baslangic degeri ve iterasyonu durdurrnak icin bir durdurrna hata degerits) verilerek iterasyona baslaruhr. (3.99a) s» tsal Denklem Takimlantun C;oZUmYontemleri 105 (3.99b) (3.9ge) b" - a".l·xl - a".2 .X2 - .... -a"."_l·x"_l (3.99d) Bilinmeyenlere bir baslangic degeri (hepsi sifir olarak almabilir) _ . erek ilk esitlikten iterasyona baslarur. Aneak dikkat edilmesi gereken - mli nokta, her bilinmeyen cozulurken bir onceki iterasyonda bulunan en bilinmeyen degeri bir sonraki esitlikte kullamlarak yakmsamamn hizh 1 saglanabilir. Baslangic degerleri, x?, x~, x~ olsun. Bu durumda plarken birinei bilinmeyen haric diger turn bilinmeyenlerin - ;ederi almarak hesaplama yapilacaktir. ilk esitligi yerine baslangic (3.100a) (3.100b) (3. WOe) a3,3 Bu ~ekilde· ardisik olarak bilinmeyenler hesaplamr. Her iterasyon - nunda asagidaki esitlikte verilen karsilasurma yapilarak bilinmeyenlerin nilen hata seviyesinin altina inip inmedigi kontrol edilir. Eger butun ~eyenlerbu hata seviyesinin altmda bir degere ulasti ise iterasyon -' durulur. IX.,k+1 - Xk, 1<;,. (. = 1, 2 , ..., n) , (k = l'teras yon saYlsl ) co 1 (3.101) Bir iteratif yontem olan Gauss Siedel yonteminde baslangic degerlerinin arumma gore farkh bir yol da izlemek mlimktindlir. Bu yolda ilk iterasyonda 106 ______________________ Numerik Anali: baslangic degerlerinin tamarru kullarulir. Yeni bulunan duzeltilmis degerler bir sonraki iterasyonda kullamlarak da sonuca gidilebilir. Bu uygulama sekli literattirde Jacobi iterasyon yontemi olarak da bilinmektedir. Bu yontemin uygulamasmda birinci iterasyonda esitlik (3,100)' den farkh olarak asagidaki esitlik (3.102) kullamhr. Her iterasyonda da ilk iterasyondakine benzer sekilde eski degerlerin tamarru degistirilmeden kullamhr. (3.102a) b2 -a2,I'x~ -a2,3'x~ - .... -a2,n·X~ (3.l02b) a2.2 (3.102c) a3,3 Burada dikkat edilirse x~, x~, x~ butun esitliklerde kullarulmisnr. Halbuki ilk uygulamada x~ degerinin hesaplanmasmdaki esitlik (3.100b)'den farkli olarak, x: yerine x~ baslangic degeri kullamlmistir. Duzeltilmis degerlerin kullarulmasi durumunda sonuclara ulasmak diger uygulamaya gore daha kisa stirede gerceklesmesi beklenmelidir. Gauss Siedel yontemi icin taslak program algoritrnasi asagidaki sekilde diizenlenebilir. Procedure Siedel( a, b, n, eps, maxit) = 1, n d = a(i,i) DO j 1, n aii.j) = a(i,j) / d ENDDO DO i = b(i) = b(i) /d ENDDO sw=O iter=O DO WHILE (iter-cmaxit) sw=1 iter=iter+ 1 DO i=1,n old=xii} t=c(i) and (sw=O) DOj=1,n IF i$j t= t-a( i,j ) *x(j ) ENDIF ENDDO x(i)=l*t+( 1-I)old IF sw=I ) and x(i)$O) ea=ABS [(x( i)-old )/x( i) J * 100 IF eas-es) THEN sw=O ENDIF ENDDO WEND End Procedure Dogrusal Denklem Takimlanrun C;oziimYontemleri 107 Program 3.8 Gauss Siedel yonteminin bilgisayar progranu (Visual Basic) Private Sub Form_Load() Dim A(lO, JO), B( 10), X(20) As Single n = Val(InputBox("Bilinmeyen Saytstru Giriniz. ")) Show For i = 1 To n For} = 1 To n A(i, j) = Val(lnputBox("A(" + Str(i) + "," + Str(j) + ") Degerlerini Print A(i,}) Next} B(i) = Val(lnputBox("B(" + Str(i) + ")Degerini giriniz \ Print B(i) Next i eps = Val(InputBox("Hata degerinitepsrgirinir ")) maxit = Val(InputBox("Maksimum iterayonsaytst girini; ")) X(l) = 0# X(2) = 0# X(3) = 0# Rem --------bilinmeyenlerin katsaytstna bolme=:-: For i = 1 To n d=A(i,i) For} = 1To n A(i,}) = A(i,}) / d Next} B(i) = B(i) / d Next i sw = a iter = a Rem ------ ---- ----- --------------_-_ While (iter < maxit) And (sw = 0) sw = 1 iter = iter + 1 Print "iterasyon saytst ."; iter Fori 1To n old = XCi) XCi) = B(i) For} = 1 Ton 1fi <>} Then X(i) = XCi) - A(i,}) * X(j) Next} If Abs(X(i) - old) > eps Then sw = a Print XCi); Next i Wend End Sub "» = giriniz."ll - 108 NumerikAnaliz Ornek 3.10 Asagidaki denklem takirrum iteratif bir yontem olan Gauss Siedel yontemi ile cozunuz. Cozum esnasmda baslangic degerlerini x~ = 0 ve x~ = 0 alarak hep yeni degerlerle degistirerek iterasyona devam ediniz. Bulunan degisken degerleri arasmdaki mutlak hata degeri en az £=0.001 olacak sekilde iterasyonu siirdtiriiniiz. 5XI + 2X2 + X3 = 12 x, + 2X2 + X3 = 8 2XI + X2 + 4X3 Cozum x~ = 16 : =0 £=0.005 iterasyon = 1 X: = 12-2.x~ -(l.x~) = 12-2(0)-1(0) 5 = 2.4 5 8-l.x: -l.x~ = 8-1(2.4) -1(0) = 2.8 2 2 x~ = 16-2.x: -(l.x~) = 16-2(2.4)-1(2.8) = 2.1 4 4 iterasyon = 1 x ~ = 12- 2(2.8)-1(2.1) = 0.86 5 X; = 8 -1(0.86) -1(2.1) = 2.52 2 x~ = 16- 2(0.86)-1(2.52) = 2.94 4 Dogrusal Denklem Takimlannin 90ziim Yontemleri 109 iterasyon sayisim artirarak benzer sekilde bilinmeyenleri ardisik olarak esaplayacak olursak asagidaki tabloda gosterilen degerler bulunabilir. iterasyon Xl X2 X3 0 0 0 0 1 2.4 2.8 2.1 2 0.86 2.52 2.94 3 0.804 2.128 3.066 4 0.9356 1.9992 3.0324 5 0.99384 1.98688 3.00636 6 1.003976 1.994832 2.999304 7 1.002206 1.999245 2.999086 8 1.000485 2.000215 2.999704 9 0.9999735 2.000161 2.999973 Ornek 3.11 Asagidaki denklem takmuru iteratif bir yontem olan Gauss Siedel yontemi ile Excel prograrruru kullanarak cozunuz. Cozum esnasinda baslangic degerlerini x~ = 0 ve x~ = 0 alarak hep yeni degerlerle degistirerek iterasyona devam ediniz. Bulunan degisken degerleri arasmdaki mutlak hata degeri en az £=0.001 olacak sekilde iterasyonu sUrdUrUnUz. -Xl + 2X2 + X3 = XI + 2X2 + X3 = 8 _~I + X2 + 4X3 = 12 16
Benzer belgeler
Evren :"Bir kifi
~ur, ya da c;ok azder. Bu ba·
lumdan hiikiimet odeme ka·
ran ahrken bu durumu goz
'~nilne alacakllr."