
- Inisialisasi fungsi f(x) = e^(-x) – x;
- Inisialisasi n = 1;
- Inisialisasi e = 0.00001;
- Tentukan batas atas (xa) dan bats bawah (xb);
- Tentukan banyak iterasi (n);
- Tentukan nilai xc = (xb + xa )2;
- Tentukan fa(xa), f(xb), f(xc);
- Tentukan nilai absolut f(xc);
- Cetak xa, xb, xc, f(xa), f(xb), f(xc);
- Jika f(xa) * (xb) > =0;
- Ya : xa = xc;
- Tidak : xb = xc;
- tambah nilai n dengan 1;
- Jika absolt f(xc)< e atau n >=10;
- Ya : keluar dari perulangan;
- Tidak : kembali ke 5;
- Cetak xa, xb, xc, f(xa), f(xb), f(xc);
Keterangan : n merupakan jumlah seberapa banyak kita
mengulang proses / biseksi.
e merupakan nilai error
Listing :
#include
#include
#include
double fungsi (double);
double biseksi (double, double);
main(){
double x1, x2, fx1, fx2,
indeks, a, temp;
int n, i=1;
puts("\t\t >>>> METODE BISEKSI dan TABEL
<<<<");
puts("\t\t\t\tf(x)=a^2 -
27 ");
printf(" Masukan batas bawah : ");
scanf("%lf",
&x1);
printf(" Masukan batas atas : ");
scanf("%lf",
&x2);
printf(" Masukan banyak iterasi : ");
scanf("%d", &n);
puts("
==========================================================================");
puts("\t\t\t\tMETODE
TABEL");
a = (x2 - x1) / n;
fx1 = fungsi(x1);
fx2 = fungsi(x2);
temp = x1;
puts(" no
x\t fx");
do{
fx1 = fungsi(temp);
fx2 = fungsi(temp+a);
printf(" %3d
%.7lf %.7lf\n",i,temp, fx1);
if (fx1*fx2<=0)
indeks = temp;
fx1 = fx2;
temp = temp + a;
i++;
}while(i<=n);
printf(" Hasil berada diantara %.5lf dan
%.5lf\n\n",indeks, indeks+a );
biseksi(indeks,indeks+a);
}
double fungsi (double a){
double hasil;
hasil =exp(-a)- a;
return hasil;
}
double biseksi (double a, double b){
double c, fd,fb, fc, abs;
int no=1;
puts("\t\t\t\tMETODE
BISEKSI");
puts("
==========================================================================");
printf("\ta\t b\t
c\t\tfa\t fb\t fc\t abs\n");
puts(" ==========================================================================");
for(;;no++){
c = (b +a)/2;
fd = fungsi(a);
fb = fungsi(b);
fc = fungsi(c);
abs= b-a;
printf("%3.d %.7lf
%.7lf %.7lf %.7lf %.7lf %.7lf
%.7lf\n",no, a,b,c,fd,fb,fc, abs);
if (fd*fc>=0)
a = c;
else
b=c;
if (abs<0 .0001="" o:p="">0>
printf("%3.d
%.7lf %.7lf %.7lf %.7lf %.7lf %.7lf
%.7lf\n",no+1, a,b,c,fd,fb,fc, abs);
puts("
==========================================================================");
break;
}
}
printf("\n Nilai x
mendekati : %.9lf\n Nilai fungsi : %.9lf \nNilai absolut %.9lf",c,fc,
abs);
return(0);
}
Output :
Keterangan
: listing program merupakan campuran
metode tabel dan metode biseksi.
Kelemahan
metode Biseksi :
- Proses Iterasi tergolong cukup lambat
- Jika akar persamaan lebih dari satu, makas harus mencari akar satu persatu, tidak bisa sekaligus.\
- Tidak bisa mencari akar bilangan imaginer (kompleks)
Referensi : http://arteraktiv.com/
Sekian untuk post hari ini, semoga bermanfaat sobat. Budayakan untuk berbagi
karena berbagi itu menyenangkan J.
Sekilas motivasi :
Orang-orang
yang melontarkan kritik pada kita hakikatnya adalah pengawal jiwa kita yang
bekerja tanpa bayaran.~Corrie ten Boom.
gan kok gw compile gk bisa . eror pada line 71-79
ReplyDeletebang itu yg line 71 kok eror yg absnya
ReplyDeletebisa,, coba di cek lagi,, ini pake bahasa C
Deletemas minta kodingannya dong, di copas malah error
ReplyDeletekodingnya itu gan,, sama aja,,
Deletepake bahasa C,, coba di cek lagi
mau nanya dong, dibaris 66 o dan p nya kok gak terbaca ya? Thanks
ReplyDelete#include
Delete#include
#include
#include
#define maks 20
main (){
float x[maks][maks], tempx[maks][maks], temp2[maks], temp;
int i,j, f=3, k=0;
char a='`';
cout<<"\n--------------------------------------------------------------------------------\n";
printf("\ Metode Eliminasi Gauss \n");
printf("\ Ax1 + Bx2 + Cx3 + .... =Y \n");
cout<<"\n--------------------------------------------------------------------------------\n";
do{
printf("===> Masukan Jumlah Ordo Matrik : ");
scanf("%d", &f);
}while(f<2);
for(i=0;i Persamaan Ke-%d\n", i+1);
for(j=0;j Nilai %c : ",a+j+1);
scanf("%f", &x[i][j]);
if(j==f-1){
printf("\n---> Nilai y : ");
scanf("%f", &x[i][j+1]);
break;
}
}
}
cout<<"\n--------------------------------------------------------------------------------\n";
printf("\ Hasilnya Adalah Sebagai Berikut \n");
cout<<"\--------------------------------------------------------------------------------\n";
printf("\nDalam Bentuk Augmented Matriks\n");
for(i=0;i<f;i++){
printf("|");
for(j=0;j<f+1;j++){
printf("%5.1f", x[i][j]);
}
printf(" |\n");
}
//tukar
for(i=0;i<3;i++){
if(x[0][0]==0){
for(j=0;j<f+1;j++){
tempx[i][j]=x[0][j];
}
for(j=0;j<f+1;j++){
x[0][j]=x[i+1][j];
}
for(j=0;j<f+1;j++){
x[i+1][j]=tempx[i][j];
}
}
}
//hitung
for(i=0;i<f;i++){
temp=x[i][i];
for(k=i;k<=f;k++){
x[i][k] /= temp;
}
for(j=i+1;j<=f;j++){
temp2[i] = x[j][i];
for(k=i;k<=f;k++){
x[j][k] -= temp2[i] * x[i][k];
}
}
}
puts("");
//cetak
printf("\nSetelah Eliminasi : \n");
for(i=0;i<f;i++){
printf("|");
for(j=0;j<f+1;j++){
printf("%5.1f", x[i][j]);
}
printf(" |\n");
}
puts("");
system("Pause");
}