Tuesday, 3 April 2012

Penyelesaian Numerik Persamaan Non-Linear (Metode Secant)


Assalamu'alaikum warahmatullahi wabarakatuh

Postingan ini merupakan kelanjutan tugas kuliah dari postingan sebelumnya tentang Penyelesaian Numerik Persamaan Non-Linear (Metode Newton Raphson). Pada kesempatan ini saya akan berbagi tentang salah satu metode penyelesaiannya, yaitu dengan Metode Secant. Metode secant merupakan salah satu metode terbuka untuk menentukan solusi akar dari persamaan non linier, dengan prinsip utama sebagai berikut:
1. Metode ini melakukan pendekatan terhadap kurva f(x) dengan garis secant yang ditentukan oleh 2 titik terakhir.
2. Nilai taksiran akar selanjutnya adalah titik potong antara garis secant dengan sumbu x.


Langkah penyelesaian:
a.  Tentukan nilai awal X0 dan X1
b. Hitung f(X0) dan f(X1), kemudian cek konvergensi f(X0) dan f(X1)
c. Lakukan iterasi
d. Hitung nilai taksiran akar selanjutnya
    xk+1 = xk – (f(xk) / (f(xk) - f(xk-1))) * (xk – xk-1)
e. Cek konvergensi terhadap XTOL (jika ada)

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

Coding program secant.c untuk kasus f(x) = x^3 + 3*cos(x) - x

// Metode Secant 
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PHI 3.141592654

float x0,x1,tol; 
int max_iter; 

float f(float x) 

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




int main() 

   int it; 
   float epsilon,xb; 
   printf("Solusi Akar dengan Metode Secant\n\n");
   printf("Batas bawah             = "); scanf("%f",&x0); 
   printf("Batas atas              = "); scanf("%f",&x1); 
   printf("Toleransi (ex: 0.0001)  = "); scanf("%f",&tol); 
   printf("Jumlah iterasi maksimum = "); scanf("%d",&max_iter); 

   it = 0; 
   printf("It.     x        f(x)    epsilon\n"); 
   do 
   { 
      it = it + 1; 
      xb = x1 - f(x1)*(x1 - x0)/(f(x1) - f(x0)); 
      epsilon = fabs(xb-x0); 
      printf("%3d  %8.5f  %8.5f  %8.2e\n",it,xb,f(xb),epsilon);
      x0 = x1; 
      x1 = xb; 
   } while(it <= max_iter && epsilon > tol); 

   if(it<=max_iter) 
   { 
      printf("\nToleransi terpenuhi\n"); 
      printf("Hasil akhir = %g\n",xb); 
   } 
   else printf("\nToleransi tidak terpenuhi\n"); 
getch();
}

Disini saya menggunakan software Dev-C++ untuk menjalankannya.
Sekian posting program "Penyelesaian Numerik Persamaan Non-Linear (Metode Secant)" 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