100% menganggap dokumen ini bermanfaat (2 suara)
3K tayangan61 halaman

Metode Numerik

1. Metode numerik seperti metode tabel, metode biseksi, dan metode Newton-Raphson digunakan untuk menyelesaikan persamaan nonlinier dan sistem persamaan linier. 2. Metode tabel adalah metode tertutup yang paling sederhana namun lambat dan kurang akurat. Metode biseksi dan Newton-Raphson lebih cepat konvergen. 3. Program yang dibuat mengimplementasikan metode-metode tersebut untuk menemukan akar persamaan.

Diunggah oleh

Niyoko Yuliawan
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
100% menganggap dokumen ini bermanfaat (2 suara)
3K tayangan61 halaman

Metode Numerik

1. Metode numerik seperti metode tabel, metode biseksi, dan metode Newton-Raphson digunakan untuk menyelesaikan persamaan nonlinier dan sistem persamaan linier. 2. Metode tabel adalah metode tertutup yang paling sederhana namun lambat dan kurang akurat. Metode biseksi dan Newton-Raphson lebih cepat konvergen. 3. Program yang dibuat mengimplementasikan metode-metode tersebut untuk menemukan akar persamaan.

Diunggah oleh

Niyoko Yuliawan
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 61

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
A. Metode Penyelesaian Persamaan Non Linier
Menyelesaikan 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 Tabel
Metode 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 :

=a

=b

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 n
a) yi=f(xi)
b) Bila yi-1.yi ≤ 0 maka keluar looping dan nyatakan bahwa akar
berada di antara
xk-1 dan xk. START

c) xi+1=xi+h.
7. Bila tidak ada yi-1.yi yang kurang dari atau sama dengan 0, maka
Definisi f (x)
nyatakan bahwa step=0.1
akar tidak berada di range ini.
Flowchart Metode Tabel:

Input batas bawah a,


batas atas b

xi=a

F
f(xi)*f(xi+step)<0

xi=xi+step

Tampilkan akar
diantara xi dan
xi+step

END
Listing Code Metode Tabel:

#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)));
real f(real
} x)
{ printf("\nAkar persamaan adalah %.16lf\n\n",
return log(x)+tanh(x);
tempSol);
} }
else
real absolut(real x)
printf("\nAkar tidak berada di range ini\n\n");
{
}
if(x<0)
return -x;
return x;
}
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.
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:


Dengan metode tabel didapat akar persamaan 3.2360679774997894
dengan 136 iterasi.

1. Metode Biseksi
step 3
1
2

