Mencari Pi dengan Javascript MenggunakanMetode Monte Carlo

2021-09-15

example

tech

javascript

coding

Kita tau, kita dapat mencari luas atau keliling lingkaran dengan pi (), tapi sebenarnya tau tidak sih darimana asalnya bilangan yang disebut phi atau pi itu.

Dalam Wikipedia pada artikel yang berjudul Pi. Tertulis bilangan (kadang-kadang ditulis pi) adalah sebuah konstanta dalam matematika yang merupakan perbandingan keliling lingkaran dengan diameternya. Nilai dalam 20 tempat desimal adalah 3,14159265358979323846. Banyak rumus dalam matematika, sains, dan teknik yang menggunakan π, yang menjadikannya salah satu dari konstanta matematika yang penting.

Daripada berlama-lama mari kita langsung coba aja mencari nilai pi menggunakan metode Monte Carlo.

Daftar Isi
  1. Apa Itu Metode Monte Carlo ?
  2. Membuat Perbandingan Untuk Mencari Pi
  3. Membuat Titik Sampel
  4. Membedakan Titik di Dalam Lingkaran dan di Dalam Persegi
  5. Membuat Fungsi dan Perulangan

Apa Itu Metode Monte Carlo ?

Sebelum kita menggunakan Metode Monte Carlo, mari kita ketahui dahulu apa itu Metode Monte Carlo ?, Metode Monte Carlo adalah algoritme komputasi untuk mensimulasikan berbagai perilaku sistem fisika dan matematika. Penggunaan klasik metode ini adalah untuk mengevaluasi integral definit, terutama integral multidimensi dengan syarat dan batasan yang rumit. Metode Monte Carlo

Mudahnya, Metode Monte Carlo yang akan mensimulasikan berbagai perilaku, dapat dibuat secara perulangan yang acak untuk mensimulasikan banyak perilaku yang ada. Metode Monte Carlo digunakan dengan istilah sampling statistik.

Jadi pada masalah ini kita dapat menggunakan Metode Monte Carlo sebagai metode pemecah masalah karena pi merupakan perbandingan keliling lingkaran dengan diameternya. Sehingga kita dapat menggunakan perulanagan untuk membuat sampel-sampel.

Membuat Perbandingan Untuk Mencari Pi

Seperti penjelasan pi di atas kita harus membandingkan antara lingkaran dengan diameternya atau bisa kita asumsikan sebagai persegi

perbandingan persegi dan lingkaran

untuk mempermudah dalam menulis code kita hanya perlu mengambil 1/4 bagian dari lingkaran dan juga perseginya. tetapi hal ini tidak akan berpengaruh pada perhitungan dan rumus. Tinggal kita masukkan saja beberapa variable yang kita ketahui.

rumus

Membuat Titik Sampel

Dari rumus yang ada kita harus membuat point-point sampel sebagai perbandingan persegi dengan lingkarannya, karena kita hanya membutuhkan 1/4 lingkaran maka kita hanya perlu membuat random angka antara 0 sampai 1.

const x = Math.random();
const y = Math.random();

Membedakan Titik didalam Lingkaran dan didalam Persegi

Pastinya kita harus membedakan antara point di dalam lingkaran dan di dalam persegi dengan menggunakan jarak atau jari-jari lingkaraannya, karena kita membuat point random antara hanya 0 - 1 maka jarak point terluar dari lingkaran adalah satu. Maka kita dapat menggunakan kurang dari sama dengan untuk mengetahui bahwa titik itu berada di dalam lingkaran

Dalam mengukur jarak kita dapat menggunakan rumus pitagoras. Tetapi pada kasus ini kita tidak membutuhkan akar pangkat karena semua akar yang di bawah 1 akan menghasilkan angka di bawah 1 pula, dan semua yang diatas 1 akan menghasilkan angka di atas 1 pula. Tetapi terserah jika tetap ingin menggunakan akar pangkat.

// with square root
const distance = Math.sqrt(x ** 2 + y ** 2);
if (distance <= 1) {
  // berada di dalam lingkaran
}
// without square root
const distance = x ** 2 + y ** 2;
if (distance <= 1) {
  // berada di dalam lingkaran
}

Membuat Fungsi dan Perulangan

Setelah semua selesai dibuat kita dapat membuat dan mengetahui satu titik maka kita harus membuat banyak titik sebagai sampel dengan mengulangnya, dan membuatnya menjadi sebuah fungsi.

// index.js

function findPi(manyLoop) {
  let pointInCircle = 0;
  let pointTotal = 0;

  for (let index = 0; index < manyLoop; index++) {
    const x = Math.random();
    const y = Math.random();

    const distance = x ** 2 + y ** 2;

    if (distance <= 1) {
      pointInCircle += 1;
    }
    pointTotal += 1;
  }

  return (4 * pointInCircle) / pointTotal;
}

// example
// you can change the value for loop
console.log(findPi(100));

Pada code diatas pada baris ke pertama saya membuat fungsi baru yang bernama findPi()

Pada baris kedua dan ketiga saya membuat variable untuk menampung hasil dari perulangan

Setelah itu saya membuat perulangan dengan banyak yang ditentukan oleh parameter fungsi findPi()

Anda dapat menjalankannya dengan menjalankan

node index

atau jika anda tidak mempunyai nodeJs anda dapat menjalankannya pada web browser anda dan melihat hasilnya pada console browser anda

<script src="index.js"></script>

Sekian dari saya, jika anda ingin membuat code tersebut dapat di visualisasikan anda dapat melihat dari monte-carlo-pi. Pada program itu dia membuat code untuk lingkaran penuh dan dapat divisualisasikan pada web browser.

Saya membuat blog post ini terinspirasi dari video di channel You Tube Joma Tech. Can you solve my favorite interview question? (math + cs).

refrensi:

  1. Can you solve my favorite interview question? (math + cs)
  2. Pi
  3. Metode Monte Carlo
  4. monte-carlo-pi

Gundar Link

Gunadarma HomepagePerpustakaan GunadarmaLePKoM GunadarmaLabti Gunadarma

Site Link

BlogAbout

© Nurhuda Joantama Putra 2022