Tuesday 3 April 2012

Penyelesaian Numerik Persamaan Non-Linear (Metode Regula Falsi)


Assalamu'alaikum warahmatullahi wabarakatuh

Postingan ini merupakan kelanjutan tugas kuliah dari postingan sebelumnya tentang Penyelesaian Numerik Persamaan Non-Linear (Metode Secant). Pada kesempatan ini saya akan berbagi tentang salah satu metode penyelesaiannya, yaitu dengan Metode Regula Falsi.


Langkah penyelesaian:
a. Tentukan a, b, toleransi, dan jumlah iterasi maksimum.
b. Periksa apakah f(a) x f(b) > 0; jika ya, keluar dari progam karena pada selang yang diberikan tidak terdapat akar persamaan.
c. Hitung nilai m = a - f(b) x (b - a) / [f(b) - f(a)].
d. Jika nilai mutlak (m-a) < toleransi, tuliskan m sebagai hasil perhitungan, dan akhiri program; jika tidak, lanjutkan ke langkah berikutnya.
e. Jika jumlah iterasi > iterasi maksimum, akhiri program.
f. Jika f(a) x f(m) < 0, maka b = m; jika tidak, a = m
g. Kembali ke langkah c.

Disini yang saya akan bahas bukanlah materi tentang apa itu metode regula falsi, berhubung saya tugasnya membuat program, maka yang saya share disini adalah programnya. Saya menggunakan bahasa pemrograman C untuk menemukan solusi dengan metode regula falsi ini.

Coding program regulafalsi.c untuk kasus f(x) = x^3 + 3*cos(x) - x
// Metode Regula Falsi 
#include <stdio.h>
#include <conio.h> 
#include <math.h> 
#define PHI 3.141592654 

float a,m,b,F_a,F_m,F_b,tol; 
int max_iter; 

float f(float x) 
   return x*x*x + 3*cos(x*PHI/180) - x;   

int main() 
   int it; 
   float epsilon;
   printf("Solusi Akar dengan Metode Regula Falsi\n\n");
   printf("Batas bawah             = "); scanf("%f",&a); 
   printf("Batas atas              = "); scanf("%f",&b); 
   printf("Toleransi (ex: 0.0001)  = "); scanf("%f",&tol); 
   printf("Jumlah iterasi maksimum = "); scanf("%d",&max_iter); 

   it = 0; 
   F_a = f(a); 
   F_b = f(b); 
   if(F_a * F_b > 0) /*printf("   Nilai F(a) x F(b) > 0\n"); 
   else */
   { 
      printf("It.     a         m         b        f(a)      f(b)"); 
      printf("    abs[f(b)-f(a)]/2\n"); 
      do 
      { 
         it = it + 1; 
         m = a - F_a * (b - a) / (F_b - F_a); 
         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_m,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("\nToleransi terpenuhi\n"); 
         printf("Hasil akhir = %g\n",b); 
      } 
      else printf("\nToleransi tidak terpenuhi\n"); 
   }
   getch();
}

Disini saya menggunakan software Dev-C++ untuk menjalankannya.
Sekian posting program "Penyelesaian Numerik Persamaan Non-Linear (Metode Regula Falsi)" yang dapat saya bagikan kepada kawan-kawan. Semoga ada manfaatnya! Akhir kata, terima kasih dan ...

Wassalamu'alaikum warahmatullahi wabarakatuh

referensi: http://sutedjo.staff.gunadarma.ac.id/Downloads

No comments:

Post a Comment

Harry Potter - Golden Snitch Angry Birds -  Red Bird