Selasa, 24 November 2009

Pembangkitan Data

Sebelum menjelang UTS, berbagai persiapan telah dilakukan. Salah satunya belajar bagaimana cara pembangkitan data,baik diskrit maupun kontinu.
Dengan berpikir keras akhirnya q dapat menjalankan beberapa pembangkitan data. Berikut ini syntax untuk random data:
1. RANDOM DATA DISTRIBUSI UNIFORM
program proguniform;
uses wincrt;
var i,n:integer;a,b,x:real;

function uniform(a,b:real):real;
var u:real;
begin
u:=random;
uniform:=(b-a)*u+a;
end;

begin
write('a= ');readln(a);
write('b= ');readln(b);
write('n= ');readln(n);
for i:=1 to n do
begin
x:=uniform(a,b);
writeln(i,'.','',x:2:5);
end;
end.

2. RANDOM DATA DISTRIBUSI BERNOULLI
program progbernoulli;
uses wincrt;

var i,n:integer;x,p:real;

function bernoulli(p:real):real;
var u:real;
begin
u:=random;
if u<=p then bernulli:=1 else bernoulli:=0
end;

begin
write('p= ');readln(p);
write('n= ');readln(n);
for i:=1 to n do
begin
x:=bernoulli(p);
writeln(i,'.','',x:2:3);
end;
end.

3. RANDOM DATA DISTRIBUSI BINOMIAL
program progbinom;
uses wincrt;

var i,n:integer;x,p:real;

function bernoulli(p:real):real;
var u:real;
begin
u:=random;
if u<=p then bernoulli:=1 else bernoulli:=0
end;

function binom(n:integer;p:real):real;
var u,sum:real;i:integer;
begin
sum:=0;
for i:=1 to n do
begin
u:=bernoulli(p);
sum:=sum+u;
end;
binom:=sum;
end;


begin
write('p= ');readln(p);
write('n= ');readln(n);
for i:=1 to n do
begin
x:=binom(n,p);
writeln(i,'.','',x:2:3);
end;
end.

4. RANDOM DATA DISTRIBUSI EXPONENSIAL
program progeksp;
uses wincrt;

var i,n:integer;x,beta:real;

function eksponen(beta:real):real;
var u:real;
begin
u:=random;
eksponen:=-beta*ln(u);
end;

begin
write('beta= ');readln(beta);
write('n= ');readln(n);
for i:=1 to n do
begin
x:=eksponen(beta);
writeln(i,'.','',x:2:3);
end;
end.

5. SERTA DISTRIBUSI YANG LAIN
program tugasaqcampur;
uses wincrt;

var varians,rata2,z1,z2,x,z1n1,z1n2,alfa,beta,alfa1,alfa2,a,b,y,p:real;
i,n,pilih:integer;mau:char;

procedure inisialisasi;
begin
x:=0;
end;

Function Exp (b : real) : real;
Var u : real;
Begin
u := random;
Exp := -b * ln(u);
End;

Procedure Normal (rata2,varians : real ; Var z1,z2 : real);
Var u1,u2,v1,v2,w,y,x1,x2 : real;
Begin
Repeat
u1 := random;
u2 := random;
v1 := 2 * u1 - 1;
v2 := 2 * u2 - 1;
w := sqr(v1) + sqr(v2);
if w <= 1 then
begin
y := sqrt ((-2*ln(w))/w);
x1 := v1 * y;
x2 := v2 * y;
z1 := sqrt (varians) * x1 + rata2;
z2 := sqrt (varians) * x2 + rata2;
end
Until w <= 1;
End;

procedure lognormal(rata2,varians : real;
Var zln1,zln2 : real);
Var y1, y2 : real;
begin
Normal (rata2,varians,y1,y2);
zln1 := exp(y1);
zln2 := exp(y2);
end;

