Let's Share your experience!!!

Close (X)


Apakah Anda membutuhkan sistem aplikasi untuk data science, absensi, pertokoan, sistem mikrokontroler Arduino/ Raspberry Pi?
Kami menyediakan semua kebutuhan sistem penyimpanan data jurnal dan akuntansi untuk toko anda, Dapat dikembangkan untuk sistem koperasi, Apapun permasalahan pertokoan, kami solusinya.
Kami di sini semua
Silahkan daftar atau gunakan akses kami menggunakan username kasir dan pasword 123456

Wednesday, March 4, 2020

Metode Numerik dengan metode Biseksi dan codingannya dengan javascript

Salah satu metode numerik sederhana untuk pencarian akar persamaan yang telah
banyak dikenal adalah Metode Bagi-Dua (Bisection)

Algoritma Metode Bagi-Dua (Biseksi):
- Masukan : f (x) , a, b dan epsilon (nilai toleransi)
- Keluaran : akar

Langkah-langkah :

1. Periksa apakah f (a). f(b) < 0 , jika tidak pilih a dan b yang baru sehingga f (a). f (b) < 0

2. Hitung:
c = (a + b)/2

3.
i. Jika f (a). f(c) < 0 maka b = c, lanjutkan ke langkah 4
ii. Jika f (a). f(c) > 0 maka a = c, lanjutkan ke langkah ke langkah 4
iii. Jika f (a). f(c) = 0 maka akar persamaan adalah c, hitungan selesai

4. Hitung pada baris baru dengan perkiraan baru dari akar sesuai ketentuan batas bawah (a) dan batas atas (b) dari syarat pada langkah 3.

5. Jika abs|b−a| ≤ epsilon maka akar persamaan = c dan hitungan selesai. Sebaliknya, jika lebih besar dari nilai toleransi maka ulangi langkah 4.

Dari langkah-langkah tersebut didapatkan bahwa ada dua syarat untuk mendapatkan akar persamaan dari metode tertutup ini yaitu Jika  f (a). f(c) = 0 atau abs|b−a| ≤ epsilon . Oleh karena itu, kami mencoba untuk membuat codingan sederhana dengan bahasa pemrograman Javascript agar bisa langsung digunakan di halaman ini juga


 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
 <div>
  <h3 style="text-align:center;">Perhitungan Biseksi / Bagi Dua</h3>
 </div>
 <div>
    <table>
     <colgroup style="width:50%;"></colgroup>
     <colgroup style="width:50%;"></colgroup>
     <tr>
      <td>
       <label>Fungsi</label>
      </td>
      <td>
       <input id="fungsi" placeholder="(x*x)-(2*x)" />
      </td>
     </tr>
     <tr>
      <td>
       <label>a</label>
      </td>
      <td>
       <input id="selang1" placeholder="-1" />
      </td>
     </tr>
     <tr>
      <td>
       <label>b</label>
      </td>
      <td>
       <input id="selang2" placeholder="2" />
      </td>
     </tr>
     <tr>
      <td>
       <label>Limit</label>      
      </td>
      <td>
       <input id="limit" placeholder="0.01" />
      </td>
     </tr>
     <tr>
      <td colspan="2">
       <button id="calculate">Submit</button>
      </td>
     </tr>
    </table>
 </div>
 <div id="result"></div>
 <script type="text/javascript">
 function calcFn(fx, x) {
  var e = 2.71;
  var math = Math;
  var evaluated = eval(fx);
  var calcFx =  evaluated;
  return calcFx;
 };
 function cariSelang(fa,fb,fc) {
  if (fa*fc<0) {
   var selangBaru = "[a, c]<br/>c->b";
  } else {
   var selangBaru = "[c, b]<br/>c->a";
  }
  return selangBaru;
 };
 function cariLebar(a, b, c, fa,fb,fc) {
  if (fa*fc<0) {
   var Lebar = c - b;
  } else {
   var Lebar = c - a;
  }
  return Lebar;
 };
 jQuery('#calculate').click(function(){
  var no = 1;
  var a = eval($('#selang1').val());
  var b = eval($('#selang2').val());
  var c = (a+b)/2;
  var fx = $('#fungsi').val();
  var lim = $('#limit').val();
  var fa = calcFn(fx, a);
  var fb = calcFn(fx, b);
  var fc = calcFn(fx, c);
  var Selang = cariSelang(fa,fb,fc);
  var Lebar = cariLebar(a,b,c,fa,fb,fc);
  if (fa*fb>0) {
   document.getElementById("result").innerHTML = "<div><h3 style='text-align:center;'>f(a)*f(b)>0, proses dihentikan karena tidak ada akar!!!</h3></div>";
  } else {
  var result1 = "<div><h3 style='text-align:center;'>Tabel Perhitungan</h3></div>" +
   "<div>" +
   "<table style='width: max-content;'>" +
    "<tr>" +
     "<th>i</th>" +
     "<th>a</th>" +
     "<th>b</th>" +
     "<th>c</th>" +
     "<th>f(a)</th>" +
     "<th>f(b)</th>" +
     "<th>f(c)</th>" +
     "<th style='color: red;'>Selang <br/>Baru</th>" +
     "<th style='color: red;'>Lebar <br/>abs(b-a)</th>" +
    "</tr>";
  var result2 = "";
  //for(i = Lebar; i > lim; i=Lebar) {
  while(Math.abs(b-a)>lim) {
   result2 += "<tr>" +
     "<td>" + no + "</td>" +
     "<td>" + a + "</td>" +
     "<td>" + b + "</td>" +
     "<td><b>" + c + "</b></td>" +
     "<td>" + fa + "</td>" +
     "<td>" + fb + "</td>" +
     "<td>" + fc + "</td>";     
   if ((fa*fc == 0) || (Math.abs(Lebar) < lim)) {
    result2 +=  "<td style='color: red;'><b>selesai</b></td>" +
       "<td style='color: red;'>" + Lebar + "</td>" +
      "</tr>";
    break;
   } else {
    result2 +=  "<td style='color: red;'><b>" + Selang + "</b></td>" +
       "<td style='color: red;'>" + Lebar + "</td>" +
      "</tr>";
   }
   if (fa*fc<0) {
    var a = eval(a);
    var b = eval(c);
   } else {
    var a = eval(c);
    var b = eval(b);
   }
   no++;
   var c = (a+b)/2;
   var fa = calcFn(fx, a);
   var fb = calcFn(fx, b);
   var fc = calcFn(fx, c);
   var Selang = cariSelang(fa,fb,fc);
   var Lebar = cariLebar(a,b,c,fa,fb,fc);
   
  };
   var result3 = "</table></div>" +
    "<span>Akar persamaan dari f(x) = " + fx + " adalah <br/><b>" + c + "</b><br/> dengan nilai f(x) = <b>" + fc + "</b> dan total iterasi = " + no + "</span><br/>" +
    "Note: <span style='color: red;'>Warna merah hanya informasi saja untuk interval selanjutnya</span></div>" +
    "<footer style='background-color:#000;color:#fff;margin-top:30px;padding:10px 0px;'><div><span>Designed by: Web IoT</span></footer>";
  document.getElementById("result").innerHTML = result1 + result2 + result3;
  }
 });
 </script>
 

Berikut tampilannya:



Perhitungan Biseksi / Bagi Dua

Untuk melihat hasil grafik agar lebih berwarna silahkan kunjungi https://ahmadroihan.ilearning.me/metode-numerik/

Share:

0 komentar:

Post a Comment

Blog Archive