• Tidak ada hasil yang ditemukan

BAB 4 HASIL DAN PEMBAHASAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 4 HASIL DAN PEMBAHASAN"

Copied!
23
0
0

Teks penuh

(1)

BAB 4

HASIL DAN PEMBAHASAN

4.1. Proses Analisis Perbandingan

Seperti yang telah dinyatakan dalam subbab 3.3.1, tahap pertama ini ditujukan

untuk menguji ketepatan suatu metode dalam melakukan perhitungan terhadap suatu integral yang diujikan. Dalam tahap ini terdapat beberapa fungsi yang hasil perhitungannya digunakan untuk melihat apakah metode tersebut mampu menghitung persamaan integral dengan ketepatan yang memadai. Selisih dari hasil perhitungan terhadap fungsi-fungsi tersebut akan ditampilkan dalam bentuk tabel perbandingan sehingga dapat dengan mudah dilihat perbedaan antarmetode yang digunakan.

4.1.1. Fungsi Pertama

Fungsi pertama yang digunakan untuk menguji metode-metode tersebut memiliki hasil eksak sebesar 1,640533. Fungsi ini memiliki bentuk sebagai berikut:

+ + − + = 8 . 0 0 5 4 3 2 400 900 675 200 0.2 x x x x dx I

(2)

Gambar 4.1 Penggambaran secara grafik dari fungsi

+ + − + = 8 . 0 0 5 4 3 2 400 900 675 200 0.2 x x x x dx I

Berikut adalah penjelasan langkah perhitungan dari metode-metode yang diuji:

1. Metode Gauss-Legendre

Metode kuadratur Gauss yang digunakan dalam perhitungan merupakan metode Gauss-Legendre enam titik. Kode sumber dari metode ini ditulis menggunakan C. Langkah-langkah metode tersebut adalah sebagai berikut:

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

// a dan b = batas integrasi // n = ordo

float a, b, sum, I; int i, n = 6;

(3)