Metode 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.
Gambar 1 : Ilustrasi penggunaan metode biseksi untuk menyelesaikan fungsi ln(x)
3. Tentukan toleransi e dan iterasi maksimum n.
+tanh(x)=0
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: START
#include
x=a+b2 <stdio.h>
7. #include
Hitung f(x).<math.h>
typedef long double real;
8. Bila f(x).f(a) < 0 makaDefinisi
b=xf(x)dan f(b)=f(x), bila tidak, a=x dan f(a)=f(x).
i =0
9. real
Jika |b-a| < e atau iterasi > n, maka proses dihentikan dan akar
f(real);
persamaan
real adalah nilai x yang terakhir, jika tidak, ulangi langkah 6.
absolut(real);
Input batas bawah a,
batas atas b, error
main()
Flowchart Metode Biseksi:maksimum e dan iterasi
maksimum n
{
int iterasi = 0;
real a, b, oldSol=0, tempSol, step = 0.1, error,
mid, maxerr, maxiter;
x=(a+b)/2
i++
printf("METODE BISEKSI\n");
printf("Mencari akar persamaan ln(x) + tanh(x) = 0\n\n");
printf("Masukkan batasF bawah : ");
f(a)*f(x)<0
scanf("%lf", &a);
printf("MasukkanT batas atas : ");
scanf("%lf", &b);
b=x a=x
printf("Masukkan error maksimum: ");
scanf("%lf", &maxerr);
printf("Masukkan iterasi maksimum: ");
scanf("%lf", &maxiter);
|b-a|<e atau i>n
F
if(f(a)*f(b)<0)
T
{
do
{ Tampilkan akar
mid persamaannya
= (a+b)/2; x

tempSol=mid;
iterasi++;
error=absolut(tempSol-oldSol);
END

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;
else
a=mid;
oldSol=tempSol;
Listing Code Metode}while((iterasi
Biseksi: <= 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");
}
real f(real x)
{
return log(x) + tanh(x);
}

real absolut(real x)
{
if(x<0)
return -x;
return x;
}
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.
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

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


Dengan metode biseksi, didapat akar persamaan
3.2360679774997898 dengan 50 iterasi

1. Metode Regula Falsi


Disebut 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-fa=fa-fba-b(x-a)

dan absis perpotongannya dengan sumbu x didapat dengan mengganti y


dengan 0.

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

Gambar 2 : Ilustrasi penggunaan metode regula falsi untuk menyelesaikan fungsi


ln(x)+tanh(x)=0
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.98654
2 0.65 1.3 0.975 START
-0.98654 12.78585 -0.22367
3 0.975 1.3 1.1375 -0.22367 12.78585 2.62672
4 0.975 1.1375 1.05625 -0.22367 2.62672 0.728491
5 0.975 1.05625 1.015625Definisi
-0.2 2367
f(x) 0.728491 0.167707
i =0
Penggunaan metode biseksi untuk menyelesaikan persamaan x10
–1=0
Input batas bawah a,
batas atas b, error
i a b maksimum exdan iterasi f(a) f(b) f(x)
maksimum n
1 0 1.3 0.0943 -1 12.78585 -1
2 0.0943 1.3 0.181759 -1 12.78585 -1
3 0.181759 1.3 0.262874 -1 12.78585 -1
4 0.262874 1.3 b0.3 3 8 1 0 5 -1 12.78585 -0.99998
* f(a) - a * f(b)
5 0.338105 x = 0.407878
1.3 -0.99998 12.78585 -0.99987
f(a) - f(b)
i++
Penggunaan metode regula falsi untuk menyelesaikan
persamaan x10 – 1 = 0
Tampak pada iterasi ke-5 metode
F biseksi memberikan hasil yang
f(a)*f(x)<0
lebih baik (dengan error yang lebih kecil).
T

b=x a=x

Algoritma Metode Regula Falsi:

1. Definisikan fungsi |f(x)|<ef(x) yang akan dicari akarnya.


atau i>n
F
2. Tentukan nilai a dan b sebagai batas atas dan batas bawah.
T
3. Tentukan toleransi e dan iterasi maksimum n.
4. Hitung f(a) dan f(b).
Tampilkan akar
5. Jika f(a).f(b)>0 maka proses
persamaannya x dihentikan dan nyatakan bahwa tidak ada
akar persamaan di range ini, jika tidak, maka lanjutkan ke langkah
6.
6. Hitung: END

x=a.fb-b.f(a)fb-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:


Gambar 3: Grafik fungsi x10 – 1. Menunjukkan konvergensi metode regula falsi
yang lambat
#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));
}
else
printf(" %3d %-20.16lf %g\n", iterasi,
tempSol, error);
if(f(mid)==0)
break;

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

oldSol=tempSol;
Listing Code Metode Regula Falsi:
}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");
}
real f(real x)
{
return log(x)+tanh(x);
}

real absolut(real x)
{
if(x<0)
return -x;
return x;
}
User Guide Program:

Pada tampilan ini, user harus memasukkan batas bawah, batas


atas, toleransi error dan iterasi maksimum yang diijinkan

Tampilan setelah user memasukkan data dengan lengkap


Setelah itu, program akan melakukan komputasi.

Uji Coba Program:

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

Didapatkan akar 0.5890633174783627 dengan 48 iterasi

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


Didapat akar persamaan 3.2360679774997902 dengan 68 iterasi

