Postingan ini merupakan kelanjutan tugas kuliah dari postingan sebelumnya tentang Penyelesaian Numerik Persamaan Non-Linear (Metode Fixed Point Iteration). Pada kesempatan ini saya akan berbagi tentang salah satu metode penyelesaiannya, yaitu dengan Metode Metode Newton-Raphson.
Langkah
penyelesaian:
a. Tentukan x0 , toleransi, dan
jumlah iterasi maksimum.
b. Hitung xbaru
= x - f(x0)/f’(x0).
c. Jika nilai mutlak (xbaru - x0
) < toleransi, diperoleh tulisan xbaru sebagai hasil perhitungan; jika
tidak, lanjutkan ke langkah berikutnya.
d.
Jika jumlah iterasi > iterasi maksimum, akhiri program.
e. x = xbaru , dan kembali ke langkah b.
Disini yang saya akan bahas bukanlah materi tentang apa itu metode newton-raphson, berhubung saya tugasnya membuat program, maka yang saya share disini adalah programnya. Saya menggunakan bahasa pemrograman C untuk menemukan solusi dengan metode newton-raphson ini.
Coding program newtonraphson.c untuk kasus f(x) = x^3 + 3*cos(x) - x
// Metode Newton-Raphson
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PHI 3.141592654
float x0,tol;
int max_iter;
float f(float x)
{
return x*x*x + 3*cos(x*PHI/180) - x;
}
float f1(float x)
{
return 3*x*x - 1/3*sin(3*x*PHI/180) - 1;
}
int main()
{
int it;
float epsilon,xb;
printf("Solusi Akar dengan Metode Newton-Raphson\n\n");
printf("Nilai awal = "); scanf("%f",&x0);
printf("Toleransi (ex: 0.0001) = "); scanf("%f",&tol);
printf("Jumlah iterasi maksimum = "); scanf("%d",&max_iter);
it = 0;
printf("\nIt. x f(x) epsilon\n");
do
{
it = it + 1;
xb = x0 - f(x0)/f1(x0);
epsilon = fabs(xb-x0);
printf("%3d %8.5f %8.5f %8.2e\n",it,xb,f(xb),epsilon);
x0 = 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();
}
// Metode Newton-Raphson
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PHI 3.141592654
float x0,tol;
int max_iter;
float f(float x)
{
return x*x*x + 3*cos(x*PHI/180) - x;
}
float f1(float x)
{
return 3*x*x - 1/3*sin(3*x*PHI/180) - 1;
}
int main()
{
int it;
float epsilon,xb;
printf("Solusi Akar dengan Metode Newton-Raphson\n\n");
printf("Nilai awal = "); scanf("%f",&x0);
printf("Toleransi (ex: 0.0001) = "); scanf("%f",&tol);
printf("Jumlah iterasi maksimum = "); scanf("%d",&max_iter);
it = 0;
printf("\nIt. x f(x) epsilon\n");
do
{
it = it + 1;
xb = x0 - f(x0)/f1(x0);
epsilon = fabs(xb-x0);
printf("%3d %8.5f %8.5f %8.2e\n",it,xb,f(xb),epsilon);
x0 = 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 Newton-Raphson)" 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
bang bleh mnta yang metode biseksi kagak...
ReplyDeletelagi btuh pencerahan ni...
boleh-boleh, mampir ke postingan ini aja (http://andi0309.blogspot.com/2012/04/penyelesaian-numerik-persamaan-non.html)
Delete