double x[6] = {0.4662347571, 0.3306046932, -0.1193095930, -0.1193095930, 0.3306046932, 0.4662347571}; double c[6] = {0.0856622462, 0.1803807865, 0.2339569673, 0.2339569673, 0.1803807865, 0.0856622462}; float F (float x) { return (0.2 + (25 * x) - (200 * pow (x, 2)) + (675 * pow (x, 3)) - (900 * pow (x, 4)) + (400 * pow (x, 5)));

Baris di atas merupakan inisialisasi awal terhadap variabel-variabel yang digunakan. Variabel a dan b adalah batas integrasi, n adalah ordo dari integrasi, sum merupakan penampung untuk nilai integrasi yang lebih baik dari evaluasi terhadap fungsi yang diintegralkan, x adalah nilai dari argumen fungsi untuk Gauss-Legendre enam titik, c adalah nilai dari faktor pembobot untuk Gauss-Legendre enam titik, F dalam hal ini dan dalam perhitungan fungsi-fungsi selanjutnya digunakan sebagai tempat untuk menampung fungsi.

void main ()

{ clrscr ();

printf ("Input batas atas (b): "); fflush (stdin); scanf ("%f", &b); // b = 0.8;

printf ("Input batas bawah (a): "); fflush (stdin); scanf ("%f", &a); // a = 0;

sum = 0;

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

{ sum = sum + c[i] * F((b - a) * x[i] + (a + b) / 2);

}

I = (b - a) * sum;

printf ("Hasil integral: %g\n", I);

getch ();

};

Sebagaimana dengan metode numerik lainnya, metode Gauss-Legendre didasarkan pada fungsi yang bersifat iteratif, yang dalam setiap

(4)

perulangannya akan menghasilkan nilai yang sama atau lebih baik. Perintah di atas melakukan perulangan sebanyak n kali (dalam kasus ini n = 6), dimulai dari n = 1. c[i] merupakan penggunaan/pemanggilan nilai dari variabel c (faktor pembobot) ke-i. Setiap hasil perhitungan yang baru akan ditampung di variabel sum. Variabel sum merupakan nilai kumulatif dari evaluasi fungsi yang diintegralkan, yang memiliki subinterval yang simetris terhadap titik tengah interval. Variabel I merupakan variabel yang menampung nilai pendugaan integral fungsi. Hasil perhitungan yang hampir sama dengan hasil eksak dari metode Gauss-Legendre enam titik ini menunjukkan bahwa kemampuan dari metode ini memberikan nilai yang sangat baik dalam menghitung fungsi pertama.

2. Metode Integrasi Romberg

Metode integrasi Romberg ditulis dalam bentuk kode sumber C. Langkah-langkah metode tersebut sebagai berikut:

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

// a dan b = batas integral // epsilon = toleransi // delta = spasi terkecil // h = spasi

// n = jumlah segmen

float a, b, h, I[100], sum, epsilon, delta; int n, k, nmax, i, j, true = 1;

float F (float x) // f1

{ return (0.2 + (25 * x) - (200 * pow (x, 2)) + (675 * pow (x, 3)) - (900 * pow (x, 4)) + (400 * pow (x, 5)));

(5)

};

void main () {

clrscr ();

printf ("Nilai batas a (batas bawah): "); scanf ("%f", &a); fflush (stdin);

printf ("Nilai batas b (batas atas): "); scanf ("%f", &b); fflush (stdin);

printf ("Nilai toleransi: "); scanf ("%f", &epsilon); printf ("Nilai Delta: "); scanf ("%f", &delta);

h = b - a; I[1] = h / 2 * (F (a) + F (b)); n = 1; while (true) { h = h / 2; sum = F (a); for (i = 1; i < (pow (2, n)); i ++) sum = sum + 2 * F (a + i * h); I[n + 1] = h / 2 * (sum + F (b));

if (fabs (I[n + 1] - I[n]) <= epsilon)

{ printf ("Toleransi tercapai untuk metode trapesium pada n = %d\n", n);

printf ("Hasil integral = %f", I[n + 1]); break;

};

if (h <= delta)

{ nmax = n; n = 1;

while (n <= nmax && true)

{ for (k = 1, j = n; j > 1; k++, j--) { I[j] = (pow (4, k) * I[j + 1] - I[j]) / (pow(4, k) - 1);

if (abs (I[j] - I[j - 1]) <= epsilon)

{ printf ("Hasil integral

= %f", I[j]); true = 0; break; }; }; n = n + 1; }; delta = delta /2; } else n = n + 1; }; getch (); };

float F menampung fungsi integral pertama di mana fungsi float F. Pertama-tama, program akan meminta data untuk perhitungan berupa nilai dari batas bawah (a), batas atas (b), nilai toleransi (epsilon), dan nilai delta yang merupakan nilai spasi terkecil di mana bila nilai h

(6)

lebih kecil dari delta maka akan dilakukan perhitungan untuk memperoleh pendugaan integral yang lebih baik. Nilai h merupakan selisih antara batas atas dan batas bawah. I[1] adalah pendugaan integral pertama. Nilai integral akan dihitung dengan metode trapesium untuk h = h0, h0/2, dst., selama h > delta. Bila nilai dari fabs (I[n + 1] - I[n]) <= epsilon maka program akan berhenti dan menampilkan hasil perhitungan pendugaan integral. Jika tidak dan nilai h < delta, maka lakukan perhitungan dengan rumus ekstrapolasi Richardson. Bila nilai abs (I[j] - I[j - 1]) <= epsilon, program akan dihentikan dan hasil perhitungan akan ditampilkan. Perhitungan dengan metode trapesium akan terus dilakukan selama h > delta. Perhitungan ini bertujuan untuk menghasilkan penduga integral yang baru, yang bernilai lebih baik dari integral sebelumnya. Bila ternyata selisih antara integral yang baru dengan yang lama bernilai lebih kecil dari kriteria error yang sudah ditentukan sebelumnya, maka perhitungan akan dihentikan. Dalam kasus ini, hasil yang diperoleh melalui perhitungan berdasarkan nilai a = 0, b = 0.8, epsilon = 0.0000001, dan delta = 0.001 adalah 1.639467.

3. Metode Simulasi Monte Carlo

Metode simulasi Monte Carlo melakukan pendugaan integral dengan menggunakan bilangan pseudo-random berdistribusi seragam dengan jalan mencari rata-rata dari fungsi yang diintegralkan dan dikalikan

(7)

dengan selisih interval dari integral tersebut. Langkah-langkah metode simulasi ini adalah sebagai berikut:

source ("d:/temp/f1.r") curve(f, from = 0, to = 0.8) f

set.seed (10000)

mc <- runif (10000, min = 0, max = 0.8) mc

Fungsi set.seed (10000) merupakan perintah untuk menentukan bagaimana penghasil bilangan acak harus diinisialisasi (seeded). Hal ini untuk mencegah terjadinya perubahan terus menerus setiap kali script dijalankan. Perubahan yang terus menerus dapat menyebabkan tidak adanya nilai akhir yang tetap. Sedangkan perintah runif (10000, min = 0, max = 0.8) berguna untuk menghasilkan bilangan acak berdistribusi seragam (uniform) sebanyak 10000 dengan batas distribusi mulai dari 0 hingga 0.8. Hasil dari operasi tersebut akan ditampung ke dalam variabel mc. Algoritma yang digunakan untuk menghasilkan bilangan pseudo-random pada R Language secara default adalah algoritma Mersenne-Twister. Algoritma ini diciptakan oleh Matsumoto and Nishimura pada tahun 1998 yang lebih dikenal dengan nama algoritma mt19937 dengan periode 2^19937-1 (yang merupakan bilangan prima) dan equidistribution-nya berada dalam 623 dimensi berturut-turut.

intmc = 0.8 * mean (f (mc)) intmc

Hasil pengintegrasian dengan menggunakan metode Monte Carlo diperoleh dengan cara melakukan menghitung rata-rata (mean) dari

(8)

( )

= N i i x f 1

dikalikan dengan selisih batas interval/integrasinya (a - b =

0.8 – 0 = 0.8). Perhitungan tersebut menghasilkan nilai akhir pendugaan integrasi sebesar 1,652151.

4. Metode Simulasi Quasi-Monte Carlo

Metode simulasi quasi-Monte Carlo memiliki cara yang sama dengan metode Monte Carlo, namun metode quasi-Monte Carlo menggunakan bilangan quasi-random yang dihasilkan dari barisan low-discrepancy.. Langkah-langkah metode tersebut sebagai berikut:

> require (fOptions)

Loading required package: fOptions Loading required package: fBasics

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fBasics: Markets and Basic Statistics

Loading required package: fCalendar

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fCalendar: Time, Date and Calendar Tools Loading required package: fSeries

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fSeries: The Dynamical Process Behind Financial Markets

Rmetrics, (C) 1999-2004, Diethelm Wuertz, GPL fOptions: Valuation of Options

[1] TRUE

Perintah di atas merupakan perintah untuk melakukan loading terhadap paket fOptions yang memiliki fungsi-fungsi yang dibutuhkan. Nilai TRUE menandakan paket tersedia dan siap digunakan.

> source ("d:/temp/f1.r") > curve(f, from = 0, to = 0.8) >

(9)

function (x) { 0.2 + (25 * x) - (200 * (x ^ 2)) + (675 * (x ^ 3)) - (900 * (x ^ 4)) + (400 * (x ^ 5)) } > > qmc <- c(runif.sobol (10000,1))

Seperti halnya metode Monte Carlo, metode simulasi quasi-Monte Carlo juga memerlukan bilangan acak guna melakukan pendugaan terhadap fungsi integral. Tetapi quasi-Monte Carlo tidak menggunakan bilangan pseudo-random, melainkan bilangan quasi-random. Perintah qmc <- c(runif.sobol (10000,1)) merupakan operasi yang menghasilkan bilangan quasi-random menggunakan barisan Sobol sejumlah 10000 dengan dimensi 1 (dimensi integral) dan bilangan yang dihasilkan akan ditampung pada variabel qmc.

> for (i in 1:10000) + {sum = sum + f (qmc[i]) + } > sum [1] 14501.18 > > intqmc = 0.8 * sum / 10000 > intqmc [1] 1.160095

Metode simulasi quasi-Monte Carlo menghasilkan nilai pendugaan integral sebesar 1.160095. Hal ini memperlihatkan bahwa metode ini memiliki kelemahan terhadap fungsi yang membentuk garis yang bergelombang (smooth).

Hasil perhitungan integral dari fungsi pertama yang dilakukan oleh metode Gauss-Legendre, metode integrasi Romberg, metode simulasi Monte Carlo, dan metode simulasi quasi-Monte Carlo dapat dilihat pada tabel 4.1.

(10)

Tabel 4.1 Tabel perbandingan hasil perhitungan integral fungsi pertama

Tabel 4.1 memperlihatkan bahwa metode Gauss-Legendre sanggup memberikan hasil yang sangat baik dengan error sangat kecil, sedangkan metode quasi-Monte Carlo gagal memberikan hasil yang memadai. Hal ini dikarenakan bentuk integral yang bergelombang seperti yang terlihat pada gambar 4.1. Hal ini memperlihatkan bahwa metode Gauss-Legendre unggul terhadap fungsi-fungsi yang dapat dengan mudah diintegralkan secara analitik. Namun dengan catatan bahwa fungsi tersebut tidak membentuk grafik yang curam ataupun batas integralnya tidak bernilai sama berlawanan, misal: -3 dan 3. Hal ini dikarenakan kelemahan dalam rumus Gauss-Legendre yang melibatkan penambahan antarbatas integral (a + b) yang dapat mengakibatkan nilai 0 sehingga menyebabkan penyimpangan hasil perhitungan integral secara keseluruhan.

4.1.2. Fungsi Kedua

Fungsi kedua yang digunakan untuk menguji metode-metode tersebut memiliki hasil eksak sebesar 0,602298. Fungsi ini memiliki bentuk sebagai berikut:

Gauss-Legendre Romberg Monte Carlo Quasi-Monte Carlo

Hasil 1,64053 1,639467 1,652151 1,160095

(11)

(

)

(

( )

)

− =1 0 1 20 1 . 0 1 2 . 1 x e dx x I x

Gambar 4.2 Penggambaran secara grafik dari fungsi

(

)

(

( )

)

− =1 0 1 20 1 . 0 1 2 . 1 x e dx x I x

Berikut adalah proses perhitungan dari setiap metode yang diujikan terhadap fungsi kedua:

1. Metode Gauss-Legendre

Langkah-langkah proses perhitungan dengan metode Gauss-Legendre dalam program C adalah sebagai berikut:

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

// a dan b = batas integrasi

// n = ordo float a, b, sum, I; int i, n = 6; double x[6] = {0.4662347571, 0.3306046932, -0.1193095930, -0.1193095930, 0.3306046932, 0.4662347571};

(12)

double c[6] = {0.0856622462, 0.1803807865, 0.2339569673, 0.2339569673, 0.1803807865, 0.0856622462}; float F (float x) { return (1.2 - x) * (1 - (exp (20 * (x - 1)) )) * pow (x, 0.1); };

Variabel x akan menampung nilai dari faktor pembobot untuk Gauss kuadratur enam titik dan variabel c akan menampung nilai argumen fungsi untuk rumus Gauss kuadratur enam titik. Fungsi F menampung persamaan integral yang akan dihitung.

void main ()

{ clrscr ();

printf ("Input batas atas (b): "); fflush (stdin); scanf ("%f", &b); // b = 0.8;

printf ("Input batas bawah (a): "); fflush (stdin); scanf ("%f", &a); // a = 0;

sum = 0;

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

{ sum = sum + c[i] * F((b - a) * x[i] + (a + b) / 2);

}

I = (b - a) * sum;

printf ("Hasil integral: %g\n", I);

getch ();

};

Perhitungan dengan menggunakan metode Gauss-Legendre terhadap

fungsi =

(

)

(

− ( −)

)

1 0 1 20 1 . 0 1 2 . 1 x e dx x I x

menghasilkan nilai sebesar

0.603317.

2. Metode Integrasi Romberg

(13)

berikut:

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

// a dan b = batas integral // epsilon = toleransi // delta = spasi terkecil // h = spasi

// n = jumlah segmen

float a, b, h, I[100], sum, epsilon, delta; int n, k, nmax, i, j, true = 1;

float F (float x) // f2

{ return (pow(x, 0.1) * (1.2 - x) * (1 - exp (20 * (x - 1))));

};

void main () {

clrscr ();

printf ("Nilai batas a (batas bawah): "); scanf ("%f", &a); fflush (stdin);

printf ("Nilai batas b (batas atas): "); scanf ("%f", &b); fflush (stdin);

printf ("Nilai toleransi: "); scanf ("%f", &epsilon); printf ("Nilai Delta: "); scanf ("%f", &delta);

h = b - a; I[1] = h / 2 * (F (a) + F (b)); n = 1; while (true) { h = h / 2; sum = F (a); for (i = 1; i < (pow (2, n)); i ++) sum = sum + 2 * F (a + i * h); I[n + 1] = h / 2 * (sum + F (b));

if (fabs (I[n + 1] - I[n]) <= epsilon)

{ printf ("Toleransi tercapai untuk metode trapesium pada n = %d\n", n);

printf ("Hasil integral = %f", I[n + 1]); break;

};

if (h <= delta)

{ nmax = n; n = 1;

while (n <= nmax && true)

{ for (k = 1, j = n; j > 1; k++, j--) { I[j] = (pow (4, k) * I[j + 1] - I[j]) / (pow(4, k) - 1);

if (abs (I[j] - I[j - 1]) <= epsilon)

(14)

= %f", I[j]); true = 0; break; }; }; n = n + 1; }; delta = delta /2; } else n = n + 1; }; getch (); };

Perhitungan dengan menggunakan metode Romberg dengan nilai a = 0, b = 1, epsilon = 0.0000001, dan delta = 0.001 adalah 0.608207.

3. Metode Simulasi Monte Carlo

Langkah-langkah metode simulasi dalam menghitung integral dari fungsi kedua adalah sebagai berikut:

> source ("d:/temp/f2.r") > curve(f, from = 0, to = 1) > > f function (x) { (1.2 - x) * (1 - (exp (20 * (x - 1)) )) * (x ^ 0.1) } > > set.seed (10000) >

> mc <- runif (10000, min = 0, max = 1) >

>

> intmc = 1 * mean (f (mc)) > intmc

[1] 0.5993612

Perhitungan tersebut menghasilkan nilai akhir pendugaan integrasi sebesar 0.5993612.

4. Metode Simulasi Quasi-Monte Carlo

(15)

pendugaan terhadap fungsi =

(

)

(

− ( −)

)

1 0 1 20 1 . 0 1 2 . 1 x e dx x I x adalah sebagai berikut: > require (fOptions)

Loading required package: fOptions Loading required package: fBasics

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fBasics: Markets and Basic Statistics

Loading required package: fCalendar

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fCalendar: Time, Date and Calendar Tools Loading required package: fSeries

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fSeries: The Dynamical Process Behind Financial Markets

Rmetrics, (C) 1999-2004, Diethelm Wuertz, GPL fOptions: Valuation of Options

[1] TRUE > > source ("d:/temp/f2.r") > curve(f, from = 0, to = 1) > > intqmc=0; qmc=0; sum=0 > > f function (x) { (1.2 - x) * (1 - (exp (20 * (x - 1)) )) * (x ^ 0.1) } > > qmc <- c(runif.sobol (10000,1)) > > for (i in 1:10000) + {sum = sum + f (qmc[i]) + } > sum [1] 6023.791 > > intqmc = 1 * sum / 10000 > intqmc [1] 0.6023791

Metode simulasi quasi-Monte Carlo menghasilkan nilai pendugaan integral sebesar 0.6023791.

(16)

Hasil perhitungan integral dari fungsi kedua yang dilakukan oleh metode Gauss-Legendre, metode integrasi Romberg, metode simulasi Monte Carlo, dan metode simulasi quasi-Monte Carlo dapat dilihat pada tabel 4.2.

Tabel 4.2 Tabel perbandingan hasil perhitungan integral fungsi kedua

Tabel 4.2 memperlihatkan bahwa Gauss-Legendre mencetak hasil terburuk

di antara semua metode yang diujikan terhadap fungsi kedua ini. Hasil ini berlawanan dengan hasil perhitungan pada fungsi pertama di mana Gauss-Legendre menciptakan hasil yang sangat baik. Hal ini dikarenakan fungsi yang diintegrasikan membentuk grafik yang tajam pada sisi sebelah kiri. Rumus kuadratur akan memberikan hasil yang sesuai bila sebuah fungsi memiliki sifat hampir vertikal di mana garis singgungnya hampir sejajar ⎟

⎠ ⎞ ⎜ ⎝ ⎛ = ~ dx df dengan

sumbu y. Sedangkan metode simulasi Monte Carlo mampu menunjukkan superioritasnya terhadap metode lainnya dengan error yang sangat kecil, bahkan dibandingkan metode dengan error terkecil kedua sekalipun (0,0000821 << 0,0010202).

4.1.3. Fungsi Ketiga

Fungsi ketiga memiliki nilai eksak sebesar 0.34134445. Fungsi tersebut

Gauss-Legendre Romberg Monte Carlo Quasi-Monte Carlo

Hasil 0,608207 0,603317 0,5993612 0,6023791

(17)

memiliki bentuk sebagai berikut:

− = 1 0 2 2 2 1 du e I u π , dengan π = 3,14

Gambar 4.3 Penggambaran secara grafik dari fungsi =

− 1 0 2 2 2 1 du e I u π

Berikut adalah proses perhitungan dari setiap metode yang diujikan terhadap fungsi ketiga:

1. Metode Gauss-Legendre

Langkah-langkah metode perhitungan Gauss-Legendre enam titik adalah sebagai berikut:

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

(18)

// n = ordo float a, b, sum, I; int i, n = 6; double x[6] = {0.4662347571, 0.3306046932, -0.1193095930, -0.1193095930, 0.3306046932, 0.4662347571}; double c[6] = {0.0856622462, 0.1803807865, 0.2339569673, 0.2339569673, 0.1803807865, 0.0856622462}; float F (float x)

{ return ((1/sqrt(2 * 3.14)) * (exp (pow (x, 2) / 2 * -1)));

}

void main ()

{ clrscr ();

printf ("Input batas atas (b): "); fflush (stdin); scanf ("%f", &b); // b = 0.8;

printf ("Input batas bawah (a): "); fflush (stdin); scanf ("%f", &a); // a = 0;

sum = 0;

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

{ sum = sum + c[i] * F((b - a) * x[i] + (a + b) / 2);

}

I = (b - a) * sum;

printf ("Hasil integral: %g\n", I);

getch ();

};

Nilai akhir dari metode Gauss-Legendre enam titik terhadap fungsi ketiga adalah 0.341431.

2. Metode Integrasi Romberg

Perhitungan dengan menggunakan metode Romberg adalah sebagai berikut:

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

(19)

// a dan b = batas integral // epsilon = toleransi // delta = spasi terkecil // h = spasi

// n = jumlah segmen

float a, b, h, I[100], sum, epsilon, delta; int n, k, nmax, i, j, true = 1;

float F (float x) // f3

{ return (1/sqrt(2 * 3.14)) * (exp (-(pow(x, 2)/2)));

};

void main () {

clrscr ();

printf ("Nilai batas a (batas bawah): "); scanf ("%f", &a); fflush (stdin);

printf ("Nilai batas b (batas atas): "); scanf ("%f", &b); fflush (stdin);

printf ("Nilai toleransi: "); scanf ("%f", &epsilon); printf ("Nilai Delta: "); scanf ("%f", &delta);

h = b - a; I[1] = h / 2 * (F (a) + F (b)); n = 1; while (true) { h = h / 2; sum = F (a); for (i = 1; i < (pow (2, n)); i ++) sum = sum + 2 * F (a + i * h); I[n + 1] = h / 2 * (sum + F (b));

if (fabs (I[n + 1] - I[n]) <= epsilon)

{ printf ("Toleransi tercapai untuk metode trapesium pada n = %d\n", n);

printf ("Hasil integral = %f", I[n + 1]); break;

};

if (h <= delta)

{ nmax = n; n = 1;

while (n <= nmax && true)

{ for (k = 1, j = n; j > 1; k++, j--) { I[j] = (pow (4, k) * I[j + 1] - I[j]) / (pow(4, k) - 1);

if (abs (I[j] - I[j - 1]) <= epsilon)

{ printf ("Hasil integral

= %f", I[j]); true = 0; break; }; }; n = n + 1; }; delta = delta /2; } else n = n + 1; }; getch ();

(20)

};

Perhitungan dengan menggunakan metode Romberg dengan nilai a = 0, b = 1, epsilon = 0.0000001, dan delta = 0.001 adalah 0.341431.

3. Metode Simulasi Monte Carlo

Langkah-langkah metode simulasi dalam menghitung integral dari fungsi kedua adalah sebagai berikut:

> source ("d:/temp/f3.r") > curve(f, from = 0, to = 1) > > f function (x) { (1/sqrt(2 * 3.14)) * (exp ((-x ^ 2)/2)) } > > set.seed (10000) >

> mc <- runif (10000, min = 0, max = 1) >

> intmc = 1 * mean (f (mc)) > intmc

[1] 0.3407052

Perhitungan simulasi dari metode Monte Carlo menghasilkan nilai akhir pendugaan integrasi sebesar 0.3407052.

4. Metode Simulasi Quasi-Monte Carlo

Langkah-langkah metode quasi-Monte Carlo dalam melakukan pendugaan terhadap fungsi ketiga adalah sebagai berikut:

> require (fOptions)

Loading required package: fOptions Loading required package: fBasics

(21)

fBasics: Markets and Basic Statistics Loading required package: fCalendar

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fCalendar: Time, Date and Calendar Tools Loading required package: fSeries

Rmetrics, (C) 1999-2005, Diethelm Wuertz, GPL fSeries: The Dynamical Process Behind Financial Markets

Rmetrics, (C) 1999-2004, Diethelm Wuertz, GPL fOptions: Valuation of Options

[1] TRUE > > source ("d:/temp/f2.r") > curve(f, from = 0, to = 1) > > intqmc=0; qmc=0; sum=0 > > f function (x) { (1.2 - x) * (1 - (exp (20 * (x - 1)) )) * (x ^ 0.1) } > > qmc <- c(runif.sobol (10000,1)) > > for (i in 1:10000) + {sum = sum + f (qmc[i]) + } > sum [1] 6023.791 > > intqmc = 1 * sum / 10000 > intqmc [1] 0.6023791

Metode simulasi quasi-Monte Carlo menghasilkan nilai pendugaan integral sebesar 0.6023791.

Hasil perhitungan integral dari fungsi ketiga yang dilakukan oleh metode Gauss-Legendre, metode integrasi Romberg, metode simulasi Monte Carlo, dan metode simulasi quasi-Monte Carlo dapat dilihat pada tabel 4.3.

(22)

Tabel 4.3 Tabel perbandingan hasil perhitungan integral fungsi ketiga

Tabel 4.3 memperlihatkan bahwa sekali lagi metode quasi-Monte Carlo mampu menghasilkan perhitungan integral dengan error yang sangat kecil. Hal ini dikarenakan bentuk grafik dari fungsi tersebut adalah halus (smooth). Semakin halus bentuk grafik dari suatu integral, maka semakin tinggi kecermatan dari metode quasi-Monte Carlo. Sedangkan metode simulasi Monte Carlo menghasilkan nilai terburuk dari seluruh metode yang melakukan perhitungan

integral dari fungsi =

− 1 0 2 2 2 1 du e I u

π .Hal ini memperlihatkan bahwa semakin rumit sebuah persamaan fungsi yang akan diintegralkan, maka semakin lemah pendekatan yang dilakukan oleh metode Monte Carlo. Hal ini dapat disebabkan karena metode ini menggunakan bilangan pseudo-random yang dianggap berdistribusi seragam namun tidak sepenuhnya demikian sehingga menghasilkan perhitungan yang relatif lebih tidak akurat dibandingkan dengan metode pembanding yang lain.

4.2. Perangkat Pendukung Analisis

Berikut ini adalah beberapa perangkat pendukung yang digunakan dalam analisis perbandingan antara pendekatan metode numerik menggunakan integrasi Romberg dan Gauss-Legendre serta metode simulasi Monte Carlo dan quasi-Monte Carlo dalam

Gauss-Legendre Romberg Monte Carlo Quasi-Monte Carlo

Hasil 0.341431 0.341431 0.3407052 0.3414424

(23)

perhitungan persamaan integral tertentu. Perangkat pendukung ini terdiri dari perangkat keras (hardware) dan perangkat lunak (software).

4.2.1. Perangkat Keras

Perangkat keras yang digunakan penulis dalam analisis perbandingan antara pendekatan metode numerik menggunakan integrasi Romberg dan Gauss-Legendre serta metode simulasi Monte Carlo dan quasi-Monte Carlo dalam perhitungan integral tertentu adalah:

1. Prosesor 1,8 GHz.

2. Memori 1024 MB (512 MB x 2). 3. Harddisk 160 GB.

4. Resolusi monitor 1024*768 (XGA). 5. Keyboard dan mouse.

4.2.2. Perangkat Lunak

Perangkat keras yang digunakan penulis dalam analisis perbandingan antara pendekatan metode numerik menggunakan integrasi Romberg dan kuadratur Gauss serta metode simulasi Monte Carlo dan quasi-Monte Carlo dalam perhitungan integral tertentu adalah:

1. Microsoft Windows XP Professional Edition Service Pack 2 Final. 2. R Language 2.3.1.

Gambar

Gambar 4.1   Penggambaran secara grafik dari fungsi  ∫ + + − +=8.0 0 54326759004002000.2xxxx dxI
Tabel 4.1   Tabel perbandingan hasil perhitungan integral fungsi pertama
Gambar 4.2   Penggambaran secara  grafik dari fungsi
Tabel 4.2   Tabel perbandingan hasil perhitungan integral fungsi kedua
+3

Referensi

Dokumen terkait

Hasil yang diperoleh yaitu pertama, hasil eksplorasi di 11 kabupaten dengan topografi sedang hingga tinggi, telah dikumpulkan sebanyak 22 genotipe padi gogo lokal yang

Artinya: Telah menceritakan kepada kami Abdurrahman bin Ibrahim Al Dimasyqi berkata, telah menceritakan kepada kami Al Walid bin Muslim berkata, telah menceritakan kepada kami

Turunnya Nilai Tukar Petani subsector Perikanan Tangkap disebabkan Indeks yang Diterima Nelayan (It) mengalami penurunan sebesar 0,13 persen sedangkan Indeks yang

Ibnu Qayyim menjelaskan bahwa janin dalam kandungan sudah dikaruniai pendengaran dan penglihatan dan sudah memiliki fungsi ketika masih dalam kandungan yakni sejak

Dengan kata lain, server dalam hal ini adalah suatu cabang yang dimiliki oleh sebuah perusahaan, dimana cabang tersebut memiliki beberapa outlet lagi yang tersebar di sejumlah

Pengorganisasian di MTs Negeri 2 Pamekasan, yaitu menentukan koordinasi kelembagaan pada program adiwiyata yang merupakan kegiatan yang dipusatkan pada manajemen sumber

• Guru berkeliling mencermati siswa bekerja, mencermati dan menemukan berbagai kesulitan yang dialami siswa, serta memberikan kesempatan kepada siswa untuk bertanya hal-hal

Curahan tenaga kerja dilakukan pria maupun wanita dihitung pada setiap tahapan ke- giatan usahatani ubijalar dalam satuan hari orang kerja (HOK), kemudian dijelaskan seca-