1. Metode Iterasi Sederhana


Metode 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).

y=x
y=4/x+2 akar

Gambar 4 : Ilustrasi penggunaan metode iterasi sederhana untuk menyelesaikan


fungsi x – 4/x – 2 = 0 dengan mengambil g(x)=4/x + 2

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.
START

Definisikan f(x) dan g(x)


i=1

Masukkan pendekatan
awal x, error maksimum e
Gambar 5 : Iterasi yang divergen
dan iterasi maksimum n pada fungsi g(x) = 4/x

Algoritma Metode Iterasi Sederhana:


T
|f(x)|<e atau i>n
1. Definisikan fungsi f(x) dan g(x).
2. Tentukan toleransiF error e dan iterasi maksimum n.
3. Tentukan tebakan awal x.
4. Hitung f(x) x=g(x)
i++
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.
Tampilkan akar
persamaan adalah x

END

Flowchart Metode Iterasi Sederhana:


#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;
Listing Code:}
else if(iterasi % 2 == 1)
{
if((x<=oddBef)==convDir)
{
div=1;
break;
}
oddBef=x;
}
else
{
if((x>=evenBef)==convDir)
{
div=1;
break;
}
evenBef=x;
}
}while(error>maxerr && iterasi<maxiter);
if(div)
printf("Iterasi divergen, proses dihentikan\n");
else
printf("\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;
}
User Guide:

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

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.

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.

Diperoleh akar persamaan 0.589063317478369 dengan 42 iterasi

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

Diperoleh akar 3.2360679774997898 dengan 40 iterasi


1. Metode Newton Raphson
xi+
i1

Gambar 6 : Penjelasan grafik dari metode Newton Raphson


Metode 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.

Persamaan garis singgung f(x) di xi adalah:

y-fxi=f'(xi)(x-xi)

perpotongannya dengan sumbu x diperoleh dengan mengganti y dengan 0:

− f ( xi ) = f ' ( xi )( x − xi )
f ( xi )
x − xi = −
f ' ( xi )
f ( xi )
x = 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-fxf'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

?x0
?x0

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


yang kurang baik
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 xi+1=xi-xi10-110xi9.

i x f(x)
0 0.5 -0.999023438
1 51.65 1.35115E+17
2 46.485 4.71117E+16
3 41.8365 1.64268E+16
4 37.65285 5.72768E+15
5 33.88757 1.99712E+15
… … …
∞ 1 0

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.
Flowchart Metode NewtonSTART
Raphson:

Definisikan f(x) dan g(x)


i=1

Masukkan pendekatan
awal x, error maksimum e
dan iterasi maksimum n

T
|f(x)|<e atau i>n

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

Tampilkan akar
persamaan adalah x

END
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;
}
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

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


1. Metode Secant
Masalah 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)≈fxi-f(xi-1)xi-xi-1

didapat:

xi+1=xi-f(xi)xi-xi-1fxi-fxi-1

x210

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.
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 xi+1=xi-f(xi)xi-xi-1fxi-fxi-1
8. i = i + 1 dan ulangiSTART
langkah 5.
Flowchart Metode Secant:
Definisikan f(x)
i=0

Masukkan pendekatan awal 1 x0,


pendekatan awal 2 x1, toleransi
error e dan iterasi maksimum n

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

T
|f(x)|<e atau i>n

a=b
b=x
i++;

Tampilkan akar
persamaannya
adalah x

END

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;
User Guide Program:
return x;
}
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

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:

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.

x3210

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.

x
1

x
2

? x
0
A. Metode
Gambar Penyelesaian
8 : Perbedaan metode Regula Sistem Persamaan
Falsi dan metode Secant Linier
Karena 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.

 a11 a12 a13 ... a1n 


a a22 a23 .. a2 n 
 21
A =  a31 a32 a33 ... a3n 
 
 ... ... ... ... ... 
am1 am 2 am 3 ... amn 

