Dokumen tersebut merupakan laporan simulasi Monte Carlo untuk menghampiri nilai integral tentu dengan melakukan 8 percobaan dengan jumlah dart yang berbeda. Laporan tersebut berisi algoritma simulasi, contoh output, tabel hasil percobaan, formula hasil fitting data, dan kesimpulan bahwa semakin banyak dart yang digunakan maka hasil simulasi akan semakin mendekati nilai integral secara analitik.
Modul ajar IPAS Kls 4 materi wujud benda dan perubahannya
Integral
1. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
1
TUGAS 2
SIMULASI MONTE CARLO
Soal
Buatlah program untuk menghampiri nilai integral tentu ∫ dengan
menggunakan simulasi Monte carlo. Lakukan 8 percobaan untuk banyak dart
n=10,50,100,500,1000,5000,10000,100000. Run program sebayak 10 kali 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.
Penyelesaian:
f(x)= ∫ )dx
Hasil analitik integral yang diperoleh adalah 0.6421525619
Gambar 1.Grafik Luas Integral sin (X2
)
2. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
2
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 + (max-min)*rand
a. for(i=0,i<N,i++)
b. if (fabs(f(x))>c, maka
c=fabs(f(x))
5. 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—
6. Output:
a. Luas area dart (res):
res=(N/Nmax).(c.(b-a))
b. x,y, dan Luas integral f(x) {run sebanyak 10 untuk masing-masing 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)
3. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
3
{
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 CARLOn";
cout << "toleh :Arnita Iriantinn";
cout<<"Menghitung nilai integral dengan Monte Carlon--------------------------------------------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));//seed
// 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));}
}
4. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
4
//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=%fn",res);
return 0;
}
5. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
5
Hasil running sebagai berikut :
Plot grafik di GNU plot
N=10
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7
'1MonteCarlo_data.txt'
sin(x*x)
F(x)
Gambar.2. Plot Luas Integral dengan N=10
X
6. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
6
N =100000
Hasil/output yang di hasilkan untuk masing – masing dart (N):
F(x)
X
Gambar.3. Plot Luas Integral dengan N=100000
Tabel 1. Hasil Luas Integral untuk masing-masing dart (N)
N Hasil Rata-rata
10 0.786095
50 0.690463
100 0.684591
500 0.596899
1000 0.666019
5000 0.615502
10000 0.656469
100000 0.656469
Tabel 2. Hasil Luas Rata- Rata untuk setiap N
7. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
7
Formulasi hasil data fitting
Data Luas integral dengan jumlah dart (N) pada grafik dengan mengunakan regresi linear
menghasilkan formulasi data fitting sebagai berikut:
Y= -2.10-7
X + 0.672
y = -2E-07x + 0.672
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 20000 40000 60000 80000 100000 120000
LuasIntegral
N
Grafik N terhadap Luas Integral
Series1
Linear (Series1)
N(Dart) TREND
10 0.671998
50 0.67199
100 0.67198
500 0.6719
1000 0.6718
5000 0.671
10000 0.67
100000 0.652
Grafik 4. Plot Luas Integral Rata-rata terhadap N
Gambar 5. Grafik Model Regresi Linear
Tabel 3. Data Curve Fitting
8. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
8
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.
0.64
0.645
0.65
0.655
0.66
0.665
0.67
0.675
TREND
Grafik Curve Fitting
Series1
0.65
0.655
0.66
0.665
0.67
0.675
0 20000 40000 60000 80000 100000 120000
Luas
N
Grafik Regresi linear Luas Terhadap
banyak Dart
Series1
Gambar 7. Grafik Data fitting Menggunakan Regresi
Linear
Gambar 6. Grafik Curve Fitting
9. ARNITA IRIANTI/20914009
COMPUTATIONAL SCIENCE ITB
22/11/2014
9
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.