Metode Bisection – Assalamualaikum teman-teman semua kembali lagi bersama saya, dan kali ini saya akan membagikan sedikit pengetahuan saya tentang metode bisection kali saya akan memberikan coding tentang metode bisection, salam bisyaaaa… Semoga Bermanfaat ya teman-teman semua
Metode bisection adalah salah satu metode numerik yang digunakan untuk mencari akar dari suatu persamaan matematika. Metode ini cukup sederhana namun sangat efektif dalam menyelesaikan berbagai masalah dalam dunia matematika dan ilmu komputer.
Sebelum kita membahas lebih lanjut tentang metode bisection, mari kita pahami terlebih dahulu apa itu fungsi. Fungsi adalah suatu aturan yang menghubungkan setiap elemen dari suatu himpunan dengan elemen dari himpunan lainnya. Dalam konteks metode bisection, fungsi ini adalah persamaan matematika yang ingin kita cari akarnya.
Cara perhitungan metode bisection
Cara perhitungan metode bisection sangatlah sederhana. Pertama, kita harus menentukan dua nilai awal, yaitu nilai batas bawah dan nilai batas atas. Kedua, kita mencari nilai tengah dari dua nilai tersebut dengan menggunakan rumus (batas bawah + batas atas) / 2. Ketiga, kita mengganti salah satu nilai batas (batas bawah atau batas atas) dengan nilai tengah, tergantung pada tanda dari hasil fungsi pada nilai tengah tersebut. Jika hasil fungsi pada nilai tengah tersebut positif, maka nilai tengah akan menjadi batas atas. Jika hasil fungsi pada nilai tengah tersebut negatif, maka nilai tengah akan menjadi batas bawah. Keempat, kita mengulangi langkah kedua dan ketiga sampai kita mendapatkan akar dengan tingkat keakuratan yang diinginkan
Cara perhitungan metode bisection adalah sebagai berikut:
- Tentukan interval awal [a,b] yang memenuhi syarat teorema nilai antara.
- Hitung nilai tengah interval, yaitu c = (a+b)/2.
- Hitung nilai fungsi di titik c, yaitu f(c).
- Jika f(c) = 0, maka c adalah akar dari fungsi dan proses berhenti.
- Jika f(c) tidak sama dengan 0, maka bandingkan tanda f(c) dengan tanda f(a) atau f(b).
- Jika f(c) dan f(a) memiliki tanda yang sama, maka ganti a dengan c dan ulangi langkah 2 sampai 6.
- Jika f(c) dan f(b) memiliki tanda yang sama, maka ganti b dengan c dan ulangi langkah 2 sampai 6.
Implementasi metode bisection dapat dilakukan dengan menggunakan bahasa pemrograman seperti Python, C++, Java, atau MATLAB.
Kelebihan metode bisection adalah:
- Metode ini mudah dipahami dan diimplementasikan.
- Metode ini pasti konvergen ke akar yang dicari jika interval awal memenuhi syarat.
- Metode ini dapat memberikan estimasi error dari akar yang diperoleh.
Kekurangan metode bisection adalah:
- Metode ini memiliki laju konvergensi yang lambat dibandingkan dengan metode numerik lainnya.
- Metode ini hanya dapat mencari satu akar dalam satu interval.
- Metode ini membutuhkan evaluasi fungsi yang banyak untuk mencapai toleransi error yang diinginkan.
Algoritma Metode Bisection
- 0. Mulai
- 1. Masukkan batas bawah, batas atas, toleransi, dan jumlah iterasi maksimum
- 2. Hitung nilai fungsi pada batas bawah (F(a)) dan batas atas (F(b))
- 3. Periksa apakah F(a) * F(b) > 0. Jika ya, akar tidak ada di dalam rentang tersebut, langkah ke-10.
- 4. Jika tidak:
- Hitung titik tengah (m = (a + b) / 2)
- Hitung nilai fungsi pada titik tengah (F(m))
- Jika F(a) * F(m) <= 0, pindahkan batas atas menjadi m dan F(b) menjadi F(m)
- Jika tidak, pindahkan batas bawah menjadi m dan F(a) menjadi F(m)
- 5. Hitung ε = m – a
- 6. Jika ε < toleransi, akurasi sudah memenuhi, langkah ke-11
- 7. Jika jumlah iterasi maksimum telah tercapai, berhenti, langkah ke-11
- 8. Kembali ke langkah ke-5
- 9. Akar tidak ditemukan dalam rentang yang diberikan
- 10. Selesai
Contoh Program Metode Bisection
Berikut adalah beberapa contoh coding dari metode bisection yang dapat kalian coba.
1. Metode bisection menggunakan C
#include <stdio.h>
#include <math.h>
/* List of Variables
a = lower bound
b = upper bound
tol = tolerance
max_iter = maximum number of iterations */
float a, m, b, F_a, F_m, F_b, tol;
int max_iter;
float f(float x) {
return tan(x) - x - 0.5;
}
int main() {
int it = 0;
float epsilon;
printf("Lower bound = ");
scanf("%f", &a);
printf("Upper bound = ");
scanf("%f", &b);
printf("Tolerance = ");
scanf("%f", &tol);
printf("Maximum number of iterations = ");
scanf("%d", &max_iter);
F_a = f(a);
F_b = f(b);
if (F_a * F_b > 0) {
printf("Value of F(a) * F(b) > 0\n");
} else {
printf("It. a m b f(a) f(b) abs[f(b)-f(a)]/2\n");
do {
it = it + 1;
m = (a + b) / 2.0;
F_m = f(m);
printf("%3d %8.5f %8.5f %8.5f %8.5f %8.5f %8.2e\n", it, a, m, b, F_a, F_b, fabs(F_b - F_a) / 2);
epsilon = fabs(m - a);
if (F_a * F_m <= 0) {
b = m;
F_b = F_m;
} else {
a = m;
F_a = F_m;
}
} while (it <= max_iter && epsilon > tol);
if (it <= max_iter) {
printf("Tolerance met\n");
printf("Final result = %g\n", m);
} else {
printf("Final result = %g\n", m);
}
}
return 0;
}
2. Metode bisection menggunakan C++
#include <iostream>
#include <cmath>
using namespace std;
// Function to find the root using the Bisection Method
double bisectionMethod(double a, double b, double epsilon)
{
double c = a;
while ((b - a) >= epsilon) {
// Find middle point
c = (a + b) / 2;
// Check if middle point is root
if (func(c) == 0.0)
break;
// Decide the side to repeat the steps
else if (func(c) * func(a) < 0)
b = c;
else
a = c;
}
return c;
}
// Function to define the equation
double func(double x)
{
return x * x * x - x * x + 2;
}
int main()
{
double a = -200, b = 300, epsilon = 0.01;
double root = bisectionMethod(a, b, epsilon);
cout << "The root is: " << root << endl;
return 0;
}
3. Metode bisection menggunakan Python
python
# Mendefinisikan fungsi
def f(x):
return x**3 - x - 1
# Mendefinisikan interval awal
a = 1
b = 2
# Mendefinisikan toleransi error
tol = 1e-6
# Melakukan iterasi metode bisection
while abs(b-a) > tol:
# Menghitung nilai tengah
c = (a+b)/2
# Menghitung nilai fungsi di titik tengah
fc = f(c)
# Memeriksa apakah titik tengah adalah akar
if fc == 0:
break
# Memeriksa tanda fungsi di titik tengah dengan titik awal
elif fc*f(a) > 0:
# Mengganti titik awal dengan titik tengah
a = c
else:
# Mengganti titik akhir dengan titik tengah
b = c
# Mencetak hasil akhir
print("Akar dari fungsi adalah", c)
4. Metode bisection menggunakan Java
import java.util.Scanner;
public class MetodeBisection {
static double f(double x) {
return Math.tan(x) - x - 0.5;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double a, b, m, F_a, F_b, F_m, tol, epsilon;
int max_iter, it = 0;
System.out.print("Batas bawah: ");
a = input.nextDouble();
System.out.print("Batas atas: ");
b = input.nextDouble();
System.out.print("Toleransi: ");
tol = input.nextDouble();
System.out.print("Jumlah iterasi maksimum: ");
max_iter = input.nextInt();
F_a = f(a);
F_b = f(b);
if (F_a * F_b > 0) {
System.out.println("Nilai F(a) * F(b) > 0");
} else {
System.out.println("Iter a m b f(a) f(b) |f(b)-f(a)|/2");
do {
it = it + 1;
m = (a + b) / 2.0;
F_m = f(m);
System.out.printf("%3d %8.5f %8.5f %8.5f %8.5f %8.5f %8.2e\n", it, a, m, b, F_a, F_b, Math.abs(F_b - F_a) / 2);
epsilon = Math.abs(m - a);
if (F_a * F_m <= 0) {
b = m;
F_b = F_m;
} else {
a = m;
F_a = F_m;
}
} while (it <= max_iter && epsilon > tol);
if (it <= max_iter) {
System.out.println("Toleransi terpenuhi");
System.out.printf("Hasil akhir = %.5f\n", m);
} else {
System.out.printf("Hasil akhir = %.5f\n", m);
}
}
}
}
5. Metode bisection menggunakan MATLAB
function metodeBisection()
% Fungsi yang akan dicari akarnya
f = @(x) tan(x) - x - 0.5;
% Memasukkan batas bawah, batas atas, toleransi, dan jumlah iterasi maksimum
a = input('Masukkan batas bawah: ');
b = input('Masukkan batas atas: ');
tol = input('Masukkan toleransi: ');
max_iter = input('Masukkan jumlah iterasi maksimum: ');
F_a = f(a);
F_b = f(b);
if F_a * F_b > 0
disp('Nilai F(a) * F(b) > 0');
else
fprintf('Iter a m b f(a) f(b) |f(b)-f(a)|/2\n');
it = 0;
while it <= max_iter
it = it + 1;
m = (a + b) / 2;
F_m = f(m);
fprintf('%3d %8.5f %8.5f %8.5f %8.5f %8.5f %8.2e\n', it, a, m, b, F_a, F_b, abs(F_b - F_a) / 2);
epsilon = abs(m - a);
if F_a * F_m <= 0
b = m;
F_b = F_m;
else
a = m;
F_a = F_m;
end
if epsilon < tol
disp('Toleransi terpenuhi');
fprintf('Hasil akhir = %.5f\n', m);
return;
end
end
fprintf('Hasil akhir = %.5f\n', m);
end
end
Demikianlah pembahasan mengenai metode bisection. Semoga artikel ini dapat memberikan pemahaman yang lebih baik tentang metode ini. Jika kamu memiliki pertanyaan atau komentar, jangan ragu untuk meninggalkan komentar di bawah.