• 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).
0 0 0
O = 0 0 0
0 0 0
• Matriks diagonal adalah matriks yang memenuhi aij = 0 if i ≠ j.
2 0 0
A = 0 4 0
0 0 1

• Matriks identitas adalah matriks bujur sangkar yang semua elemen


diagonal utama sama dengan 1 sedangkan elemen yang bukan diagonal
utama sama dengan 0.
1 0 0
I = 0 1 0
0 0 1

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


2 4 3
A = 4 2 6
3 6 5

• Matriks simetri miring (antisymetric) adalah matriks yang memenuhi aij


= -aji ∀i, j.
0 2 − 6
A = − 2 0 3 
 6 − 3 0 
• Matriks segitiga atas adalah matriks bujur sangkar yang memenuhi aij =
0 if i > j.
6 5 2 
A = 0 2 1 
0 0 3

• Matriks segitiga bawah adalah matriks bujur sangkar yang memenuhi aij
= 0 if j > i.
6 5 2 
A = 0 2 1 
0 0 3

• Matriks tridiagonal adalah matriks yang semua elemennya 0 kecuali pita


(band) yang mempunyai lebar 3 dan berpusat pada diagonal utama.
5 6 0 0 
5 2 1 0 
A= 
0 1 2 9 
 
0 0 − 4 2
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
cij=k=1naik.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.

4 7 5 
A = 4 2 2
1 3 6
4 4 1
A = 7 2 3
T

5 2 6
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+A
A – B = A + (-B)
(A + B) + C = A + (B + C)
• 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
pengurangan
A(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 diaugment dengan matriks menjadi
4 1 3 6  4 1 3 6
2 5 6   3  2 5 6 3
     
1 1 7 2 1 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 baris
Penukaran baris berarti menukar salah satu baris dengan baris yang
lain. Contoh:
Matriks , jika baris pertama ditukar dengan baris kedua.
4 7 6
5 2 1 
 
3 6 4

Hasilnya adalah .
5 2 1 
4 7 6
 
3 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 dikalikan dengan 0,5.
4 7 8 
5 9 6 
 
1 2 5

Hasilnya adalah .
4 7 8
2 1 4 12 3
 2
 1 2 5

• Penjumlahan suatu baris dengan kelipatan tak-nol dari baris lain


Penjumlahan dilakukan elemen per elemen. Setiap elemen baris
dikalikan dengan suatu konstanta tertentu lalu dijumlahkan dengan
baris lain. Contoh:
Baris kedua pada matriks dijumlahkan dengan 2 kali baris
2 2 1
2 6 8
 
5 6 9

pertama.
Hasilnya adalah .
2 2 1 
6 10 10
 
5 6 9 

Representasi Sistem Persamaan Linier dengan Matriks:


Misalkan kita punya sistem persamaan linier:
a11 x1 + a12 x2 + a13 x3 + ... + a1n xn = c1
a 21 x1 + a 22 x 2 + a 23 x3 + ... + a 2 n xn = c 2
a31 x1 + a32 x 2 + a33 x3 + ... + a1n xn = c3
......
a n1 x1 + a n 2 x 2 + a n 3 x3 + ... + a nn xn = cn

Kita bisa merepresentasikan dengan matriks sebagai berikut:

 a11 a12 a13 ... a1n   x1   c1 


a a22 a23 .. a2 n   x2  c2 
 21
 a31 a32 a33 ... a3n   x3  = c3 
    
 ... ... ... ... ...   ...   ... 
am1 am 2 am 3 ... amn   xn  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 ... a1n c1 
a a22 a 23 ... a2 n c2 
 21
 a31 a32 a33 ... a3n c3 
 
 ... ... ... ... ... ... 
a n1 an 2 a n 3 ... a nn cn 

1. Metode Eliminasi Gauss


Metode 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 ... a1n c1 


a a22 a 23 ... a2 n c2 
 21
 a31 a32 a33 ... a3n c3 
 
 ... ... ... ... ... ... 
a n1 an 2 a n 3 ... a nn cn 

Setelah itu, dilakukan serangkaian operasi baris elementer sehingga matriks


koefisien menjadi matriks segitiga atas atau matriks segitiga bawah.

 a11 a12 a13 ... a1n c1   p11 p12 p13 ... p1n q1 
a a 22 a 23 ... a 2 n c2  OBE  0 p 22 p 23 ... p2n q 2 
 21 
 a31 a32 a33 ... a3n c3  0 0 p33 ... p3n q3 
   
 ... ... ... ... ... ...   ... ... ... ... ... ... 
 a n1 an 2 a n 3 ... a nn c n   0 0 0 ... p nn q n 

Sehingga kita mempunyai sistem persamaan linier baru yang lebih mudah
menyelesaikannya.
p11 x1 + p12 x 2 + p13 x3 + ... + p1n x n = q1
p 22 x 2 + p 23 x3 + ... + p 2 n x n = q 2
p33 x3 + ... + p1n x n = q3
......
p nn x n = q n

Penyelesaiannya diperoleh dengan:

qn
xn =
p nn

xn −1 =
1
(q n −1 − p n −1,n x n )
p n −1,n −1
.........
1
x2 = ( q2 − p23 x3 − p24 x4 − ... − p2n xn )
p 22
1
x1 = ( q1 − p12 x2 − p13 x3 − ... − p1n xn )
p11

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 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 xi=1aiibi-ai,i+1xi+1-ai,i+2xi+2-…-
ai,nxn
START
B

Input ukuran matriks n dan J=i+1


Augmented matriks A

F
J<n
i=0

T
C i++
K=0

F
i<n
C

T F
K<=n

A[i][i]==0 F B T

A[j][k]=A[j][k]-(A[j][i]/A[i][i])*A[i][k] J++
T k++

Temp1=-1
J=i+1

F
J<n

T i=n-1
A

D
A[j][i]!=0

F
i>=0 D

Flowchart Metode Eliminasi Gauss:


i=0
J++ Temp1=j
T

Subs=0
F J=i+1
i<n
F
Temp!=-1
T

T F
xi=lr[i] J<n
K=0
T
i++
Subs+=A[i][j]*lr[j]
F J++
K<=n B

T Tampilkan bahwa
persamaan tidak
Temp=A[i][k] mempunyai lr[i]=(b[i]-subs)/a[i][i]
A[i][k]=A[temp1][k] penyelesaian tunggal i--
A[temp1][k]=Temp
K++

END
#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));
Listing Code:
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
goto 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);