Function Gamma (alfa,beta : real):real;
Var kelar : boolean;
a,b,u,p,y,q,teta,d,u1,u2,v,w,z : real;
Begin
if alfa < 1 then
begin
b := 1 + alfa/exp(1);
Repeat
kelar := false;
u := random;
p := b * u;
if p > 1 then
begin
y := -ln((b-p)/alfa);
u := random;
if exp((alfa-1)*ln(y)) >= u then
begin
Gamma := beta * y;
kelar := true
end
end
else
begin
y := exp (ln(p)/alfa);
u := random;
if exp(-y) >= u then
begin
Gamma := beta * y;
kelar := true
end
end
Until kelar;
end
else
if (alfa > 0.99999999) and (alfa < 1.0000001) then
begin
y := Exp(1);
Gamma := beta * y;
end
else
begin
a := 1 / sqrt(2*alfa-1);
b := alfa - ln(4);
q := alfa + 1/a;
teta := 4.5;
d := 1 + ln(teta);
Repeat
kelar := false;
u1 := random;
u2 := random;
v := a * ln(u1/(1-u1));
y := alfa * exp(v);
z := sqr(u1) * u2;
w := b + q * v - y;
if (w+d-teta*z >= 0) then
begin
Gamma := beta * y;
kelar := true;
end
else
if w >= ln(z) then
begin
Gamma := beta * y;
kelar := true
end
Until kelar;
end
End;

Function FBeta (alfa1,alfa2,a,b : real):real;
Var u1,u2,y : real;
Begin
u1 := Gamma (alfa1,1);
u2 := Gamma (alfa2,1);
y := u1/(u1+u2);
Fbeta := a + (b-a) * y;
End;

Function Geometri (p : real) : real;
Var u : real;
Begin
u :=random;
Geometri := ln(u) / ln(1-p);
End;

begin
writeln('mau bangkitkan distribusi apa?');
writeln('1. distribusi normal');
writeln('2. distribusi lognormal');
writeln('3. distribusi gamma');
writeln('4. distribusi beta');
writeln('5. distribusi geometri');
writeln('jadi mau apa?');
readln(pilih);
case pilih of
1: begin
write('varian='); readln(varians);
write('rata2='); readln(rata2);
write('n ='); readln(n);
for i:=1 to n do begin
Normal(rata2,varians,z1,z2);
writeln(i,'.',z1:5:3,' ',z2:5:3);
end;
end;
2: begin
write('rata2 ='); readln(rata2);
write('varian ='); readln(varians);
write('n ='); readln(n);
for i:=1 to n do begin
lognormal(rata2,varians,z1n1,z1n2);
writeln(i,'.',z1n1:5:3,' ',z1n2:5:3);
end;
end;
3: begin
write('alfa='); readln(alfa);
write('beta='); readln(beta);
write('n='); readln(n);
for i:=1 to n do
begin
x:=gamma(alfa,beta);
writeln(i,'.',x:5:3);
end;
end;
4: begin
write('alfa1 ='); readln(alfa1);
write('alfa2 ='); readln(alfa2);
write('a ='); readln(a);
write('b ='); readln(b);
write('n ='); readln(n);
for i:=1 to n do
begin
x:=Fbeta(alfa1,alfa2,a,b);
writeln(i,'.',x:5:3);
end;
end;
5: begin
writeln('masukan banyak data yang diinginkan:');
readln(n);
writeln('peluang sukses=');
readln(p);
for i:=1 to n do
begin
x:=Geometri(p);
writeln('data bangkitan :',x:0:3);
end;
end;
end;
end.



Minggu, 06 September 2009

CONTOH SIMULASI: pencarian BIAS

Contoh simulasi pencarian bias ini merupakan tugas kuliah TEKNIK SIMULASI yang membuat saya pusing tujuh keliling. Mau bagaimana lagi, namanya tugas harus dikerjakan :)

Pada contoh ini akan digunakan makro minitab, (klo belum ada yang punya minitab nanti akan saya link kan untuk download ya :) )

