Jumat, 22 April 2011

METODE NEWTON RAPHSON



Algoritma Metode Newton Raphson:
  1. Definisikan fungsi f(x) dan f1(x)
  2. Tentukan toleransi error (e) dan iterasi maksimum (n)
  3. Tentukan nilai pendekatan awal x0
  4. Hitung f(x0) dan f(x0)
  5. Untuk iterasi I = 1 s/d n atau |f(xi)|> e
R  Hitung f(xi) dan f1(xi)
R  Akar persamaan adalah nilai xi yang terakhir diperoleh.



1.      Program menghitung nilai x dari persamaan f(x) : x2 + 3x – 10 dengan menggunakan metode Newton Rapshon.

Deksripsi :
            Metode Newton Rapshon menggunakan formula atau algoritma untuk mendapatkan nilai x maka :
*. x[n+1] = x[n] – f(x)/f`(x)
*.  Parameter awal x diinput dan nilai e = 0.0005
*.  f(x) = fungsi persamaan x2 + 3x – 10 = 0, maka x = 2 atau x = -5, jadi kita menginputkan bilangan x awal apabila mendekati 2 maka hasil x akhir = 3, dan apabila mendekati = -5 maka hasil x akhir = 5
*.  f`(x) = fungsi turunan pertama f(x) 2x + 3
*.  nilai e = 0.0005
*.  kondisi dimana perulangan berhenti nilai mutlak (Absolute) |x[n+1] – x[n]| < e, dimana hasil x[n] = x.

a. Listing Program
#include <stdio.h>
#include <math.h>
#include <conio.h>


float Fungsi(float x);
float FungsiTurunan(float x);

main()
{
      int n=0;
   float x[100];
   float e = 0.0005;
   printf("           Program Newton Rapshon         \n");
   printf("           ======================         \n\n");
   printf("Persamaan Fungsi f(x) : \n");
   printf("     x*x + 3x - 10         \n\n");
   printf("x(n+1)                : \n");
   printf("     x(n)-(f(xn)/f'(xn))     \n\n");
   printf("Nilai e = 0.0005\n\n");


   printf("Masukkan nilai x Awal : "); scanf("%f",&x[0]);

   printf("==================================================================\n");
   printf("!  n  !    xn     !   f(xn)   !  f'(xn)  ! f(xn)/f'(xn) ! x(n+1) !\n");
   printf("==================================================================\n");

   do
   {
   x[n+1] = x[n] - (Fungsi(x[n])/FungsiTurunan(x[n]));
   printf("!  %d  !  %2.4f   !   %2.4f  !  %2.4f  !    %2.4f    ! %2.4f !\n", n, x[n],Fungsi(x[n]), FungsiTurunan(x[n]),Fungsi(x[n])/FungsiTurunan(x[n]),x[n+1]);
   n++;
   }while(abs(x[n-1]-x[n-2])>e);
   printf("!  %d  !  %2.4f   !   %2.4f  !  %2.4f  !    %2.4f    ! %2.4f !\n", n, x[n],Fungsi(x[n]), FungsiTurunan(x[n]),Fungsi(x[n])/FungsiTurunan(x[n]),x[n+1]);
   printf("==================================================================\n\n");
   printf("Jadi, Hasil yang memenuhi dari persamaan tersebut x = %2.4f", x[n]);
   getch();
}

float Fungsi(float x)
{
      return pow(x,2)+(3*x)-10;
}

float FungsiTurunan(float x)
{
      return 2*x+3;
}







b. Output Program
Jika x awal = 2.5

Jika x awal = -5.5

0 komentar:

Posting Komentar