Hai
Sobat bloger. Bagaimana kabarnya? Semoga masih diberi kesehatan. Aamiin. Jadwal
hari ini adalah berbagi tentang Metode Regula Falsi. Metode Regula Falsi adalah
salah satu metode numerik yang digunakan untuk mencari akar dari suatu
persamaan dengan memanfaatkan kemiringan dan selisih tinggi dari dari dua titik
batas range. Sebenarnya metode ini hampir sama dengan Metode Biseksi, tapi
titik pendekatan yang digunakan pada metode ini berbeda dengan Metode Biseksi.
Rumus titik pendekatan tersebut adalah :
C = (f(b) * a – f(a)*b) / f(b) –
f(a)
- Inisialisasi fungsi f(x) = e – x;
- Inisialisasi n = 1;
- Inisialisasi e = 0.00001;
- Tentukan batas atas (xa) dan bats bawah (xb);
- Tentukan banyak iterasi (n);
- Tentukan fa(xa), f(xb), f(xc);
- Tentukan nilai xc = (f(xb) * xa – f(xa)*xb) / f(xb) – f(xa);
- 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
Perhatikan
indeks 7 , itu yang membedakan Metode
Regula Falsi dan Metode Biseksi.
Listing :
#include
#include
#include
double fungsi (double);
double regulafalsi (double, double, double);
main(){
double x1=0, x2=1, fx1, fx2,
indeks, a, temp, e=0.0001;
int n=10, i=1, cek =0;
puts("\t\t >>>> METODE BISEKSI dan TABEL
<<<<");
puts("\t\t\t\tf(x)=e ^x -
x ");
printf(" Masukan batas bawah : ");
scanf("%lf",
&x1);
printf(" Masukan batas atas : ");
scanf("%lf",
&x2);
printf(" Masukan banyak iterasi : ");
scanf("%d", &n);
printf(" Masukan nilai error : ");
scanf("%lf",
&e);
puts("
==========================================================================");
puts("\t\t\t\tMETODE
TABEL");
a = (x2 - x1) / n;
fx1 = fungsi(x1);
fx2 = fungsi(x2);
temp = x1;
puts(" ==========================");
puts(" | no |
x\t | fx |");
puts(" ==========================");
do{
fx1 = fungsi(temp);
fx2 = fungsi(temp+a);
printf(" |%3d |%9lf|%9lf|\n",i,temp, fx1);
if (fx1*fx2<=0){
indeks = temp;
cek = 1;
}
if (i==n && fx1
*fx2>=0 && cek ==0){
printf(" Perkiraan nilai batas bawah dan batas atas
Anda salah\n");
printf(" ");
exit(0);
}
fx1 = fx2;
temp = temp + a;
i++;
}while(i<=n);
puts(" ==========================");
printf(" Hasil berada diantara %5lf dan
%.5lf\n\n",indeks, indeks+a );
regulafalsi(indeks,indeks+a,
e);
}
double fungsi (double a){
double hasil;
hasil =exp(-a)- a;
return hasil;
}
double regulafalsi (double a, double b, double e){
double c, fa,fb, fc, abs1;
int no=1;
puts("\t\t\t\tMETODE
REGULA FALSI");
puts("
============================================================================");
printf(" | no |
a | b
| c |
fa | fb
| fc | abs
|\n");
puts("
============================================================================");
for(;;no++){
fa = fungsi(a);
fb = fungsi(b);
c = (fb*a -
fa*b)/(fb-fa);
fc = fungsi(c);
abs1 = fc;
if (fc <0 data-blogger-escaped-o:p="">
abs1 = -1*fc;
printf(" |%3d
|%9lf|%9lf|%9lf|%9lf|%9lf|%9lf|%9lf|\n",no, a,b,c,fa,fb,fc, abs1);
if (fa*fc>=0)
a = c;
else
b=c;
if (abs1<0 data-blogger-escaped-.00001="" data-blogger-escaped-o:p="">
printf(" |%3d
|%9lf|%9lf|%9lf|%9lf|%9lf|%9lf|%9lf|\n",no+1, a,b,c,fa,fb,fc, abs1);
puts(" ============================================================================");
break;
}
}
printf(" | Nilai x mendekati : %53lf|\n | Nilai fungsi : %53f|\n
| Nilai absolut : %53lf|\n
",c,fc, abs1);
puts("
============================================================================");
printf(" ");
return(0);
}
Keterangan
: Listing program atau source code merupakan gabungan dari Metode Tabel dan
Regula Falsi
Output :
Kelebihan
dan Kekurangan Metode Regula Falsi : Kelebihannya membutuhkan lebih sedikit
iterasi daripada Metode Biseksi. Kekurangannya
tidak bisa mencari bilangan imaginer / kompleks dan jika terdapat lebih
dari satu akar harus dicari secara satu persatu.
Referensi : Modul Metode Numerik Pens
Sekian untuk post hari ini, semoga bermanfaat sobat. Budayakan untuk berbagi
karena berbagi itu menyenangkan J.
Sekilas motivasi :
Orang
yang ragu-ragu tetapi melakukan masih lebih baik daripada orang yang tidak
ragu-ragu tetapi tidak melakukan~M E Angier
Makasih gan artikelnya sanggat membantu
ReplyDeleteMampir juga ke blog ane
Membuat Program Sederhana Metode Regula
ini bahasa apa? c ?
ReplyDeletebanyak yg error kk?
ReplyDeleteMau nanyak bagaimana coding untuk yg pakai vba misalnya pakai cells(1,2)='nilai eror' dst
ReplyDelete