Penggunaan makronya sebagai berikut:
macro
bootvar x
mconstant i n b lower upper statbias se_bias
mcolumn x y stat
let n=10
let b=1000
do i=1:b
sample n x y;
replacement.
let stat(i)=stde(y)**2
enddo
let statbias=mean(stat)
let sebias=stde(stat)
histo stat
sort stat stat
let lower=stat(25)
let upper=stat(975)
print statbias sebias lower upper
endmacro

KALO SALAH, AQ MINTA MAAF....:(

CONTOH SIMULASI: pencarian PHI

Dalam dunia statistik, simulasi sering digunakan untuk mencari suatu fungsi distribusi probabilitas. Sering kali simulasi tersebut menggunakan software minitab 15 atau pascal. Sebagai contoh untuk pencarian nilai phi.

Sebelumnya saya beberkan fakta-fakta mengenai phi.

  • Pada tahun 1706, seorang ahli Matematika bahasa Inggris memperkenalkan abjad Yunani phi (π) untuk mewakili nilai yang dikatakan. Namun, pada tahun 1737, Euler resmi mengadopsi simbol ini untuk mewakili bilangan.
  • Pada tahun 1897, legislatif dari Indiana mencoba menentukan nilai yang paling akurat untuk phi. Namun ternyata kebijakan ini tidak berhasil.
  • Sebagian besar orang pada waktu itu tidak mengetahui fakta bahwa lingkaran memiliki jumlah sudut yang tak terbatas. Nilai dari phi adalah banyaknya diameter lingkaran yang akan dipaskan dengan keliling lingkaran.
  • Nilai dari phi adalah 22 / 7 dan ditulis sebagai π = 22 / 7 atau π= 3,14.
  • Nilai phi dengan 100 tempat desimal pertama adalah: 3,1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
  • Fakta menarik lainnya adalah Anda tidak akan menemukan nol dalam 31 digit pertama dalam dari phi.
  • Seorang pengusaha di Cleveland, AS, menerbitkan buku pada pada tahun 1931 untuk phi, maka angka itu akan merentang dari New York City ke Kansas.
  • Tahukah Anda Yasumasa Kanada, seorang profesor di Universitas Tokyo?? Ia membutukan waktu sekitar 116 jam untuk menemukan sebanyak 6442450000 tempat desimal Phi dengan komputer.
  • Pada tahun 1706, John Machin memperkenalkan suatu rumus untuk menghitung nilai phi, yaitu : π/ 4 = 4 * arc tan (1 / 5) - arc tan (1 / 239).
  • Pada tahun 1949, ia juga menghabiskan waktu sekitar 70 jam untuk menghitung 2.037 tempat desimal phi menggunakan ENIAC (Electronic Numeric Integrator and Computer).
  • Seorang Ahli Matematika Jerman, Ludolph van Ceulen, mendedikasikan seluruh hidupnya untuk menghitung 35 tempat desimal pertama phi
Sekarang kita kembali pada bahasan simulasmengumumkan bahwa nilai pi adalah 256/81.Jika Anda mencetak miliaran dari desimal i. Kita akan mencari nilai phi sebagai contoh aplikasi simulasi. Dengan menggunakan rumus :













Algoritma:
  1. Mulai
  2. i= 0
  3. i=i+1
  4. Membangkitkan 1000 titik dengan x~U(0,1) dan y~ U(0,1)
  5. π= 4*m/n
  6. jika i kurang dari 1000 maka kembali ke langkah 3
  7. Menuliskan π
  8. Selesai
Dan akhirnya inilah syntax nya:

program phi;
uses wincrt;
var x,y,p:real;
i,m,n:integer;
begin
randomized;
n:=1000;m:=0;
for i:=1 to n do
begin
x:=random;
y:=random;
if (x*x+y*y)<=1 then m:=m+1
end;
p:=4*m/n;
writeln(p);
end.

SELAMAT MENCOBA!!!!

Minggu, 30 Agustus 2009

Aplikasi dari Teknik Simulasi

Ada banyak sekali aplikasi dari simulasi. Contohnya adalah sebagai berikut: (Untuk informasi lebih lanjut, klik contoh dibawah ini dan dapatkan filenya)

1. Antrian SPBU

2. Analisa Proses Kontruksi Berulang (bidang Teknik Sipil)

3. Pengembangan model simulasi pola tanam daerah irigasi

4. Simulasi dengan menggunakan teknologi komputer untuk mencegah kegagalan bangunan

5. Aircraft Simulator

6. Artillery Simulator

yang lain menyusul ya;-)