if(a[n-1][n-1]==0)
goto nosolution;
else
{
printf("\n");
for(i=n-1; i>=0; i--)
{
subs=0;
for(j=i+1; j<n; j++)
subs+=lr[j]*a[i][j];
lr[i]=(b[i]-subs)/a[i][i];
}

printf("\nHasil perhitungannya adalah:\n");


for(i=0; i<n; i++)
printf("x%d = %g\n", i+1, lr[i]);
}
printf("\n");
exit(0);

nosolution:
printf("\nPersamaan tidak mempunyai penyelesaian tunggal\n");

void tukar_baris(double **koefisien, double *hasil, int i1, int i2,


int n)
{
double temp;
int i;

for(i=0; i<n; i++)


{
temp=koefisien[i1][i];
koefisien[i1][i]=koefisien[i2][i];
koefisien[i2][i]=temp;
}

temp=hasil[i1];
hasil[i1]=hasil[i2];
hasil[i2]=temp;

printf("Baris ke-%d ditukar dengan baris ke-%d\n", i1+1, i2+1);


}

void kalikan_baris(double **koefisien, double *hasil, double mult, int


i1, int n)
{
int i;

for(i=0; i<n; i++)


koefisien[i1][i]=mult*koefisien[i1][i];

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

printf("Baris ke-%d dikalikan dengan %g\n", i1+1, mult);


}
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,
i2+1);
else if(mult==1)
printf("Baris ke-%d ditambah dengan baris ke-%d\n", i1+1,
i2+1);
else if(mult<0)
printf("Baris ke-%d dikurangi dengan %g kali baris ke-%d\n",
i1+1, -mult, i2+1);
else
printf("Baris ke-%d ditambah dengan %g kali baris ke-%d\n",
i1+1, mult, i2+1);
}

