Iterasi Gauss Seidel

download Iterasi Gauss Seidel

of 5

description

gauss

Transcript of Iterasi Gauss Seidel

  • METODE ITERASI GAUSS-SEIDEL DALAM SISTEMPERSAMAAN LINEAR

    Penulis: Dr. Eng. Supriyanto, M.Sc, email: [email protected] Lab. Komputer, Departemen Fisika, Universitas Indonesia

    Pengenalan metode iterasiMetode Iterasi Gauss-Seidel merupakan modifikasi dari metode Iterasi Jacobi. Modifikasitersebut terletak pada rumus berikut:

    x(k)i =

    i1j=1(aijx

    (k)j

    )nj=i+1

    (aijx

    (k1)j

    )+ bi

    aii(1)

    dimana i=1,2,3,...,n.

    Untuk lebih jelasnya, marilah kita perhatikan contoh berikut, diketahui sistem per-samaan linear Ax = b yaitu

    10x1 x2 + 2x3 = 6x1 + 11x2 x3 + 3x4 = 252x1 x2 + 10x3 x4 = 11

    3x2 x3 + 8x4 = 15

    Lalu, sistem persamaan tersebut diubah susunannya menjadi seperti ini

    x(k)1 =

    1

    10x(k1)2

    2

    10x(k1)3 +

    6

    10

    x(k)2 =

    1

    11x(k)1 +

    1

    11x(k1)3

    3

    11x(k1)4 +

    25

    11

    x(k)3 =

    2

    10x(k)1 +

    1

    10x(k)2 +

    1

    10x(k1)4

    11

    10

    x(k)4 =

    3

    8x(k)2 +

    1

    8x(k)3 +

    15

    8

    Misalnya kita tentukan nilai-nilai awal x(0) sebagai berikut x(0)1 = 0, x(0)2 = 0, x

    (0)3 = 0

    dan x(0)4 = 0. Atau dinyatakan seperti ini x(0) = (0; 0; 0; 0)t. Maka pada k = 1 kita akan

    1

  • memperoleh nilai-nilai x(1) sebagai berikut

    x(1)1 = 0, 6000

    x(1)2 = 2, 3272

    x(1)3 = 0, 9873

    x(1)4 = 0, 8789

    Lalu proses perhitungan diulangi lagi dengan k = 2. Begitu seterusnya proses ini diulang-ulang lagi untuk nilai-nilai k berikutnya sampai x(k) mendekati solusi yang sesungguhnya,yaitu

    x = (1; 2;1; 1)t

    Marilah kita amati hasil seluruh iterasi. Tabel di bawah ini menampilkan hasil perhitunganhingga iterasi yang ke-5. Kita bisa saksikan bahwa dibandingkan dengan iterasi Jacobi,problem sistem persamaan linear yang sama, bisa diselesaikan oleh metode iterasi Gauss-Seidel dalam 5 kali iterasi.

    k 0 1 2 3 4 5

    x(k)1 0,0000 0,6000 1,030 1,0065 1,0009 1,0001

    x(k)2 0,0000 2,3272 2,037 2,0036 2,0003 2,0000

    x(k)3 0,0000 -0,9873 -1,014 -1,0025 -1,0003 -1,0000

    x(k)4 0,0000 0,8789 0,9844 0,9983 0,9999 1,0000

    Dari kasus ini, bisa kita simpulkan bahwa iterasi Gauss-Seidel bekerja lebih efektif diband-ingkan iterasi Jacobi. Ya.., memang secara umum demikian, akan tetapi ternyata dite-mukan kondisi yang sebaliknya pada kasus-kasus yang lain.

    Algoritma Iterasi Jacobi

    Langkah 1: Tentukan k=1

    Langkah 2: Ketika (k N) lakukan Langkah 3-6

    Langkah 3: Untuk i=1,...,n, hitunglah

    xi =i1j=1 aijxj

    nj=i+1 aijXOj + bi

    aii

    2

  • Langkah 4: Jika xXO < , maka keluarkan OUTPUT (x1, ..., xn) laluSTOP

    Langkah 5: Tentukan k=k+1

    Langkah 6: Untuk i=1,...n, tentukan XOi = xi

    Langkah 7: OUTPUT (Iterasi maksimum telah terlampaui) lalu STOP

    Program dalam Fortran

    IMPLICIT NONE

    DIMENSION A(10,10),B(10),X(10),XO(10)REAL A,B,X,XO,EPS,NORM,S1,S2

    INTEGER N,I,J,K,ITMAX

    WRITE(*,*)WRITE(*,*) ==> ITERASI GAUSS-SEIDEL UNTUK SISTEM LINEAR

  • WRITE (*,(1X,A,I2,A)) XO(,I,) ? READ (*,*) XO(I)

    72 CONTINUE

    WRITE (*,*)C MENAMPILKAN MATRIK A

    WRITE (*,(1X,A)) MATRIK A:DO 110 I = 1,NWRITE (*,6) (A(I,J),J=1,N)

    110 CONTINUEWRITE (*,*)

    C MENAMPILKAN VEKTOR B

    WRITE (*,(1X,A)) VEKTOR B:DO 111 I = 1,N

    WRITE (*,6) B(I)111 CONTINUE

    WRITE (*,*)C LANGKAH 1

    K = 1

    C LANGKAH 2

    100 IF(K.GT.ITMAX) GOTO 200C LANGKAH 3

    DO 10 I = 1,NS1 = 0.0DO 20 J=I+1,N

    S1 = S1-A(I,J)*XO(J)20 CONTINUE

    S2 = 0.0DO 23 J=1,I-1

    S2 = S2-A(I,J)*X(J)23 CONTINUE

    X(I) = (S2+S1+B(I))/A(I,I)10 CONTINUEC SAYA PILIH NORM-2. ANDA BOLEH PAKAI NORM YANG LAIN!

    NORM = 0.0

    4

  • DO 40 I=1,NNORM = NORM + (X(I)-XO(I))*(X(I)-XO(I))

    40 CONTINUENORM = SQRT(NORM)WRITE(*,(1X,A,I3)) ITERASI KE-, KWRITE(*,(1X,A,F14.8)) NORM-2 = , NORMWRITE(*,(1X,A,I3,A,F14.8)) (X(,I,) = , X(I),I=1,N)WRITE(*,*)

    C LANGKAH 4

    IF(NORM.LE.EPS) THENWRITE(*,7) K,NORMGOTO 400

    END IF

    C LANGKAH 5

    K = K+1

    C LANGKAH 6DO 30 I=1,NXO(I) = X(I)

    30 CONTINUEGOTO 100

    C LANGKAH 7

    200 CONTINUEWRITE(*,9)

    400 STOP

    5 FORMAT(1X,I3)6 FORMAT(1X,(6(1X,F14.8)))7 FORMAT(1X,KONVERGEN PADA ITERASI YANG KE- ,I3,

    * , NORM= ,F14.8)9 FORMAT(1X,MELEBIHI BATAS MAKSIMUM ITERASI)

    END

    Demikianlah catatan singkat dari saya tentang metode Iterasi Gauss-Seidel. Sayacukupkan sementara sampai disini. Insya Allah akan saya sambung lagi dilain waktu.Kalau ada yang mau didiskusikan, silakan hubungi saya melalui email: [email protected].

    5