Kelebihan dari penggunaan simulasi adalah:

  1. Banyak sistem kompleks di dunia nyata adalah model stokastik, analisis yang cukup sulit dan rumit. Simulasi menawarkan cara untuk menanggulanginya
  2. Penampilan dari sistem yang diajukan dapat dievaluasi untuk kemudian hari
  3. Banyak sekali alternative dari sistem yang dapat dibandingkan
  4. Kontrol dari percobaan sebuah sistem akan lebih baik jika menggunakan simulasi daripada langsung terjun ke dunia nyata
  5. Sistem dapat dipelajari dalam waktu singkat maupun waktu luang
  6. Sangat berguna bagi sitem ketika respon suatu kejadian random diutamakan
Kekurangan dari penggunaan simulasi adalah:
  1. Beberapa model mungkin akan menghabiskan banyak waktu dan biaya untuk pengembangannya
  2. Model simulasi yang terbaik sekalipun hanya mampu menyajikan estimator atau perkiraan untuk penampilan sebuah sistem
  3. Semua alternatie jawaban harus diketahui sebelum percobaan simulasi diterapkan
  4. Solusi terbaik yang terpilih terbatas pada himpunan alternative
  5. Akan ada banyak sekali kemungkinan jawaban yang harus dievaluasi, seperti contoh: apakah keputusan yang telah diambil rumit atau tidak mungkin diterapkan
  6. Project simulasi biasanya menghasilkan keputusan yang mengagumkan walaupun keputusan tersebut tidak valid. Hal ini biasa disebut solusi yang tidak beralasan dan tidak mempunyai latar belakang yang jelas.

Kamis, 27 Agustus 2009

Pendahuluan: Teknik Simulasi


Simulasi adalah sistem tiruan dari suatu sistem atau proses di dunia nyata yang berhubungan dengan waktu.

Dalam simulasi kita dapat:

1. menirukan sebuah sistem dengan menggunakan sebuah model
2. melakukan sederetan uji coba untuk tiruan tersebut
3. mengambil suatu kesimpulan dari gambaran proses di dunia nyata dari simulasi tersebut

Dalam simulasi akan diperlukan sebuah model. Model merupakan representasi dari sistem nyata.
Jenis-jenis model, diantaranya:
1. Physical Model, contoh: mainan, boneka
2. Mathematical Model, contoh: persamaan diferensial, persamaan integral, model stokastik
3. Computer Model, contoh: video games

Jenis-jenis model simulasi:
1. Model simulasi statik VS Model simulasi dinamis
Model statik: model yang mewakili suatu sistem pada keadaan tertentu. Waktu tidak berperan disini
Model dinamis: model yang mewakili sistem dalam perubahannya terhadap waktu
2. Model simulasi deterministik VS model simulasi stokastik
Model deterministik: model yang tidak memiliki komponen probabilistik (random)
Model stokastik: model yang memiliki komponen input random dan menghasilkan output random juga
3. Model simulasi kontinu VS model simulasi diskrit
Model kontinu: model yang statusnya berubah secara kontinu terhadap waktu
MOdel diskrit: model yang statusnya berubah secara instan pada titik-titik waktu yang terpisah



;;