Anda di halaman 1dari 10

ARNITA IRIANTI/20914009

COMPUTATIONAL SCIENCE
ITB
22/11/2014

TUGAS 2
SIMULASI
MONTE

Soal

CARLO

Buatlah program untuk


integral
d nga
tentu
menghampiri nilai menggunakan
n
untuk e
8Run program sebayak
n=10,50,100,500,1000,5000,10000,100000.
10 dar
kali
simulasi Monte carlo. Lakukan
banyak
untuk setiap n dan
rata-ratakan hampiran integral tentu yang diperoleh. Buat dokumentasi yang
berisi algoritma,contoh output, table hasil 8 percobaan (n dan rata-rata
hampiran integral), formula hasil data fitting, dan kesimpulan dari simulasi
ini.
Penyelesa
ian:

f(x)=

)dx

Hasil
analitik integral yang diperoleh adalah
0.6421525619

Gambar 1.Grafik Luas Integral sin (X )

Algoritma yang digunakan sebagai


berikut :
1. Bangkitkan bilangan random (unirand)
2. Inisialisasi Nmax(dart yang digunakan),c(nilai maksimum fungsi),
a(min),b(max),dan f(x)
3. input a dan b
4. Pengsakalaan : s=min + (maxmin)*rand a. for(i=0,i<N,i+
+)
b. if (fabs(f(x))>c, maka
c=fabs(f(x))
5.

6.

Menentukan luas di bawah atau


diatas sumbu y if (f(x)>0)
a. luas diatas sumbu
x: y=c*unirand,
maka: if
(y<=f(x)), N++
b. luas di bawah sumbu x:
y= -c*unirand, maka:
if (y>=f(x)), N
Output:
a. Luas area dart (res):
res=(N/Nmax).(c.(b-a))
b. x,y, dan Luas integral f(x) {run sebanyak 10 untuk masingmasing Nmax}

Program menggunakan C++ dengan source code sebagai berikut :


//Soal : Integral dari sin(X^2), dgn batas :0-2pi
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <fstream>
#include <stdlib.h>
#include <time.h>

using namespace std;

double unirand()
{
return(double) rand()/ (double) RAND_MAX;

}
double f(double x)

{
double y= sin(x*x);
return y;
}
int main()
{
double res,x,y,a,b,c=0.; // deklarasi
int N=0, Ntot, i, percobaan;
//inisialisasi a=0.; //batas atas
b=2*3.1416;//batas bawah
system("TITLE TEKNIK SIMULASI MONTE CARLO" );
system("Color 1F");
cout << "\t TEKNIK SIMULASI MONTE CARLO\n";
cout << "\toleh :Arnita Irianti\n\n";
cout<<"Menghitung nilai integral dengan Monte
Carlo\n--------------------------------------------\n";
cout<<"Percobaan ke = ";cin>>percobaan;
cout<<"Fungsi: f(x)= sin(x^2)\n";
cout<<"batas integrasi:
x=[0,2*pi]\n"; cout<<"Masukkan
jumlah dart = ";cin>> Ntot;
srand(time(NULL));//s
eed
// mencari maximum fungsi dengan cara
Monte-Carlo for (i=0;i<Ntot;i++)
{
x=a+(b-a)*unirand();
if (fabs(f(x))>c) {c=fabs(f(x));}
}

ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE
ITB
22/11/2014

//Mencari integral fungsi dengan cara


monte-carlo ofstream out;
out.open("1MonteCarlo_data.txt");//hasil untuk di plot
d gnu plot for(i=0;i<Ntot;i++)
{
x=a+(b-a)*unirand();
if (f(x)>0.)
{
y=c*unirand();
if(y<=f(x)){N++;} //luas datas sumbu x
}
else
{
y=-c*unirand();
if (y>=f(x)){N--;} //luas dibawah sumbu x
}
out<<x<<" "<<y<<"\n";
}
out.close();
res =(double)N/(double)Ntot*c*(b-a);
printf("Hasil Integrasinya=%f\n",res);

return 0;
}

ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE
ITB
22/11/2014
Hasil

running sebagai berikut :

Plot grafik di GNU plot


N=1
0

'1MonteCarlo_data.t
xt'
sin(x*x
)

1
0.8

0.6

F(x)

0.4
0
.2
0

-0.2
-0.4
-0.6
-0.8
-1
0

X
Gambar.2. Plot Luas Integral dengan N=10

F(x)

N =100000

X
Gambar.3. Plot Luas Integral dengan N=100000

Hasil/output yang di hasilkan untuk masing masing dart (N):

Tabel 1. Hasil Luas Integral untuk masing-masing dart (N)


N

Hasil Ratarata 0.7860


10
95
50
0.6904
63
100
0.6845
91
500
0.5968
99
1000
0.6660
19
5000
0.6155
02
10000
0.6564
69
100000
0.6564
69
Tabel 2. Hasil Luas Rata- Rata untuk setiap N

Grafik 4. Plot Luas Integral Rata-rata terhadap N

Formulasi hasil data fitting

0.9

Grafik N terhadap Luas


Integral

Luas Integral

0.8
y = -2E-07x +
0.672

0.7
0.6
0.5
0.4

Series1

0.3

Linear (Series1)

0.2
0.1
0

0
20000
40000
100000
120000

60000

80000

Gambar 5. Grafik Model Regresi Linear

Data Luas integral dengan jumlah dart (N) pada grafik dengan
mengunakan regresi linear menghasilkan formulasi data fitting sebagai
berikut:
-7
Y= -2.10 X + 0.672
N(Dart)
10
50
100
500
1000
5000
10000
100000

TREND
0.67199
80.6719
9
0.6719
80.671
9
0.671
80.67
10.67

0.65
2
Tabel 3. Data Curve Fitting

0.675

Grafik Curve
Fitting

0.67
TREND

0.665
0.66

0.655

Series1

0.65
0.645
0.64

Gambar 6. Grafik Curve Fitting

Grafik Regresi linear Luas


Terhadap
banyak
Dart

0.675

Luas

0.67

0.665
0.66

Series1

0.655
0.65 0

20000

40000
N

60000

80000

100000

120000

Gambar 7. Grafik Data fitting Menggunakan Regresi

Grafik diatas menggambarkan trend line yang menuju ke bawah di


mana merupakan hasil luas secara numerik yang mendekati hasil
analitiknya, jika dart (N) yang digunakan semakin banyak.

ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE
ITB
22/11/2014

Kesimpulan :
1.

Simulasi Monte Carlo adalah suatu model probabilistik yang


melibatkan unsur kemungkinan dengan menggunakan bilangan acak
(random number) dilakukan dengan bantuan komputer.
2. Prinsip kerja dengan membangkitkan bilangan bilangan acak atau
sampel dari suatu variable acak yang telah diketahui distribusinya
sehingga simulasi Monte Carlo meniru hasil analitiknya secara numerik
sehingga dengan semakin banyak angka random yang digenerate maka
semakin akurat hasilnya. Hal ini terlihat bahwa semakin banyak dart (N)
sehingga hasil simulasi luas integral mendekati hasil analitik yang
diperoleh.