NIM
: C1355201030
METODE BISECTION
Metode Bidang Bebas atau lebih spesifik lagi Metode Bidang Paruh (Bisection) adalah
pemaruhan(nilai rata-rata) dari nilai estimasi akar suatu persamaan aljabar non-linear tunggal
yang dibentuk dengan cara menebak 2 buah harga awal pada interval [a,b] yang bertempatkedudukan mengapit (di kiri dan kanan) akar atau jawab yang sebenarnya. Metode ini pada
umumnya memerlukan 2 (dua) buah tebakan untuk harga-harga x-awal (x0 dan x1).
Solusi akar (atau akar-akar) dengan menggunakan Metode Bisection memiliki sifat-sifat
numeris sebagai berikut:
(a) Selalu melakukan pembagian dua (pemaruhan) interval [a,b] yang mengapit akara,
sehingga setelah n kali iterasi akan didapatkan akar persamaan yang berdekatan dengan
harga yang sebenarnya (solusi analitis), dengan memperhitungkan kriteria (akurasi) yang
diinginkan.
(b) Kecepatan atau laju konvergensi dari metode bisection dapat diperkirakan menggunakan
persamaan pendekatan:
(c) Panjang (b - a) menggambarkan panjang interval yang digunakan sebagai harga awal
untuk memulai proses iterasi dalam metode bisection; yang berarti bahwa metode ini
memiliki konvergensi linier dengan laju .
Pada saat panjang interval [a,b] tidak melampaui suatu harga t (yang di dalamnya terdapat
akar a), sedemikian rupa sehingga jarak akar a tersebut dengan ekstremitas interval tidak
melebihi t, maka pada saat itu toleransi perhitungan sudah dapat dilakukan.
Adapun algoritma metode bisection adalah sebagai berikut :
Asumsi awal yang harus diambil adalah: menebak interval awal [a,b] dimana f(x) adalah
kontinu padanya, demikian pula harus terletak mengapit (secara intuitif) nilai akar a,
sedemikian rupa sehingga: f (a) f (b) 0
Algoritma BISECTION (f,a,b,akar,e,iter,itmax,flag)
1)
2)
3)
4)
5)
6)
7)
8)
float e;
float xbaru,xmak;
a=-1;
b=0;
e=0.0001;
xmak=20;
for(i=0;i<10;i++)
{
fa=a*exp(-a)+1;
fb=b*exp(-b)+1;
if(fa*fb>0)
{
cout<<berhenti;
}
else
{
xbaru=(a+b)/2;
fx=xbaru*exp(-xbaru)+1;
if(fx*fa<0)
{
b=xbaru;
}else{
a=xbaru;
}
}
cout <<fx<< <<fa<<endl;
}
return 0;
}
Hasil :
Metode Posisi Salah merupakan salah satu solusi pencarian akar dalam penyelesaian
persamaan-persamaan non linier melaui proses iterasi (pengulangan). Persamaan non linier ini
biasanya berupa persamaan polynomial tingkat tinggi, eksponensial, logaritmik, dan kombinasi
dari persamaan-persamaan tersebut. Seperti metode biseksi, Metode regula falsi juga termasuk
dalam metode tertutup. Pada umumnya pencarian akar dengan metode biseksi selalu dapat
menemukan akar, namun kecepatan untuk mencapai akar hampiran sangat lambat, oleh karena
itu untuk mempercepat pencarian akar tersebut dibutuhkan metode lain yaitu metode regula
falsi. kehadiran metode regula falsi adalah sebagai modifikassi dari metode biseksi, yang
kinerjanya lebih cepat dalam mencapai pendekatan nilai akar.
Solusi akar (atau akar-akar) dengan menggunakan Metode Regula-Falsi merupakan modifikasi
dari Metode Bisection dengan cara memperhitungkan kesebangunan yang dilihat pada kurva
berikut:
Perhatikan kesebangunan 2 segitiga Pcb dan PQR, sehingga persamaan berikut dapat
digunakan:
Atau
Sehingga diperoleh
Persamaan di atas disebut sebagai persamaan rekursif dari Metode Regula Falsi.
Kecepatan atau laju konvergensi dari Metode Regula-Falsi sama dengan Metode Bisection,
yaitu konvergensi linier, namun dengan faktor pengali (konstanta) yang lebih besar dari 1 2
(factor pengali berkisar antara 1/ 2 1).
Adapun algoritma dari metode false position adalah :
Asumsi awal yang harus diambil adalah sama seperti pada Metode Bisection, yaitu: menebak
interval awal [a,b] dimana f(x) adalah kontinu padanya, demikian pula interval tersebut harus
terletak mengapit (secara intuitif) nilai akar a, sedemikian rupa sehingga: f (a) f (b) 0
Meskipun pada algoritma berikut masih mengandung beberapa kelemahan, namun secara
umum masih sangat menguntungkan untuk dipakai. Perbaikan dan modifikasi secara numeris
dilakukan oleh Brent (Atkinson, 1978), untuk algoritma tersebut.
Algoritma REGFAL(f,a,b,akar,e,iter,itmax,flag)
1.
Tebak harga interval [a,b]; tentukan e; dan itmax
2.
Set xold = 2*b-a; iter = 0; flag = 0;
3.
Tentukan atau hitung akar = c = b f(b) [(b a)/(f(b) f(a)); iter = iter + 1;
4.
Jika f(b)f(c) 0 maka a = c jika tidak b = c;
5.
Jika abs(c xold) e maka flag = 1 atau jika iter > itmax maka flag = 2 atau jika tidak
maka iter = iter + 1 dan akar = c;
6.
Jika flag = 0 ulangi ke nomor 3;
7.
Selesai.
Sehingga formula rekursif dari Metode REGULA-FALSI: dapat dituliskan dalam resume
berikut:
= 0.
#include <stdio.h>
#include <math.h>
double f(double x)
{
return
- x*x*x;
}
double FalsiMethod(double s, double t, double e, int m)
{
int n,side=0;
double r,fr,fs = f(s),ft = f(t);
for (n = 1; n <= m; n++)
{
r = (fs*t - ft*s) / (fs - ft);
if (fabs(t-s) < e*fabs(t+s)) break;
fr = f(r);
if (fr * ft > 0)
{
t = r; ft = fr;
if (side==-1) fs /= 2;
side = -1;
}
else if (fs * fr > 0)
{
s = r; fs = fr;
if (side==+1) ft /= 2;
side = +1;
}
else break;
}
return r;
}
int main(void)
{
printf("%0.15f\n", FalsiMethod(0, 1, 5E-15, 100));
return 0;
}
Sumber : http://m-d-amrullah.blogspot.com/