7 ModSim Montecarlo Luas

15
Pemodelan dan Simulasi Monte Carlo: Luasan Slide: Tri Harsono Politeknik Elektronika Negeri Surabaya (PENS) Prodi Tek. Komputer

description

nk

Transcript of 7 ModSim Montecarlo Luas

Pemodelan dan Simulasi Monte Carlo: Luasan

Slide: Tri Harsono

Politeknik Elektronika Negeri Surabaya (PENS)

Prodi Tek. Komputer

Simulasi Monte Carlo

Modelf(x)

x1

x2

x3

y1

y2

� Model deterministik parametrik akan memetakan suatuhimp. variabel masukan ke suatu himp variabel keluaran. � lihat gambar di atas.

� Monte Carlo: metode utk mengevaluasi secara berulangsuatu model deterministik menggunakan himpunanbilangan acak sbg masukan.

Simulasi Monte Carlo

� Monte Carlo sering digunakan bila model adalah kompleks, non linier, melibatkan banyak parameter tak tentu ygsaling berhubungan.

� Simulasi dapat mengulang evaluasi model sampai lebih� Simulasi dapat mengulang evaluasi model sampai lebihdari 10000 kali.

� Simulasi Monte Carlo termasuk metode pencuplikan(sampling) karena masukan dibangkitkan sec. acak daridistribusi probabilitas untuk menyimulasikan prosespencuplikan dari populasi sebenarnya.

Perambatan Ketidaktentuan(Uncertainty Propagation)

� Metode Monte Carlo salah satu dari sekianmetode utk menganalisis perambatanketidaktentuan,ketidaktentuan,

� Tujuannya adalah menentukan bagaimanavariasi acak, kurang pengetahuan, error akan mempengaruhi kepekaan unjuk kerjaatau keandalan sistem yg dimodelkan.

Perambatan Ketidaktentuan(Uncertainty Propagation)

� Gambar berikut memperlihatkan prinsip perambatanstokastik ketidaktentuan yg merupakan prinsip dasar dibelakang simulasi Monte Carlo.

y1

Modelf(x)

5.26±0.04

x1

x2

x3

Reliability = 87.6%

y2

Langkah-langkah simulasi Monte Carlo berdasarkan perlambatan ketidaktentuan

1. Buat suatu model parametrik y = f(x1, x2, …, xq);

2. Bangkitkan suatu himpunan masukan acak xi1, xi2, …, xiq;i2 iq

3. Evaluasi model & simpan hasilnya sbg yi;

4. Ulangi langkah 2-3 untuk i = 1, …, n;

5. Analisis hasilnya menggunakan histogram, statistik, selang kepercayaan.

Menghitung Luas di bawah suatukurva/fungsi menggunakan Monte CarloIlustrasi …

yi

Titik-titik di luarkurva

f(x)

xi

Titik-titik di dalamatau pada kurva

f(x)

Menghitung Luas di bawah suatukurva/fungsi menggunakan Monte Carlo

� Menghitung luas di bawah kurva f(x) = Asin(x).

� Misal suatu titik sembarang dilempar sec.acak padakotak berukuran dxπ, maka probabilitas Pa bahwa titikakan berada di dalam kurva adalah:

� Maka luas daerah di bawah kurva adalah:

Menghitung Luas di bawah suatukurva/fungsi menggunakan Monte Carlo

� Prosedur:1. Ambil 2 bilangan acak xi, 0≤xi≤π dan yi, 0≤yi≤d;

2. Periksalah apakah (xi,yi) adalah titik di bawah atau padakurva dengan cara testing:kurva dengan cara testing:

� Jika yi > f(xi) artinya titik di luar daerah yang diarsir,

� Jika yi ≤ f(xi) artinya titik pada kurva atau di dalamdaerah yang diarsir,

3. Tambahkan 1 ke suatu penghitung untuk menghitung jumlahtitik yang dilempar dan titik yang masuk pada daerah yang diarsir.

Menghitung Luas di bawah suatukurva/fungsi menggunakan Monte Carlo

4. Ulangi langkah 1-3 dg mengambil jumlah titik yang banyak.

5. Hitung:

6. Cari luas kurva = Pa*(luas OABC)

� Script dalam bahasa C: implementasi simulasiintegrasi dg metode Monte Carlo di bawah ini.

Menghitung Luas di bawah suatukurva/fungsi menggunakan Monte Carlo Script dalam bahasa C

#include <stdio.h>#include <stdlib.h> //rand() #include <math.h>

#define PI 3.14#define N 10000

int i, cacah=0;float xi, yi, t, pa, luas, luas_segi4;

float fungsi(float x){ float ftmp;

ftmp = (float)( t * sin(x) );

return ftmp; }

Menghitung Luas di bawah suatu kurva/fungsimenggunakan Monte Carlo Script dalam bahasa C [lanjutan …]

void main(void){printf("Mulai Simulasi \n"); t = 5.0; luas_segi4 = (float)(t * PI);printf("luas_segi4 = [%f] \n", luas_segi4); //getchar(); for (i=0; i<=N; i++){xi = (float)( PI * rand() / RAND_MAX ); xi = (float)( PI * rand() / RAND_MAX ); yi = (float)( t * rand() / RAND_MAX ); if (yi <= fungsi(xi)) cacah += 1;pa = (float)cacah/(float)i; luas = pa * luas_segi4; printf("%i: pa = [%f], luas = [%f] \n", i, pa, luas); //getchar();

}printf("Luas 5.0 * sin(x) antara 0 dan pi adalah : %f (nilai eksak 10.0) \n",

luas);

printf("Selesai Simulasi \n"); }

Hasil eksekusiprogram C di atas

Soal (Tugas)

� Buatlah simulasi integrasi dg metode Monte Carlo utk luasan daerah di bawah kurva y(x) = 4e-2x dengan batas integrasi 0 – 2.= 4e dengan batas integrasi 0 – 2.

� Bandingkan dengan hasil eksak dari integral tersebut. Apa yang anda bisa simpulkandengan hasil perbandingan itu?