Metode Numerik Secant - Kelompok 5

Metode Secant merupakan merupakan perbaikan dari metode regula-falsi dan newton raphson dimana kemiringan dua titik dinyatakan sacara diskrit, dengan mengambil bentuk garis lurus yang melalui satu titik. Metode Secant digunakan untuk menaksirkan akar dengan menggunakan diferensi daripada turunan untuk memperkirakan kemiringan/slope. (Blog Universitas Brawijaya)

Rumus Metode Secant

x2 = x1 – ( (f(x1) (x1 – x0)) / ( f(x1) -f(x0) )

Metode secant merupakan salah satu metode terbuka untuk menentukan solusi akar dari persamaan non linear. Dengan prinsip utama:

Prosedur

Ambil dua titik awal, misal x0 dan x1. Ingat bahwa pengambilan titik awal tidak disyaratkan alias pengambilan secara sebarang. Algoritma Metode Secant adalah sebagai berikut:

  1. Definisikan fungsi f(x)
  2. Definisikan torelansi error dan iterasi maksimum
  3. Masukkan dua nilai pendekatan awal yang di antaranya terdapat akar yaitu x0 dan x1
  4. Hitung f(x0) dan f(x1) sebagai y0 dan y1
  5. Untuk iterasi I = 1 s/d n atau |f(x2)| maka x2 = x1 – ( (f(x1) (x1 – x0)) / ( f(x1) -f(x0) )
  6. Nilai x0 dan x1 untuk iterasi selanjutnya adalah nilai x1 dan x2 secara berurutan
  7. Akar persamaannya adalah nilai x2 di iterasi terakhir ketika |f(x2)| < toleransi error

Variabel

Daftar variabel dan operasi aritmatika yang digunakan adalah sebagai berikut (javascript):

Kalkulator Grafik

Masukan persamaan f(x) untuk menentukan titik awal dan titik akhir garis secant

Alat Hitung

Hanya ubah pada daerah yang bisa diubah nilai variabelnya, dan jangan ubah nama variabelnya


        try {
            const timeStart = Date.now();
                
            // ⬇ -- Daerah yang bisa diubah nilai variabelnya -- ⬇
                
            const f = (x) => e ** x - 5 * x ** 2;
            const epsilon = 0.00001;
            const r = 20;
            const x0 = 0.5;
            const x1 = 1;
            
            // ⬆ -- Batas daerah -- ⬆
            
            const e = 2.7182818285;
            const calcX2 = (f, x0, x1) => x1 - (f(x1) * (x1 - x0)) / (f(x1) - f(x0));
            const comma = epsilon.toString().split(".")[1].length + 1;
            
            let tempValue = {x0, x1};
            let result = [];
          
            for (let iteration = 0; iteration <= r; iteration++) {
              let f_x0 = f(tempValue.x0);
              let f_x1 = f(tempValue.x1);
              let x2 = calcX2(f, tempValue.x0, tempValue.x1);
              let f_x2 = Math.abs(f(x2));
          
              result.push({
                  "x0": tempValue.x0.toFixed(comma),
                  "x1": tempValue.x1.toFixed(comma),
                  "f(x0)": f_x0.toFixed(comma),
                  "f(x1)": f_x1.toFixed(comma),
                  "x2": x2.toFixed(comma),
                  "f(x2)": f_x2.toFixed(comma),
                });
                
                if (f_x2 < epsilon) break;
                
                tempValue = {x0: tempValue.x1, x1: x2};
            }
            
            const timeEnd = Date.now();
            const time = timeEnd - timeStart;
            
            renderTable(result, time)
            window.scrollBy(0, 5000)
        } catch (error) {
            renderError(error.message)
        }
    

Hasil

Pustaka