Anda di halaman 1dari 8

Metode bisection

penerapan Metode Bagi-Dua (Bisection) pada Analisis Pulang-


Pokok (Break Even)

(Tugas ini disusun sebagai bahan diskusi mata kuliah Metode Numerik Semester 3 Kelas C)
Dosen Pengampu: Anif Hanifa Setianingrum

Kelompok 1
Anindia Tri Cahyani (11200910000053)
Alivya Ananda Putri (11200910000057)
Alif Faqih Azmi Hakim (11200910000058)
Naufal Syafiq Maulizar (11200910000063)
Andy Rachman (11200910000067)
Reyhan Makarim (11200910000070)

FAKULTAS SAINS DAN TEKNOLOGI


UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA
2020/2021
1. Tinjauan teori
Metode Bisection atau disebut juga dengan metode bagi dua merupakan salah satu
jenis metode pencarian instrumental dimana selang/range selalu dibagi dua atau membagi
range menjadi 2 bagian. Metode ini ideal untuk mencari suatu hasil dengan menggunakan
iterasi atau perhitungan berulang.
Ide awal metode ini adalah metode table, dimana suatu area dibagi menjadi N
bagian. Pada Metode Bisection ini jika suatu fungsi berubah tanda pada suatu selang,
maka nilai fungsi dihitung pada titik tengah, kemudian lokasi akar ditentukan sebagai titik
tengah selang bagian terjadinya perubahan tanda.
Dalam algoritma Metode Bagi-Dua digunakan peubah-peubah: a sebagai ujung
kiri selang, b sebagai ujung kanan selang, dan c sebagai titik tengah. Dari penjelasan
diatas, Algoritma Metode Bagi-Dua dapat dibentuk sebagai berikut.

Karena metode ini selalu menghasilkan akar maka dikatakan bahwa metode ini
selalu konvergen. Besarnya epsilon tergantung pada ketelitian yang diinginkan, semakin
kecil epsilon akan semakin teliti taksiran/hampiran akar yang diperoleh.
Metodelogi Bisection adalah membagi range menjadi 2 bagian, dari dua bagian ini
dipilih bagian mana yang mengandung akar dan membuang bagian yang tidak
mengandung akar. Hal ini dilakukan berulang-ulang hingga diperoleh akar persamaan.
Secara geometri metode ini diilustrasikan pada Gambar:
Solusi akar (atau akar-akar) dengan menggunakan Metode Bisection memiliki
sifat-sifat numeris sebagai berikut:
 Selalu melakukan pembagian dua (pemaruhan) interval [a,b] yang mengapit akar a,
sehingga setelah n kali iterasi akan didapatkan akar persamaan yang berdekatan
dengan harga yang sebenarnya (solusi analitis), dengan memperhitungkan ‘kriteria’
(akurasi) yang diinginkan.

2. Contoh kasus
Praktek rekayasa di bidang ekonomi baik yang mensyaratkan bahwa semua
proyek, produksi, dan perencanaan harus didekati dengan cara yang biaya yang
efektif. Seorang ilmuwan yang terlatih baik haruslah menguasai analisa biaya.
Masalah ini dinamakan ”masalah pulang-pokok”. Masalah ini dipergunakan untuk
menentukan titik pada mana dua pilihan alternatif setara. Pilihan-pilihan demikian
dihadapi dalam semua bidang rekayasa. Walaupun terlihat sederhana namun akan
sangat rumit apabila masalah tersebut tidak dapat diselesaikan secara analitis atau
manual. Salah satu alternative penyelesaian masalah ini adalah dengan metode
numerik.
Secara singkat dengan membawa semua suku persamaan ke satu ruas,diperoleh
rumus pencarian akar pulang pokok sebagai berikut:
Contoh soal :
Identifikasi titik tempat dua komputer mempunyai nilai setara menunjukkan
kapan Pentium menjadi pilihan yang lebih baik. Secara grafis, titik tersebut
berpadanan dengan perpotongan dua kurva dalam Gambar 3.1.

3. Codingan
a. Matlab
% Clearing Screen
clc

% Setting x as symbolic variable


syms x;

% Input Section
y = input('Enter non-linear equations: ');
a = input('Enter first guess: ');
b = input('Enter second guess: ');
e = input('Tolerable error: ');

% Finding Functional Value


fa = eval(subs(y,x,a));
fb = eval(subs(y,x,b));

% Implementing Bisection Method