void tampilkan(double **koefisien, double *hasil, int n)


{
int i, j;

for(i=0; i<n; i++)


{
for(j=0; j<n; j++)
printf("%6g ", koefisien[i][j]);
printf("|");
printf("%6g\n", hasil[i]);
}

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

Pada tampilan ini, user harus memasukkan matriks koefisien

Pada tampilan ini, user harus memasukkan matriks hasil


Tampilan setelah user mengisi data dengan lengkap

Tampilan setelah program melakukan komputasi

Uji coba program:

Kita akan menguji program dengan persamaan sebagai berikut:

x1 + 2 x 2 + 3 x 3 = 14
x1 + x 2 + x 3 = 6
x1 + 4 x 2 + 9 x 3 = 34
Didapat penyelesaian x1=0, x2=4, x3=2.

1. Metode Eliminasi Gauss Jordan


Metode 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.

 a11 a12 a13 ... a1n c1  1 0 0 ... 0 q1 


a a 22 a 23 ... a 2 n c2  OBE  0 1 0 ... 0 q 2 
 21 
 a31 a32 a33 ... a3n c3  0 0 1 ... 0 q3 
   
 ... ... ... ... ... ...  ... ... ... ... ... ... 
 a n1 an 2 a n 3 ... a nn c n   0 0 0 ... 1 q n 

Sistem persamaan baru yang diperoleh menjadi lebih mudah dan


penyelesaiannya bisa langsung dilihat pada matriks hasil.

x1 = q1
x2 = q2
x3 = q3
...
xn = q n

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:


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. 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.
4. Untuk i = 1 hingga n simpulkan bahwa penyelesaiannya xi=bi

START
B

Input ukuran matriks n dan


Augmented matriks A k=0

i=0 F
k<=n

C T

F A[i][k]=A[i][k]/A[i][i]
i<n i=0 K++

Flowchart Metode Eliminasi Gauss Jordan: J=0


F
A[i][i]==0 B
F
i>n
T F
J<n i++
T

Temp1=-1 T
J=i+1 xi=A[i][n]
C

D F
J==i
A
F T
J<n
K=0
T Tampilkan bahwa
persamaan tidak
D
mempunyai
F penyelesaian tunggal
A[j][i]!=0 F
K<=n

T T

J++ Temp1=j A[j][k]=A[j][k]-(A[j][i]/A[i][i])*A[i][k]


J++
k++

END

F
Temp!=-1 A

K=0

F
K<=n B

Temp=A[i][k]
A[i][k]=A[temp1][k]
A[temp1][k]=Temp
K++
User Guide:

Pada tampilan ini, user harus memasukkan n, yatu jumlah variable


yang akan dicari nilainya.
Setelah itu, user harus memasukkan matriks koefisien

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 x 2 + 3 x 3 = 14
x1 + x 2 + x 3 = 6
x1 + 4 x 2 + 9 x 3 = 34

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


A. Kesimpulan
Dari uji coba masing-masing metode penyelesaian persamaan non linier
dengan persamaan lnx+tanhx=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:

N lnx+tanhx=0 x-4x-2=0
Metode
o Hasil Iterasi Hasil Iterasi

0.589063317478 3.236067977499
1 Tabel 89 136
3627 7894

0.589063317478 3.236067977499
2 Biseksi 55 50
3628 7898
0.589063317478 3.236067977499
3 Regula Falsi 48 68
3627 7902

Iterasi 0.589063317478 3.236067977499


4 42 40
Sederhana 369 7898

3.236067977499
Newton 0.589063317478
5 7 78 7
Raphson 3627
98

0.589063317478 0.589063317478
6 Secant 8 11
3627 3627

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.

Anda mungkin juga menyukai