metode numerik

65
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER METODE NUMERIK PENYELESAIAN PERSAMAAN NON LINIER PENYELESAIAN SISTEM PERSAMAAN LINIER Niyoko Yuliawan 7409030012 1 D3 IT A

Upload: niyoko-yuliawan

Post on 19-Jun-2015

1.404 views

Category:

Documents


17 download

TRANSCRIPT

Page 1: Metode Numerik

POLITEKNIK ELEKTRONIKA NEGERI SURABAYAINSTITUT TEKNOLOGI SEPULUH NOPEMBER

METODE NUMERIKPENYELESAIAN PERSAMAAN NON LINIER

PENYELESAIAN SISTEM PERSAMAAN LINIER

Niyoko Yuliawan7409030012

1 D3 IT A

Page 2: Metode Numerik

1

A. Metode Penyelesaian Persamaan Non LinierMenyelesaikan persamaan atau mencari akar persamaan f(x)=0 berarti mencari nilai-

nilai x sehingga menyebabkan pernyataan f(x)=0 menjadi benar. Dengan kata lain, akar persamaan f(x)=0 adalah absis perpotongan grafik fungsi f(x) dengan sumbu x. Untuk menyelesaikan persamaan ini, ada dua metode, yaitu metode tertutup dan metode terbuka. Dengan metode tertutup, kita memberikan dua nilai misal a dan b untuk inisialisasi proses. Dua nilai ini harus mengapit akar yang sebenarnya. Untuk melihat apakah di antara range (a, b) ada akar atau tidak, kita bisa memanfaatkan teorema berikut: Jika nilai fungsi di a dan b

berlawanan, maka ada akar di antara a dan b, namun hal ini tidak berlaku sebaliknya. Sedangkan dengan metode terbuka, kita memberikan satu tebakan awal untuk inisialisasi proses, tebakan awal ini diusahakan sedekat mungkin dengan akar sebenarnya.

1. Metode TabelMetode table merupakan salah satu metode tertutup untuk menyelesaikan persamaan

non linier. Metode ini adalah metode dengan algoritma yang paling sederhana, namun lambat dan tidak bisa memberikan hasil yang akurat. Biasanya metode ini dipakai hanya untuk memperkirakan range awal sebelum menggunakan metode yang lebih baik. Secara sederhana, untuk menyelesaikan persamaan non linier dapat dilakukan dengan metode tabel atau pembagian area. Di mana untuk x=[a, b] dibagi sebanyak n bagian dan pada masing-masing bagian dihitung f(x) sehingga diperoleh tabel :

x f(x)x0=a f(x0)x1 f(x1)x2 f(x2)… …xn=b f(xn)

Dari tabel ini bila ditemukan f(xk)=0 atau mendekati nol, maka akar persamaan adalah xk. Bila tidak ada, maka dicari nilai xk dan xk+1 yang berlawanan tanda, maka akar persamaan berada di antara xk dan xk+1. Jika selisih xk dan xk+1 kurang dari toleransi, maka kita tetapkan akar persamaan adalah xk atau xk+1 tergantung nilai mana yang memberikan f(x) lebih dekat ke nol. Tetapi, jika selisih xk dan xk+1 terlalu jauh maka akarnya perlu dicari lagi dengan range xk dan xk+1.

Algoritma Metode Tabel:

1. Definisikan fungsi f(x) yang akan dicari akarnya.2. Tentukan a dan b sebaga batas atas dan batas bawah.3. Tentukan jumlah pembagi n.4. Hitung step pembagi

h=b−an

5. xi=a.

6. Untuk i=0 hingga na) yi=f(xi)

Page 3: Metode Numerik

2

b) Bila yi-1.yi ≤ 0 maka keluar looping dan nyatakan bahwa akar berada di antaraxk-1 dan xk.

c) xi+1=xi+h.7. Bila tidak ada yi-1.yi yang kurang dari atau sama dengan 0, maka nyatakan bahwa

akar tidak berada di range ini.Flowchart Metode Tabel:

Page 4: Metode Numerik

3

Listing Code Metode Tabel:

real f(real x){

return log(x)+tanh(x);}