if fa*fb > 0
disp('Given initial values do not bracket the root.');
else
c = (a+b)/2;
fc = eval(subs(y,x,c));
fprintf('\n\na\t\t\tb\t\t\tc\t\t\tf(c)\n');
while abs(fc)>e
fprintf('%f\t%f\t%f\t%f\n',a,b,c,fc);
if fa*fc< 0
b =c;
else
a =c;
end
c = (a+b)/2;
fc = eval(subs(y,x,c));
end
fprintf('\nRoot is: %f\n', c);
end

output :

Enter non-linear equations: ((-1400* 1.2^x)/(1.2^x - 1)) - ((150*x)/(1.2^x -1)) + 3750


Enter first guess: 2
Enter second guess: 10
Tolerable error: 0.001

a b c f(c)
2.000000 10.000000 6.000000 1191.883923
2.000000 6.000000 4.000000 487.108793
2.000000 4.000000 3.000000 -191.208791
3.000000 4.000000 3.500000 194.173884
3.000000 3.500000 3.250000 15.676726
3.000000 3.250000 3.125000 -83.795424
3.125000 3.250000 3.187500 -33.124625
3.187500 3.250000 3.218750 -8.497017
3.218750 3.250000 3.234375 3.645773
3.218750 3.234375 3.226563 -2.411542
3.226563 3.234375 3.230469 0.620623
3.226563 3.230469 3.228516 -0.894581
3.228516 3.230469 3.229492 -0.136760
3.229492 3.230469 3.229980 0.241986
3.229492 3.229980 3.229736 0.052627
3.229492 3.229736 3.229614 -0.042063
3.229614 3.229736 3.229675 0.005283
3.229614 3.229675 3.229645 -0.018390
3.229645 3.229675 3.229660 -0.006554

Root is: 3.229668


>>

b. C++
#include <iostream>
#include <iomanip>
#include <cmath>

#define f(x) ((-1400* pow(1.2,x))/(pow(1.2,x) - 1)) - ((150*x)/(pow(1.2,x)-1)) + 3750

using namespace std;

int main()
{
/* Declaring required variables */
float x0, x1, x, f0, f1, f, e;
int step = 1;
/* Setting precision and writing floating point values in fixed-point notation. */
cout << setprecision(6) << fixed;

/* Inputs */
top:
cout << "Enter first guess: ";
cin >> x0;
cout << "Enter second guess: ";
cin >> x1;
cout << "Enter tolerable error: ";
cin >> e;

/* Calculating Functional Value */


f0 = f(x0);
f1 = f(x1);

/* Checking whether given guesses brackets the root or not. */


if (f0 * f1 > 0.0)
{
cout << "Incorrect Initial Guesses." << endl;
goto top;
}
/* Implementing Bisection Method */
cout << endl
<< "****************" << endl
<< "Bisection Method" << endl
<< "****************" << endl;
do
{
/* Bisecting Interval */
x = (x0 + x1) / 2;
f = f(x);

cout << "Iteration-" << step << ":\t x = " << setw(10) << x << " and f(x) = " << setw(10) << f(x) <<
endl;

if (f0 * f < 0)
{
x1 = x;
}
else
{
x0 = x;
}
step = step + 1;
} while (fabs(f) > e);

cout << endl


<< "Root is : "<< x << endl;

return 0;
}

Output :

4. Perhitungan manual
rumus fungsi pulang-pokok : f(x) = ((-1400* 1.2^x)/(1.2^x - 1)) - ((150*x)/(1.2^x -1)) + 3750

Berdasarkan Gambar di atas diketahui bahwa akarnya berada antara x=2 dan x=10 . Ambil
a=2 dan b=10 dan epsilon = 0.001.
iterasi a b c F(a) F(b) F(c)
1 2 10 6 -1513,63 1791,42 1191.883923
2 2 6 4 -1513,63 1191,88 487.108793
3 2 4 3 -1513,63 487,1 -191.20891
4 3 4 3.5 -191.2 487,1 194.173884
5 3 3.5 3.25 15.676726
6 3 3.25 3.125 -83.79542
7 3.125 3.25 3.1875 -33.1246254
8 3.1875 3.25 3.21875 -8.497017
Dst… Dst… Dst… Dst… Dst… Dst… Dst…
20 3.229645 3.229675 3.229660 -0.006554
untuk memberikan suatu hasil hampiran yang halus/akurat dengan epsilon sebesar 0,001. Titik
pulang-pokok terjadi pada iterasi ke-20 yaitu x=3.23.

5. Referensi
 Insani,Nur. “penerapan Metode Bagi-Dua (Bisection) pada Analisis Pulang-Pokok
(Break Even)”
 https://helmidadang.wordpress.com/2012/03/29/916/

Anda mungkin juga menyukai