real absolut(real x){

if(x<0)

#include <stdio.h>#include <math.h>

typedef double real;

real f(real);real absolut(real);

main(){

int iterasi = 0;real a, b, i, tempSol, step = 0.1, maxerror;

printf("METODE TABEL\n");printf("Persamaan ln(x)+tanh(x)=0\n\n");

printf("Masukkan batas bawah: ");scanf("%lf", &a);printf("Masukkan batas atas : ");scanf("%lf", &b);printf("Masukkan toleransi error: ");scanf("%lf", &maxerror);

if(f(a)*f(b)<0){

for(i=a; i<b; i+=step){

iterasi++;if(f(i)*f(i+step)<0){

tempSol = i;a = i;b = i+step;step /= 10;

if(absolut(f(tempSol))<=maxerror)break;

i-=step;}if(iterasi==1){

printf("\nIterasi_ke Akar Error\n");printf("%3d %-20.16lf %g\n", iterasi,

tempSol, absolut(f(tempSol))); }else

printf("%3d %-20.16lf %g\n", iterasi, tempSol, absolut(f(tempSol)));

}printf("\nAkar persamaan adalah %.16lf\n\n", tempSol);

}else

printf("\nAkar tidak berada di range ini\n\n");}

Page 5: Metode Numerik

4

User Guide Program:

Pada tampilan ini, user harus memasukkan batas bawah, batas atas, dan toleransi error

Tampilan setelah user mengisikan semua data, setelah itu, program akan melakukan komputasi berdasarkan nilai yang diberikan user dan program akan menampilkan nilai-nilai yang diperoleh pada setiap iterasinya.

real f(real x){

return log(x)+tanh(x);}

real absolut(real x){

if(x<0)

Page 6: Metode Numerik

5

Tampilan setelah program selesai melakukan komputasi.

Uji Coba Program:

Untuk membanding keandalan masing-masing program, program akan diuji coba masing-masing dengan dua persamaan yang sama yaitu ln(x)+tanh(x)=0 dengan toleransi error 10-17 dan x-4/x-2=0 dengan toleransi error 10-15.

Uji coba dengan ln(x)+tanh(x)=0:

Dengan metode tabel didapat akar persamaan 0.5890633174783627 dengan 89 iterasi

Uji coba dengan x-4/x-2=0:

Page 7: Metode Numerik

6

step 1

step 2

step 3

Dengan metode tabel didapat akar persamaan 3.2360679774997894 dengan 136 iterasi.

2. Metode BiseksiMetode biseksi disebut juga metode Binary Chooping, Interval Halving atau metode

Bozaldo. Ide awal metode ini adalah metode tabel, di mana area dibagi menjadi dua bagian, lalu dari dua bagian ini, range yang tidak mengandung akar dibuang. Hal ini dilakukan berulang-ulang hingga didapat suatu daerah yang sedemikian sempit dengan akurasi tertentu.

Untuk menggunakan metode biseksi, terlebih dahulu ditetapkan batas atas dan batas bawah, kemudian dicari nilai tengahnya. Dari nilai tengah ini (misalkan kita assign ke variabel x), lalu dicari bagian mana yang terdapat akar, setelah diketahui bagian mana yang ada akar, lalu range diupdate dan proses diulangi hingga |b - a| < e atau iterasi > iterasi maksimum.

Algoritma Metode Biseksi:

1. Definisikan fungsi f(x) yang akan dicari akarnya.2. Tentukan nilai a dan b sebagai batas atas dan batas bawah.3. Tentukan toleransi e dan iterasi maksimum n.4. Hitung f(a) dan f(b).

Gambar 1 : Ilustrasi penggunaan metode biseksi untuk menyelesaikan fungsi ln(x)+tanh(x)=0

Page 8: Metode Numerik

7

5. Jika f(a).f(b)>0 maka proses dihentikan dan nyatakan bahwa tidak ada akar persamaan di range ini, jika tidak, maka lanjutkan ke langkah 6.

6. Hitung:

x=a+b2

7. Hitung f(x).8. Bila f(x).f(a) < 0 maka b=x dan f(b)=f(x), bila tidak, a=x dan f(a)=f(x).9. Jika |b-a| < e atau iterasi > n, maka proses dihentikan dan akar persamaan adalah

nilai x yang terakhir, jika tidak, ulangi langkah 6.

Flowchart Metode Biseksi:

Page 9: Metode Numerik

8

Listing Code Metode Biseksi:

#include <stdio.h>#include <math.h>typedef long double real;

real f(real);real absolut(real);

main(){

int iterasi = 0;real a, b, oldSol=0, tempSol, step = 0.1, error,

mid, maxerr, maxiter;

printf("METODE BISEKSI\n");printf("Mencari akar persamaan ln(x) + tanh(x) = 0\n\n");printf("Masukkan batas bawah : ");scanf("%lf", &a);printf("Masukkan batas atas : ");scanf("%lf", &b);printf("Masukkan error maksimum: ");scanf("%lf", &maxerr);printf("Masukkan iterasi maksimum: ");scanf("%lf", &maxiter);

if(f(a)*f(b)<0){

do{

mid = (a+b)/2;tempSol=mid;iterasi++;error=absolut(tempSol-oldSol);if(iterasi==1){

printf("\nIterasi_ke Akar Error\n");

printf(" %3d %-20.16lf %g\n", iterasi, tempSol, absolut((a-b)/2));

}else

printf(" %3d %-20.16lf %g\n", iterasi, tempSol, error);

if(f(mid)==0)break;

if(f(mid)*f(a)<0)b=mid;

elsea=mid;

oldSol=tempSol;}while((iterasi <= 1) || ((error > maxerr) && (iterasi<maxiter)));

printf("\n\n");printf("Akarnya adalah %.16lf\n\n", tempSol);

}else

printf("Akar tidak ada dalam range ini\n\n");}

Page 10: Metode Numerik

9

User Guide Program:

Hampir sama seperti pada metode tabel, di sini user harus memasukkan batas atas, batas bawah dan toleransi error, hanya saja di sini ditambah dengan iterasi maksimum yang akan membatasi jumlah iterasi.

Tampilan setelah user memasukkan data dengan lengkap. Setelah itu, program akan melakukan komputasi.

real f(real x){

return log(x) + tanh(x);}

real absolut(real x){

if(x<0)return -x;

return x;}

Page 11: Metode Numerik

10

Tampilan setelah program selesai melakukan komputasi

Uji Coba Program:

Uji coba dengan ln(x)+tanh(x)=0:

Dengan metode biseksi, didapat akar persamaan 0.5890633174783628 dengan 55 iterasi

Page 12: Metode Numerik

11

Uji coba dengan x-4/x-2=0:

Dengan metode biseksi, didapat akar persamaan 3.2360679774997898 dengan 50 iterasi

3. Metode Regula FalsiDisebut juga metode false position atau interpolasi linier. Metode regula falsi adalah

metode pencarian akar persamaan non linier dengan memanfaatkan kemiringan garis yang melalui dua titik. Diharapkan dengan metode seperti ini, error akan berkurang lebih cepat daripada dengan metode biseksi. Seperti halnya metode biseksi, metode regula falsi ini bekerja secara iterasi dengan melakukan update range. Titik pendekatan yang digunakan pada metode regula falsi adalah titik perpotongan garis yang melalui dua titik pendekatan a dan b dengan sumbu x. Persamaan garis yang melalui dua titik pendekatan a dan b adalah:

y−f (a )= f (a )−f (b )a−b

(x−a)

dan absis perpotongannya dengan sumbu x didapat dengan mengganti y dengan 0.

−f (a )=f (a )−f (b )a−b

( x−a )

x−a=f (a )(b−a)f (a )−f (b )

x−a=b . f (a)−a . f (a )f (a )−f (b )

x=b . f (a)−a . f (a )f (a )−f (b )

+a

x=b . f (a)−a . f (a )+a . f (a)−a . f (b )f (a )−f (b )

x=b . f (a)−a . f (b )f (a )−f (b )

Page 13: Metode Numerik

12

x1

x2

Jebakan pada metode regula falsi:

Pada kasus tertentu, ternyata metode biseksi lebih baik daripada metode regula falsi. Contohnya pada persamaan f(x) = x10 – 1. Kita akan mencoba menyelesaikannya dengan metode biseksi dan metode regula falsi dengan batas bawah 0 dan batas atas 1,3.

i a b x f(a) f(b) f(x)1 0 1.3 0.65 -1 12.78585 -0.986542 0.65 1.3 0.975 -0.98654 12.78585 -0.223673 0.975 1.3 1.1375 -0.22367 12.78585 2.626724 0.975 1.1375 1.05625 -0.22367 2.62672 0.7284915 0.975 1.05625 1.015625 -0.22367 0.728491 0.167707

i a b x f(a) f(b) f(x)1 0 1.3 0.0943 -1 12.78585 -12 0.0943 1.3 0.181759 -1 12.78585 -13 0.181759 1.3 0.262874 -1 12.78585 -14 0.262874 1.3 0.338105 -1 12.78585 -0.999985 0.338105 1.3 0.407878 -0.99998 12.78585 -0.99987

Tampak pada iterasi ke-5 metode biseksi memberikan hasil yang lebih baik (dengan error yang lebih kecil).

Gambar 2 : Ilustrasi penggunaan metode regula falsi untuk menyelesaikan fungsi ln(x)+tanh(x)=0

Penggunaan metode biseksi untuk menyelesaikan persamaan x10 – 1 = 0

Penggunaan metode regula falsi untuk menyelesaikan persamaan x10 – 1 = 0

Page 14: Metode Numerik

13

Algoritma Metode Regula Falsi:

1. Definisikan fungsi f(x) yang akan dicari akarnya.2. Tentukan nilai a dan b sebagai batas atas dan batas bawah.3. Tentukan toleransi e dan iterasi maksimum n.4. Hitung f(a) dan f(b).

5. Jika f(a).f(b)>0 maka proses dihentikan dan nyatakan bahwa tidak ada akar persamaan di range ini, jika tidak, maka lanjutkan ke langkah 6.

6. Hitung:

x=a . f (b )−b . f (a)

f (b )−f (a)

7. Hitung f(x).8. Bila f(x).f(a) < 0 maka b=x dan f(b)=f(x), bila tidak, a=x dan f(a)=f(x).9. Jika |f(x)| < e atau iterasi > n, maka proses dihentikan dan akar persamaan adalah

nilai x yang terakhir, jika tidak, ulangi langkah 6.

Flowchart Metode Regula Falsi:

Page 15: Metode Numerik

14

Listing Code Metode Regula Falsi:

#include <stdio.h>#include <math.h>

typedef long double real;

real f(real);real absolut(real);

main(){

int iterasi = 0;real a, b, oldSol=0, tempSol, step = 0.1, error, mid, maxerr, maxiter;

printf("METODE REGULA FALSI\n");printf("Mencari akar persamaan ln(x) + tanh(x) = 0\n\n");

printf("Masukkan batas bawah : ");scanf("%lf", &a);printf("Masukkan batas atas : ");scanf("%lf", &b);printf("Masukkan error maksimum: ");scanf("%lf", &maxerr);printf("Masukkan iterasi maksimum: ");scanf("%lf", &maxiter);

if(f(a)*f(b)<0){

do{

mid = (a*f(b)-b*f(a))/(f(b)-f(a));tempSol=mid;iterasi++;error=absolut(tempSol-oldSol);if(iterasi==1){

printf("\nIterasi_ke Akar Error\n");printf(" %3d %-20.16lf %g\n", iterasi, tempSol, absolut((a-b)/2));

Page 16: Metode Numerik

15

User Guide Program:

Pada tampilan ini, user harus memasukkan batas bawah, batas atas, toleransi error dan iterasi maksimum yang diijinkan

#include <stdio.h>#include <math.h>

typedef long double real;

real f(real);real absolut(real);

main(){

int iterasi = 0;real a, b, oldSol=0, tempSol, step = 0.1, error, mid, maxerr, maxiter;

printf("METODE REGULA FALSI\n");printf("Mencari akar persamaan ln(x) + tanh(x) = 0\n\n");

printf("Masukkan batas bawah : ");scanf("%lf", &a);printf("Masukkan batas atas : ");scanf("%lf", &b);printf("Masukkan error maksimum: ");scanf("%lf", &maxerr);printf("Masukkan iterasi maksimum: ");scanf("%lf", &maxiter);

if(f(a)*f(b)<0){

do{

mid = (a*f(b)-b*f(a))/(f(b)-f(a));tempSol=mid;iterasi++;error=absolut(tempSol-oldSol);if(iterasi==1){

printf("\nIterasi_ke Akar Error\n");printf(" %3d %-20.16lf %g\n", iterasi, tempSol, absolut((a-b)/2));

real f(real x){

return log(x)+tanh(x);}

real absolut(real x){

if(x<0)return -x;

return x;}

Page 17: Metode Numerik

16

Tampilan setelah user memasukkan data dengan lengkap

Setelah itu, program akan melakukan komputasi.

Uji Coba Program:

Uji coba dengan ln(x)+tanh(x)=0:

Page 18: Metode Numerik

17

Didapatkan akar 0.5890633174783627 dengan 48 iterasi

Uji Coba dengan x-4/x-2=0:

Didapat akar persamaan 3.2360679774997902 dengan 68 iterasi

4. Metode Iterasi SederhanaMetode iterasi merupakan salah satu metode terbuka yang memisahkan x dengan

sebagian x yang lain, sehingga diperoleh x=g(x) lalu kemudian kita mencari perpotongan kedua grafik ini dengan iterasi. Transformasi ini bisa dilakukan dengan sedikit manipulasi aljabar atau dengan menambahkan x pada kedua ruas. Sebagai contoh fungsi ln(x)+tanh(x)=0 diubah menjadi x=e(-tanh(x)), x=atanh(-ln(x)) atau x=ln(x)+tanh(x)+x. Sebagai inisialisasi, kita harus menentukan suatu nilai sebagai tebakan awal xi, dari tebakan awal ini, dihitung suatu taksiran baru xi+1 = g(xi).

Page 19: Metode Numerik

18

y=x

y=4/x+2

akar

Iterasi Divergen:

Tidak semua fungsi bisa dijadikan fungsi g karena pengambilan fungsi yang salah akan menjadikan iterasi menjadi divergen, contohnya terjdi pada fungsi g(x) = 4/x. Grafik fungsi ini simetris terhadap garis y = x. Terlihat pada gambar bahwa hingga iterasi ke berapapun, nilai x

akan berkutat pada angka 1 dan 4. Sehingga kita harus memilih fungsi yang tepat untuk fungsi g(x) ini. Perhatikan bahwa konvergensi terjadi bila |g’(x)| < 1.

Algoritma Metode Iterasi Sederhana:

1. Definisikan fungsi f(x) dan g(x).

2. Tentukan toleransi error e dan iterasi maksimum n.3. Tentukan tebakan awal x.4. Hitung f(x)

Gambar 5 : Iterasi yang divergen pada fungsi g(x) = 4/x

Gambar 4 : Ilustrasi penggunaan metode iterasi sederhana untuk menyelesaikan fungsi x – 4/x – 2 = 0 dengan mengambil g(x)=4/x + 2

Page 20: Metode Numerik

19

5. Jika |f(x)| < e atau iterasi > n, proses dihentikan dan didapat akar persamaan adalah nilai x yang terakhir, jika tidak, hitung x = g(x) dan ulangi langkah 4.

Flowchart Metode Iterasi Sederhana:

Page 21: Metode Numerik

20

Listing Code:

#include <stdio.h>#include <math.h>

typedef long double real;

real f(real);real g(real);real absolut(real);

main(){

int iterasi = 0, convDir, div=0;real x, error, maxerr, maxiter, oddBef, evenBef;

printf("METODE ITERASi SEDERHANA\n");printf("Mencari akar persamaan ln(x) + tanh(x) = 0\n\n");

printf("Masukkan tebakan awal: ");scanf("%lf", &x);printf("Masukkan error maksimum: ");scanf("%lf", &maxerr);printf("Masukkan iterasi maksimum: ");scanf("%lf", &maxiter);

do{

iterasi++;if(iterasi==1)

printf("\nIterasi_ke x f(x)\n");else

x=g(x);

error=absolut(f(x));printf(" %3d %-20.16lf %g\n", iterasi, x, error);

if(iterasi==1)oddBef=x;

else if(iterasi==2){

convDir = x>oddBef?1:0;evenBef=x;

}else if(iterasi % 2 == 1){

if((x<=oddBef)==convDir){

Page 22: Metode Numerik

21

User Guide:

Pada tampilan ini, user harus memasukkan tebakan awal, toleransi error dan iterasi maksimum

#include <stdio.h>#include <math.h>

typedef long double real;

real f(real);real g(real);real absolut(real);

main(){

int iterasi = 0, convDir, div=0;real x, error, maxerr, maxiter, oddBef, evenBef;

printf("METODE ITERASi SEDERHANA\n");printf("Mencari akar persamaan ln(x) + tanh(x) = 0\n\n");

printf("Masukkan tebakan awal: ");scanf("%lf", &x);printf("Masukkan error maksimum: ");scanf("%lf", &maxerr);printf("Masukkan iterasi maksimum: ");scanf("%lf", &maxiter);

do{

iterasi++;if(iterasi==1)

printf("\nIterasi_ke x f(x)\n");else

x=g(x);

error=absolut(f(x));printf(" %3d %-20.16lf %g\n", iterasi, x, error);

if(iterasi==1)oddBef=x;

else if(iterasi==2){

convDir = x>oddBef?1:0;evenBef=x;

}else if(iterasi % 2 == 1){

if((x<=oddBef)==convDir){

if(div)printf("Iterasi divergen, proses dihentikan\n");

elseprintf("\nAkar persamaannya adalah : %.16lf\n", x);

}

real f(real x){

return log(x) + tanh(x);}

real g(real x){

return exp(-tanh(x));}

real absolut(real x){

if(x<0)return -x;

return x;}

Page 23: Metode Numerik

22

Tampilan setelah user memasukkan data dengan lengkap

Tampilan setelah computer melakukan komputasi

Selain itu, program ini juga bisa mendeteksi jika user memilih fungsi g yang salah sehingga iterasi menjadi divergen.

Page 24: Metode Numerik

23

Tampilan saat iterasi divergen.

Uji Coba Program:

Uji coba program dengan ln(x)+tanh(x)=0:

Tampak laporan bahwa iterasi divergen. Hal ini terjadi karena kita mengambil toleransi error yang terlalu kecil. Kita coba mengubah toleransi error menjadi 10-15.

Page 25: Metode Numerik

24

xixi+1

Diperoleh akar persamaan 0.589063317478369 dengan 42 iterasi

Uji Coba dengan x-4/x-2=0:

Diperoleh akar 3.2360679774997898 dengan 40 iterasi

5. Metode Newton RaphsonMetode Newton Raphson adalah metode pendekatan yang menggunakan satu titik awal

dan mendapatkan titik pendekatan berikutnya dengan memperhatikan slope atau kemiringan garis singgung di titik itu. Pada gambar di bawah ini dijelaskan tentang penggunaan metode Newton Raphson. Pada gambar tersebut, garis singgung f(x) pada xi diekstrapolasikan ke bawah terhadap sumbu x untuk mendapatkan taksiran akar xi+1.

Page 26: Metode Numerik

25

x0

?

Persamaan garis singgung f(x) di xi adalah:

y−f ( x i )=f ' (x i)(x− xi)

perpotongannya dengan sumbu x diperoleh dengan mengganti y dengan 0:

−f ( xi )=f '( x i )(x−xi )

x−x i=−f ( x i )f '( x i )

x=x i−f ( xi )f '( xi )

Algoritma Metode Newton Raphson:

1. Definisikan fungsi f(x) dan f’(x).

2. Tentukan toleransi error e dan iterasi maksimum n.3. Tentukan nilai pendekatan awal x.4. Hitung f(x) dan f’(x).

5. Jika |f(x)| < e atau iterasi > n, maka proses selesai dan akar persamaan adalah nilai x

yang terakhir, jika tidak, lanjutkan ke langkah 6.

6. Hitung x=x−f (x )f ' ( x )

dan ulangi langkah 4.

Kesulitan-kesulitan Dalam Penggunaan Metode Newton Raphson:

Karena metode Newton Raphson melibatkan fraksional yang berpenyebut f’(x), maka dalam metode ini, nilai f’(x) = 0 tidak diperbolehkan karena akan menyebabkan nilai taksiran berikutnya menjadi tak terhingga. Contoh-contoh di bawah ini memberikan gambaran di mana f’(x) = 0 atau paling tidak mendekati nol.

Page 27: Metode Numerik

26

x0

?

?

x0

x0

?

Gambar 7 : Empat kasus di mana metode Newton Raphson memperlihatkan konvergensi yang kurang baik

Page 28: Metode Numerik

27

Dari keempat gambar di atas, gambar pertama memperlihatkan suatu fungsi yang turunannya di hampir semua bilangan real adalah 0, hanya sebagian kecil saja yang turunannya tidak sama dengan 0. Pada kasus seperti ini, harus diambil nilai perkiraan awal yang sedekat mungkin dengan akar yang sebenarnya, karena nilai yang terlalu jauh akan mengakibatkan turunan pertama nilai taksiran berikutnya sama dengan 0 dan mengakibatkan iterasi menjadi divergen.

Gambar kedua memperlihatkan iterasi berosilasi di dekat nilai ekstrem lokal, hal ini terjadi karena nilai taksiran berada di antara dua titik ekstrem lokal. Osilasi yang demikian bisa tetap bertahan atau seperti gambar di atas, menyentuh puncak dengan kemiringan mendekati nol lalu nilai taksiran berikutnya menjadi tak terhingga.

Gambar ketiga memperlihatkan meskipun tebakan awal sudah mendekati akar, namun nilai taksiran dapat melompat ke suatu lokasi yang jauh dari akar yang kita inginkan, hal ini disebabkan iterasi menyentuh daerah dengan kemiringan mendekati nol.

Gambar keempat menunjukkan percobaan mencari akar dari suatu fungsi yang sebenarnya tidak mempunyai akar. Hal ini akan menyebabkan osilasi yang tidak beraturan dan pada akhirnya berujung pada titik puncak yang memiliki kemiringan nol.

Kesulitan lain yang dihadapi adalah fungsi yang akan mengakibatkan konvergensi yang sangat lambat. Misalnya terjadi pada fungsi f(x) = x10 – 1 yang dengan metode eksak kita dapatkan akarnya adalah 1. Kita akan mencoba menemukan akar fungsi ini dengan tebakan

awal 0,5. Kita tahu bahwa x i+1=x i−x i10−110 x i

9 .

Dari tabel terlihat bahwa sebenarnya iterasi ini konvergen (kita lihat error yang makin lama makin mengecil), namun kekonvergenannya lambat sekali, sehingga kita butuh berjuta-juta iterasi untuk mendapatkan akarnya.

i x f(x)0 0.5 -0.9990234381 51.65 1.351149E+172 46.485 4.711165E+16

Page 29: Metode Numerik

28

Flowchart Metode Newton Raphson:

Page 30: Metode Numerik

29

Listing Code:

#include <stdio.h>#include <math.h>

typedef long double real;

real f(real x);real f1(real x);real absolut(real x);main(){

int iterasi = 0;real x, error, maxerr, maxiter;

printf("METODE NEWTON RAPHSON\n");printf("Mencari akar persamaan ln(x) + tanh(x) = 0\n\n");

printf("Masukkan tebakan awal: ");scanf("%lf", &x);printf("Masukkan error maksimum: ");scanf("%lf", &maxerr);printf("Masukkan iterasi maksimum: ");scanf("%lf", &maxiter);

do{

iterasi++;if(iterasi==1)

printf("\nIterasi_ke x f(x)\n");else

x=x-f(x)/f1(x);

error=absolut(f(x));printf(" %3d %-20.16lf %g\n", iterasi, x, error);

}while(error>maxerr && iterasi<maxiter);

}

real f(real x){

return log(x) + tanh(x);}

real f1(real x){

return (1/x) + (1/pow(cosh(x), 2));}

real absolut(real x){

if(x<0)return -x;

return x;}

Page 31: Metode Numerik

30

User Guide Program:

Di sini user harus memasukkan tebakan awal, toleransi error dan iterasi maksimum

Tampilan setelah user memasukkan data dengan lengkap

Tampilan setelah program melakukan komputasi

Page 32: Metode Numerik

31

Uji coba program:

Uji coba program dengan ln(x)+tanh(x)=0:

Didapat akar persamaan 0.5890633174783627 dengan 7 iterasi

Didapat akar persamaan 3.2360679774997898 dengan 7 iterasi

Page 33: Metode Numerik

32

x0 x1x2

6. Metode SecantMasalah yang biasanya muncul pada metode Newton Raphson adalah terkadang sulit

medapatkan turunan pertama dari fungsi f(x) sebagai syarat untuk mendapatkan kemiringan garis singgung. Untuk mengatasi hal demikian, kita memasukkan metode untuk mencari aproksimasi kemiringan garis singgung secara diskrit.

f ' (x)≈f ( x i )− f (x i−1)

x i−x i−1

didapat:

x i+1=x i−f (x i)x i−x i−1

f ( x i )−f ( x i−1 )

Persamaan di atas memang memerlukan dua taksiran awal, namun, karena dua taksiran awal ini tidak disyaratkan berbeda tanda, maka Metode Secant bukan merupakan metode tertutup. Metode Secant mirip dengan metode Newton Raphson dalam arti bahwa taksiran akar diaproksimasi oleh suatu ekstrapolasi garis singgung terhadap sumbu x. Tetapi metode secant menggunakan differensiasi numeris alih-alih menggunakan turunan untuk memperkirakan kemiringan garis singgung. Berikut ini adalah penjelasan grafis mengenai metode secant.

Algoritma Metode Secant:

1. Definisikan fungsi f(x).

2. Tentukan toleransi error e dan iterasi maksimum n.3. Tentukan nilai pendekatan awal x0 dan x1.

Page 34: Metode Numerik

33

4. i = 1.5. Hitung f(xi).

6. Jika |f(xi)| < e atau i > n, maka proses selesai dan akar persamaan adalah xi, jika tidak, lanjutkan ke langkah 7.

7. Hitung x i+1=x i−f (x i)x i−x i−1

f ( x i )−f ( x i−1 )

8. i = i + 1 dan ulangi langkah 5.

Flowchart Metode Secant:

Page 35: Metode Numerik

34

Listing Code:

#include <stdio.h>#include <math.h>

typedef double real;

real f(real);real absolut(real);

main(){

int iterasi = 0;

real a, b, oldSol=0, x, error, mid, merror;int i=0, miter;printf("PENYELESAIAN PERSAMAAN NON LINIER DENGAN METODE SECANT\

n");printf("Persamaan ln(x)+tanh(x)=0\n\n");

printf("Masukkan tebakan pertama: ");scanf("%lf", &a);printf("Masukkan tebakan kedua : ");scanf("%lf", &b);printf("Masukkan iterasi maksimal : ");scanf("%d", &miter);printf("Masukkan toleransi error : ");scanf("%lf", &merror);

do{

i++;x = x-f(b)*((b-a)/(f(b)-f(a)));error = absolut(f(x));a=b;b=x;if(iterasi==1)

{printf("\nIterasi_ke Akar Error\n");printf(" %3d %-20.16lf %g\n", iterasi, tempSol, absolut((a-b)/2));

}else

printf(" %3d %-20.16lf %g\n", iterasi, tempSol, error);

}while(error>merror && i<miter);

printf("Solution is %.16lf\n", x);}

real f(real x){

return log(x)+tanh(x);}

real absolut(real x){

if(x<0)return -x;

return x;}

Page 36: Metode Numerik

35

User Guide Program:

Pada tampilan ini, user harus memasukkan 2 tebakan, diusahakan sedekat mungkin. User juga harus memasukkan toleransi error dan iterasi maksimum

Tampilan setelah user memasukkan data dengan lengkap

Tampilan setelah program melakukan komputasi

Page 37: Metode Numerik

36

Uji coba program:

Uji coba program dengan ln(x)-tanh(x)=0:

Diperoleh akar persamaan 0.5890633174783627 dengan 8 iterasi

Uji coba program dengan x-4/x-2=0:

Diperoleh akar persamaan 0.5890633174783627 dengan 11 iterasi

Perbedaan Metode Secant dengan Metode Regula Falsi:

Page 38: Metode Numerik

37

x0

x1

x2

x3

Baik metode Secant ataupun metode Regula Falsi sama-sama menggunakan dua taksiran awal untuk berproyeksi terhadap sumbu x untuk mendapatkan taksiran baru akar. Perbedaan keduanya terletak pada harga awal yang digantikan oleh taksiran baru. Pada metode Regula Falsi, taksiran baru akan menggantikan harga awal mana saja yang mempunyai tanda yang sama dengan taksiran baru ini, sehingga dua taksiran senantiasa berbeda tanda dan mengurung akar fungsi yang sebenarnya. Sedangkan pada metode Secant, taksiran baru mengganti harga awal dalam deretan yang ketat. Xi+1 mengganti xi, pada saat itu pula xi menggantikan xi-1, sehingga dua taksiran ini bisa mempunyai tanda yang sama (terletak pada ruas akar yang sama). Pada kasus tertentu, hal ini bisa menyebabkan divergensi.

Pada gambar di bawah ini digambarkan penggunaan metode Regula Falsi dan Metode Secant untuk menaksir akar f(x) = ln(x), dimulai dari harga x0 = 0,5 dan harga x1 = 6. Terlihat dari gambar bahwa pada iterasi pertama kedua metode memberikan harga taksiran yang sama, namun pada iterasi kedua, titik yang digunakan berbeda sebagai akibatnya metode Secant dapat divergen.

?x0

x1

x2

Gambar 8 : Perbedaan metode Regula Falsi dan metode Secant

Page 39: Metode Numerik

38

B. Metode Penyelesaian Sistem Persamaan LinierKarena metode penyelesaian sistem persamaan linier di sini akan banyak melibatkan

matriks, maka terlebih dahulu akan diperkenalkan tentang istilah-istilah yang digunakan dalam matriks. Sebuah matriks adalah kumpulan bilangan yang disusun sedemikian rupa sehingga berbentuk persegi panjang dan dinyatakan dengan simbol tunggal berupa huruf kapital.

aij melambangkan elemen matriks baris ke-I dan kolom ke-j Seluruh elemen yang terletak horizontal yang sama disebut baris. Seluruh elemen yang terletak pada vertikal yang sama disebut kolom. Matriks yang hanya mempunyai satu baris dinamakan vektor baris. Matriks yang hanya mempunyai satu kolom dinamakan vektor kolom. Matriks yang mempunyai jumlah baris sama dengan jumlah kolom dinamakan matriks

bujur sangkar. Pada matriks bujur sangkar, elemen-elemen matriks yang mempunyai indeks baris sama

dengan indeks kolom dinamakan diagonal utama. Matriks nol adalah matriks yang semua elemenya adalah 0 (biasa dilambangkan dengan

O).

Matriks diagonal adalah matriks yang memenuhi aij = 0 if i ≠ j.

Matriks identitas adalah matriks bujur sangkar yang semua elemen diagonal utama sama dengan 1 sedangkan elemen yang bukan diagonal utama sama dengan 0.

Matriks simetris adalah matriks yang memenuhi aij = aji i, j.

Matriks simetri miring (antisymetric) adalah matriks yang memenuhi aij = -aji i, j.

A=[a11 a12 a13 . .. a1 n

a21 a22 a23 . . a2 n

a31 a32 a33 . .. a3 n

.. . .. . .. . . .. . ..am1 am2 am3 . .. amn

]

O=[0 0 00 0 00 0 0 ]

A=[2 0 00 4 00 0 1 ]

I=[1 0 00 1 00 0 1 ]

A=[2 4 34 2 63 6 5 ]

A=[ 0 2 −6−2 0 36 −3 0 ]

Page 40: Metode Numerik

39

Matriks segitiga atas adalah matriks bujur sangkar yang memenuhi aij = 0 if i > j.

Matriks segitiga bawah adalah matriks bujur sangkar yang memenuhi aij = 0 if j > i.

Matriks tridiagonal adalah matriks yang semua elemennya 0 kecuali pita (band) yang mempunyai lebar 3 dan berpusat pada diagonal utama.

Aritmatika Pada Matriks:

Matriks A dikatakan sama dengan matriks B jika dan hanya jika aij = bij i, j. C = A + B artinya cij = aij + bij i, j C = A – B artinya cij = aij bij i, j B = -A artinya bij = -aij i, j B = k.A dengan k Є R, artinya bij = k.aij i, j Perkalian dua matriks bisa dikerjakan dengan syarat jumlah kolom matriks pertama sama

dengan jumlah baris matriks kedua.C = A.B artinya

c ij=∑k=1

n

a ik . bkj

dengan n adalah jumlah kolom matriks pertama sekaligus jumlah baris matriks kedua. Transpose suatu matriks adalah penukaran peran baris menjadi kolom dan sebaliknya.

Transpose suatu matriks A disimbolkan dengan AT.

Sifat-sifat Aritmatika Pada Matriks: Penjumlahan dan pengurangan matriks bersifat sama seperti penjumlahan dan

pengurangan bilangan real karena sifat-sifat masing-masing elemennya diturunkan kepada matriks.A + B = B + AA – B = A + (-B)(A + B) + C = A + (B + C)

A=[6 5 20 2 10 0 3 ]

A=[6 5 20 2 10 0 3 ]

A=[5 6 0 05 2 1 00 1 2 90 0 −4 2

]

A=[4 7 54 2 21 3 6 ]

AT=[ 4 4 17 2 35 2 6 ]

Page 41: Metode Numerik

40

Jika dimensi matriks cocok, perkalian matriks bersifat asosiatif, tetapi perkalian matriks tidak bersifat komutatif.(A.B)C = A(B.C)A.B ≠ B.A pada kasus umum, bahkan jika A.B ada, belum tentu B.A ada.

Perkalian matriks juga bersifat distributif terhadap penjumlahan dan penguranganA(B + C) = A.B + B.C(A + B)C = A.C + B.C

Jika A matriks bujur sangkar dengan determinan tak-nol, maka ada matriks A -1 yang disebut invers dari A.A.A-1 = A-1.A = I

Augmented Matrix:Augmented matriks adalah suatu matriks yang diperluas dengan menambahkan satu atau beberapa kolom.Contoh:

Matriks [4 1 32 5 61 1 7 ]

diaugment dengan matriks [632 ] menjadi

[4 1 3 62 5 6 31 1 7 2 ] yang

merupakan augmented matrix.

Operasi Baris Elementer:

Operasi baris elementer adalah serangkaian operasi yang dilakukan terhadap semua elemen dalam satu baris secara bersama-sama. Terdapat tiga macam operasi baris elementer, yaitu, penukaran baris, perkalian baris dengan suatu konstanta, dan penjumlahan suatu baris dengan kelipatan tak-nol dari baris yang lain. Jika operasi baris elementer ini diterapkan pada augmented matriks, maka kolom perluasannya juga ikut dioperasikan.

Penukaran barisPenukaran baris berarti menukar salah satu baris dengan baris yang lain. Contoh:

Matriks [4 7 65 2 13 6 4 ]

, jika baris pertama ditukar dengan baris kedua.

Hasilnya adalah [5 2 14 7 63 6 4 ]

. Perkalian suatu baris dengan suatu konstanta

Perkalian baris ini dilakukan dengan mengalikan setiap elemen dalam suatu baris dengan konstanta tertentu. Contoh:

Baris kedua pada matriks [4 7 85 9 61 2 5 ]

dikalikan dengan 0,5.

Page 42: Metode Numerik

41

Hasilnya adalah [ 4 7 8

2 124 123

1 2 5 ].

Penjumlahan suatu baris dengan kelipatan tak-nol dari baris lainPenjumlahan dilakukan elemen per elemen. Setiap elemen baris dikalikan dengan suatu konstanta tertentu lalu dijumlahkan dengan baris lain. Contoh:

Baris kedua pada matriks [2 2 12 6 85 6 9 ] dijumlahkan dengan 2 kali baris pertama.

Hasilnya adalah [2 2 16 10 105 6 9 ]

.

Representasi Sistem Persamaan Linier dengan Matriks:Misalkan kita punya sistem persamaan linier:a11x1+a12 x2+a13 x3+.. .+a1n xn=c1a21 x1+a22 x2+a23 x3+. . .+a2 n xn=c2a31 x1+a32 x2+a33 x3+. ..+a1 n xn=c3. .. .. .an1 x1+an 2x2+an 3 x3+. ..+ann xn=cn

Kita bisa merepresentasikan dengan matriks sebagai berikut:

[a11 a12 a13 .. . a1 n

a21 a22 a23 .. a2 n

a31 a32 a33 .. . a3 n

.. . .. . .. . .. . .. .am1 am2 am3 .. . amn

] [x1x2x3. . .xn

]=[c1c2c3. ..cn

]Matriks sebelah kiri disebut matriks koefisien, matriks yang tengah disebut matriks variabel, sedangkan matriks yang paling kanan disebut matriks hasil.Kemudian matriks koefisien di-augment dengan matriks hasil agar matriks koefisien bisa dioperasikan dengan matriks hasil secara bersama-sama.

[a11 a12 a13 .. . a1 n c1a21 a22 a23 .. . a2 n c2a31 a32 a33 .. . a3 n c3.. . . .. .. . .. . .. . . . .an 1 an2 an3 .. . ann cn

]

Page 43: Metode Numerik

42

1. Metode Eliminasi GaussMetode eliminasi gauss mengadopsi metode eliminasi konvensional, yaitu

menghilangkan variable-variabel dari suatu persamaan dengan substitusi oleh persamaan yang lain, hingga diperoleh nilai-nilai dari variablel bebas hanya saja di sini operasi dilakukan di dalam matriks. Untuk menggunakan metode eliminasi Gauss, terlebih dahulu persamaan ditulis dalam bentuk augmented matrix.

[a11 a12 a13 .. . a1 n c1a21 a22 a23 .. . a2 n c2a31 a32 a33 .. . a3 n c3.. . . .. .. . .. . .. . . . .an 1 an2 an3 .. . ann cn

]Setelah itu, dilakukan serangkaian operasi baris elementer sehingga matriks koefisien

menjadi matriks segitiga atas atau matriks segitiga bawah.

[a11 a12 a13 .. . a1 n c1a21 a22 a23 .. . a2 n c2a31 a32 a33 .. . a3 n c3.. . . .. .. . .. . .. . . . .an 1 an2 an3 .. . ann cn

]

[p11 p12 p13 .. . p1 n q10 p22 p23 .. . p2 n q20 0 p33 .. . p3 n q3.. . . .. .. . .. . . .. . ..0 0 0 .. . pnn qn

]Sehingga kita mempunyai sistem persamaan linier baru yang lebih mudah

menyelesaikannya.

p11 x1+ p12 x2+ p13 x3+. . .+ p1n xn=q1p22 x2+ p23 x3+. . .+ p2n xn=q2p33 x3+.. .+ p1 n xn=q3. .. .. .pnn xn=qn

Penyelesaiannya diperoleh dengan:

xn=qn

pnn

xn−1=1pn−1, n−1

(qn−1−pn−1 , n xn). .. .. . .. .

x2=1p22

(q2−p23 x3−p24 x4−. ..−p2n xn )

x1=1p11

(q1−p12 x2−p13 x3−. . .−p1 n xn)

Karena setiap elemen diagonal utama menjadi pembagi untuk mencari penyelesaian, maka di sini disyaratkan elemen diagonal utama tidak boleh nol. Jika terjadi hal demikian, lakukan penukaran dengan baris lain yang elemen seletaknya tidak sama dengan nol. Jika hal

OBE

Page 44: Metode Numerik

43

tersebut tidak memungkinkan atau tidak ada baris yang demikian, maka system persamaannya dikatakan singular. Sistem persamaan yang singular mungkin tidak mempunyai penyelesaian (inkonsisten) atau malah mempunyai tak terhingga banyaknya penyelesaian.

Algoritma Metode Eliminasi Gauss:1. Masukkan matriks koefisien A dan vektor kolom hasil B beserta ukurannya n.2. Buat augmented matrix [A|B].3. Untuk i = 1 hingga n lakukan operasi baris elementer berikut:

a. Jika aii = 0 tukar baris i dengan baris p dengan i<p≤n dimana api ≠ 0. Bila tidak ada, maka keluar dan simpulkan bahwa persamaan singular, jika tidak, lanjutkan.

b. Untuk baris j = i+1 hingga n, kurangi baris j dengan aji/aii kali baris i.

4. Untuk i = n hingga 1 hitung x i=1aii

(b i−ai , i+1 x i+1−ai , i+2 xi+2−…−ai , n xn )

Page 45: Metode Numerik

44

Flowchart Metode Eliminasi Gauss:

Page 46: Metode Numerik

45

Listing Code:

#include <stdio.h>#include <stdlib.h>

void tukar_baris(double **koefisien, double *hasil, int i1, int i2, int n);void kalikan_baris(double **koefisien, double *hasil, double mult, int i1, int n);void jumlah(double **koefisien, double *hasil, double mult, int i1, int i2, int n);void tampilkan(double **koefisien, double *hasil, int n);

main(){

double **a;double *b;double *lr;double subs;int n, i, j, temp1;

printf("PENYELESAIAN SISTEM PERSAMAAN LINIER\n");printf("DENGAN METODE ELIMINASI GAUSS\n\n");

printf("Masukkan n : ");scanf("%d", &n);

a=(double **) malloc(n*sizeof(double *));for(i=0; i<n; i++)

a[i]=(double *) malloc(n*sizeof(double));

b=(double *) malloc(n*sizeof(double));lr=(double *) malloc(n*sizeof(double));

printf("\nMatrix koefisien : \n");for(i=0; i<n; i++)

for(j=0; j<n; j++){

printf("Masukkan elemen matriks baris ke %d kolom ke %d : ", i+1, j+1);

scanf("%lf", &a[i][j]);}

printf("\nMatrix hasil :\n");for(i=0; i<n; i++){

printf("Masukkan elemen baris ke %d : ", i+1);scanf("%lf", &b[i]);

}

printf("\nAugmented matrix awal:\n");tampilkan(a, b, n);

printf("\nOperasi baris elementer yang dikerjakan:\n");for(i=0; i<n-1; i++){

if(a[i][i]==0){

temp1=-1;for(j=i+1; j<n; j++)

if(a[j][i]!=0){

temp1=j;break;

}if(temp1!=-1)

tukar_baris(a, b, i, temp1, n);else

elsegoto nosolution;

}

for(j=i+1; j<n; j++)jumlah(a, b, -(a[j][i]/a[i][i]), j, i, n);

}

printf("\nAugmented matrix setelah OBE:\n");tampilkan(a, b, n);

Page 47: Metode Numerik

46

elsegoto nosolution;

}

for(j=i+1; j<n; j++)jumlah(a, b, -(a[j][i]/a[i][i]), j, i, n);

}

printf("\nAugmented matrix setelah OBE:\n");tampilkan(a, b, n);

void jumlah(double **koefisien, double *hasil, double mult, int i1, int i2, int n){

int i;

for(i=0; i<n; i++)koefisien[i1][i]=koefisien[i1][i]+mult*koefisien[i2][i];

hasil[i1]=hasil[i1]+mult*hasil[i2];

if(mult==-1)printf("Baris ke-%d dikurangi dengan baris ke-%d\n", i1+1,

Page 48: Metode Numerik

47

User Guide:

Pada tampilan ini, user harus memasukkan n, yatu jumlah variable yang akan dicari nilainya.

void jumlah(double **koefisien, double *hasil, double mult, int i1, int i2, int n){

int i;

for(i=0; i<n; i++)koefisien[i1][i]=koefisien[i1][i]+mult*koefisien[i2][i];

hasil[i1]=hasil[i1]+mult*hasil[i2];

if(mult==-1)printf("Baris ke-%d dikurangi dengan baris ke-%d\n", i1+1,

Page 49: Metode Numerik

48

Pada tampilan ini, user harus memasukkan matriks koefisien

Pada tampilan ini, user harus memasukkan matriks hasil

Tampilan setelah user mengisi data dengan lengkap

Page 50: Metode Numerik

49

Tampilan setelah program melakukan komputasi

Uji coba program:

Kita akan menguji program dengan persamaan sebagai berikut:

Didapat penyelesaian x1=0, x2=4, x3=2.

2. Metode Eliminasi Gauss JordanMetode Eliminasi Gauss Jordan merupakan pengembangan dari metode Eliminasi

Gauss, hanya saja matriks di sebelah kiri dijadikan matriks identitas alih-alih dijadikan matriks segitiga atas. Sehingga jawaban bisa langsung dilihat pada matriks hasil.

x1+2 x2+3 x3=14x1+x2+x3=6x1+4 x2+9 x 3=34

Page 51: Metode Numerik

50

[a11 a12 a13 .. . a1 n c1a21 a22 a23 .. . a2 n c2a31 a32 a33 .. . a3 n c3.. . . .. .. . .. . .. . . . .an 1 an2 an3 .. . ann cn

]

[1 0 0 . .. 0 q10 1 0 . .. 0 q20 0 1 . .. 0 q3.. . .. . . .. . .. . . . .. .0 0 0 . .. 1 qn

]Sistem persamaan baru yang diperoleh menjadi lebih mudah dan penyelesaiannya bisa

langsung dilihat pada matriks hasil.

x1=q1x2=q2x3=q3. . .

xn=qn

Operasi baris elementer yang dilakukan di sini agak lebih rumit daripada pada Eliminasi Gauss, tetapi keuntungannya, Eliminasi Gauss Jordan tidak memerlukan perhitungan lagi setelah kita melakukan operasi baris elementer.

Algoritma Metode Eliminasi Gauss Jordan:5. Masukkan matriks koefisien A dan vektor kolom hasil B beserta ukurannya n.6. Buat augmented matrix [A|B].7. Untuk i = 1 hingga n lakukan operasi baris elementer berikut:

a. Jika aii = 0 tukar baris i dengan baris p dengan i<p≤n dimana api ≠ 0. Bila tidak ada, maka keluar dan simpulkan bahwa persamaan singular, jika tidak, lanjutkan.

b. Jika aii ≠ 1, kalikan baris i dengan 1/aii

c. Untuk baris j = 1 hingga n, jika j ≠ i, kurangi baris j dengan aji/aii kali baris i.8. Untuk i = 1 hingga n simpulkan bahwa penyelesaiannya x i=b i

Flowchart Metode Eliminasi Gauss Jordan:

OBE

Page 52: Metode Numerik

51

User Guide:

Page 53: Metode Numerik

52

Pada tampilan ini, user harus memasukkan n, yatu jumlah variable yang akan dicari nilainya.

Setelah itu, user harus memasukkan matriks koefisien

Page 54: Metode Numerik

53

User harus memasukkan matriks hasil

Tampilan setelah user memasukkan data dengan lengkap

Tampilan setelah program melakukan komputasi

Uji coba program:

Kita akan menguji coba program ini dengan persamaan di bawah ini:

x1+2 x2+3 x3=14x1+x2+x3=6x1+4 x2+9 x 3=34

Page 55: Metode Numerik

54

Didapat penyelesaian x1=0, x2=4, x3=2.

Page 56: Metode Numerik

55

C. KesimpulanDari uji coba masing-masing metode penyelesaian persamaan non linier dengan

persamaan ln ( x )+ tanh ( x )=0 (akar sebenarnya 0.58906331747836272127) dan x−4x−2=0

(akar sebenarnya 1+√5) terlihat bahwa semua metode mampu mendapatkan hasil yang akurat, namun jika dilihat dari jumlah iterasi yang diperlukan, metode Newton Raphson dan metode Secant adalah yang paling unggul, namun keduanya juga memiliki kekurangan, pada metode Newton Raphson, kita harus mendapatkan turunan dari fungsi, sedangkan pada metode Secant, hasil yang diperoleh bisa divergen jika titik pendekatannya kurang tepat. Berikut ini adalah tabel ringkasan hasil uji coba pada metode penyelesaian persamaan non linier:

No Metodeln ( x )+ tanh ( x )=0 x−4

x−2=0

Hasil Iterasi Hasil Iterasi

1 Tabel 0.5890633174783627 89 3.2360679774997894 136

2 Biseksi 0.5890633174783628 55 3.2360679774997898 50

3 Regula Falsi 0.5890633174783627 48 3.2360679774997902 68

4 Iterasi Sederhana 0.589063317478369 42 3.2360679774997898 40

5 Newton Raphson 0.5890633174783627 7 3.2360679774997898 7

6 Secant 0.5890633174783627 8 0.5890633174783627 11

Kesimpulan yang diperoleh adalah sebagai berikut: Jika fungsi yang akan diselesaikan dapat dicari turunannya, gunakan metode Newton Rhapson, jika tidak bisa, gunakan metode Secant, namun jika kedua metode tersebut menghasilkan iterasi yang divergen, gunakanlah metode biseksi atau regula falsi karena metode tertutup selalu menghasilkan iterasi yang konvergen.

Pada metode penyelesaian sistem persamaan linier, baik metode eliminasi Gauss ataupun Gauss Jordan mampu menangani persamaan yang diberikan. Perbedaanya hanyalah pada algoritma yang digunakan, metode eliminasi Gauss Jordan menggunakan algoritma operasi baris elementer yang lebih rumit, namun tidak memerlukan perhitungan lanjutan sesudahnya, sedangkan metode eliminasi Gauss, algoritma yang digunakan lebih mudah, namun masih memerlukan perhitungan lanjutan sesudahnya.