Anda di halaman 1dari 8

6.

Source Code Program dengan Metode Newton Rhapson


public class NewtonRhapson { public static void main (String[]args) {double x=2; double y,t; int iterasi=10; for(int i=1;i<=iterasi;i++) { y=Math.pow(x,2)-3; //f(x)=x^2-3 t=2*x; //turunannya f(x) x-=y/t; //x=x-y/t System.out.println("Iterasi ke-"+i+"\tx: "+x); } }}

3. Source Code Program dengan Metode Secant


public class Secant { public static void main(String[]args) {double x1=0,x2=6,x3;double y1,y2,y3;int iterasi=12; for(int i=1;i<=iterasi;i++) { y1=Math.pow(x1,2)-3; y2=Math.pow(x2,2)-3; if(y1==y2) { break;} x3=x2-y2*(x2-x1)/(y2-y1);y3=Math.pow(x3,2)-3;x1=x2;x2=x3; System.out.println("Iterasi ke-"+i+"\tx: "+x3);

2. Source Code Program dengan Metode Regula Falsi


public class RegulaFalsi { public static void main(String[]args)

{double x1=0, x2=6, xt; double y1,y2,yt; int iterasi=32; for(int i=1;i<=iterasi;i++) {y1=Math.pow(x1,2)-3;y2=Math.pow(x2,2)-3;xt=x2-y2*(x2-x1)/(y2-y1);yt=Math.pow(xt,2)-3; if(y1*yt<0) { x1=x1;x2=xt;} else if(y2*yt<0) { x1=xt;x2=x2;} System.out.println("Iterasi ke="+i+"\tx: "+xt); } }

1. Source Code Program dengan Metode Biseksi


public class Biseksi { public static void main(String[]args) { double x1=0, x2=6, xt; double y1,y2,yt; int iterasi=32; for(int i=1;i<=iterasi;i++) { y1=Math.pow(x1,2)-3; y2=Math.pow(x2,2)-3; xt=(x1+x2)/2; yt=Math.pow(xt,2)-3; if(y1*yt<0) { x1=x1; x2=xt; } else if(y2*yt<0) { x1=xt; x2=x2; } System.out.println("Iterasi ke="+i+"\tx: "+xt);} }

source code java penerapan metode Secant


public class demoSecant{ public static void main(String[] args){ double e, x1, x2, x0, fx1,fx2,fx0; x0=1.0; x1=2.0; e=0.001; System.out.println("\t\tProgram Demo Metode Secant"); System.out.println("\t\t\tOleh Waskita"); System.out.println("\t\t\tVersi 1.0"); System.out.println(); for(int i=1;i<=4;i++){ fx0 = (x0*x0*x0) + 2*(x0*x0) -3* x0 - 3; fx1 = (x1*x1*x1) + 2*(x1*x1) -3* x1 - 3; x2 = x1 - ( fx1 *((x0 - x1)/(fx0 - fx1))); fx2 = (x2*x2*x2) + 2*(x2*x2) - 3*x2 - 3; System.out.println("iterasi ke-"+i); System.out.println("nilai x0 = "+x0); System.out.println("nilai x1 = "+x1); System.out.println("nilai x2 = "+x2); System.out.println("nilai fx0 = "+fx0); System.out.println("nilai fx1 = "+fx1); System.out.println("nilai fx2 = "+fx2); System.out.println(); if(fx2<0){ fx2=-1*fx2; if(fx2<=e){ System.out.println("akar telah ditemukan"); break; }else { x0 = x1; x1 = x2; } if(fx2<=e){ System.out.println("akar telah ditemukan"); break; } else { x0 = x1; x1 = x2; } } }

} }

Algoritma Newton-Raphson: 1. Menentukan suatau persamaan non-linier / f(X). 2. memberikan nilai error toleransi(e) dan batasan pengulangan(ulang) 3. Memberikan nilai terkaan awal(X0) 4. mencari turunan dari persamaan non-linier tersebut / f(X)'. 5. mulai dari awal perulangan( j=1 sampai ulang lakukan : a. hitung nilai f(Xj) jika nilai f(Xj) < e maka Xj merupakan solusi akar persamaan non-linier tersebut b. jika nilai f(Xj) > e maka hitung : Xj+1 = Xj - f(Xj) / f(Xj)'. b.1 hitung nilai f(Xj+1) b.2 jika nilai f(Xj+1) < e maka Xj+1 merupakan solusi akar persamaan cotoh soal. carilah solusi penyelesaian sistem persamaan non-linier berikut f(x) = X^3 + X^2 - 10 dengan nilai terkaan awal x = 1 dan e = 0,00001 jawab: langkah 1 : f(x) = X^3 + X^2 - 10; langkah 2 : e = 0,00001; langkah 3 : nilai terkaan awal x = 1; langkah 4 : mencari turunan dari persamaan non-linier tersebut / f(X)' = f(x)' = 3X^2 + 2X; langkah 5 a: f(1) = 1 + 1 - 10 = -8; b: tidak memenuhi nilai e, x1 = x - ( f(x) / f(x)' ) = 1 - -8/(3*(1) + 2*(1)) = 1 - 8/5 = -3/5 hasil untuk penyelesaian ini saya sajikan dalam bentuk tabel x(ke-) x f(x) f(x)' 0 1 1 5 1 2,6 14,336 25,48 2 2,03736263736 2,60762612 16,52726482 3 1,8795854 0,17311821 14,35769467 4 1,867527882 0,0009641 14, 1980 jadi akar penyelesaian dari persamaan non-linier tersebut adalah x = 1,867527882. catatan: membandingkan nilai f(x) terhadap nilai e (error toleransi ) bukan berarti membandingkan besar kecil tetapi berapa angka dibelakang koma untuk mendekati anggka nol.

Metode Secant Merupakan kombinasi antara Regula falsi dan Newton serta tidak perlu menghitung turuna fungsi Algoritma 1.tentukan persamaan non-linier yang akan diselesaikan 2. tentukan nilai awal x0 dan x1 3. tentukan nilai error toleransi dan batas pengulangan 4. hitung nilai f(x0) dan f(x1) 5. cari nilai x2 dengan rumus x2 = x1 - f(x1) * ( (x1 -x0) / ( f(x1) - f(x0) ) 6. hitung nilai f(x2) 7. jika nilai f(x2) mendekati nilai error toleransi(e) atau mencapai batas akhir perulangan 7a. jika ya x2 adalah dari persamaan non-linier tersebut 7b. jika tidak x0 = x1 dan x1 = x2 ulangi dari langkah ke 4. Contoh soal. Tentukan salah satu akar dari persamaan non-linier f(x) = x^3 + x^2 - 3x - 3 = 0 dengan x0 = 1 , x1 = 2 dan error toleransi(e) = 0,001 jawab f(x) = x^3 + x^2 - 3x - 3 = 0 x0 = 1, x1 = 2 f(x0) = (1)^3 + (1)^2 - 3(1)^2 - 3 = -4 f(x1) = (2)^3 + (2)^2 - 3(2)^2 - 3 = 3 x2 = x1 - f(x1)*( (x1 - x0) / (f(x1) - f(x0) )) = 2 - 3* ((2-1)/(f(3 - -4)) = 1,7142 f(x2) = (1,7142)^3 + (1,7142)^2 - 3(1,7142)^2 - 3 = - 0,16659 nilai f(x2) belum memenuhi nilai error toleransi x0 = x1 = 2; x1 = x2 = 1,7142 f(x0) = 3; f(x1) = -0,16659 x2 = x1 - f(x1)*( (x1 - x0) / (f(x1) - f(x0) )) = 1,7142 - -0,16659* ((2 - 1,7142)/(f( -0.16659 - 3)) = 1,6992 f(x2) = (1,6992)^3 + (1,6992)^2 - 3(1,6992)^2 - 3 = - 0,304253 nilai f(x2) belum memenuhi nilai error toleransi x0 = x1 = 1,7142; x1 = x2 = 1,6992 f(x0) = -0,16659; f(x1) = -0,304253 x2 = x1 - f(x1)*( (x1 - x0) / (f(x1) - f(x0) )) = 1,6992 - -0,304253* ((1,6992 - 1,7142)/(( -0.304253 - -0,16992)) = -1,7323516 f(x2) =(1,7323516)^3 + (1,7323516)^2 - 3(1,7323516)^2 - 3 = - 0,0004785 nilai f(x2) memenuhi nilai error toleransi; jadi salah satu akar penyelesaian dari persamaan non-linier tersebut adalah -1,7323516

source code java penerapan metode Regula Falsi


public class demoRegulaFalsi{ public static void main(String[] args){ int i; double xatas, xbawah, x, fxatas, fxbawah, e, fx, fxcoba; e=0.001; xatas=2; xbawah=1; fxatas=(xatas * xatas * xatas)+(xatas*xatas)-(3*xatas)-3; fxbawah=(xbawah*xbawah*xbawah)+(xbawah*xbawah)-(3*xbawah)-3; outerloop:for(i=1;i<=1000;i++){ x = xatas - ( (fxatas*xbawah)- ( fxbawah*xatas) ) /(fxatas - fxbawah); fx = (x*x*x)+(x*x)-(3*x)-3; if(fx<0){ fxcoba=-(fx); if(fxcoba<=e){ System.out.println("nilai f(x)= "+fx); System.out.println("akar dari persamaan non-linier tersebut adalah "+x); break; }else{ System.out.println("iterasi ke-"+i); System.out.println("nilai dari x("+i+")"+x); System.out.println("nilai dari fx("+i+")"+fx); System.out.println("nilai dari xa("+i+")"+xatas); System.out.println("nilai dari xb("+i+")"+xbawah); System.out.println("nilai dari f(xa) ke-"+i +fxatas); System.out.println("nilai dari f(xb) ke-"+i +fxbawah); if ((fx*fxbawah)<0 ){ xatas=x; fxatas=fx; continue outerloop; } else { xbawah=x; fxbawah=fx; continue outerloop; } } } else { if(fx<=e){ System.out.println("nilai f(x)= "+fx);

System.out.println("akar dari persamaan non-linier tersebut adalah "+x); break; }else{ System.out.println("iterasi ke-"+i); System.out.println("nilai dari x("+i+")"+x); System.out.println("nilai dari fx("+i+")"+fx); System.out.println("nilai dari xa("+i+")"+xatas); System.out.println("nilai dari xb("+i+")"+xbawah); System.out.println("nilai dari f(xa) ke-"+i +fxatas); System.out.println("nilai dari f(xb) ke-"+i +fxbawah); if ((fx*fxbawah)<0 ){ xatas=x; fxatas=fx; continue outerloop; } else { xbawah=x; fxbawah=fx; continue outerloop; } }

} } } }

source code java penerapan metode Newton-Rahpson


public class newtonraphson{ public static void main (String[] args){ double a,x; double fa,fat,e; int i; // memasukkan nilai terkaan awal a=1; //memasukkan nilai error toleransi e=0.001; System.out.println("\t\t\tProgram Newton- Raphson"); System.out.println("\t\t\t\tV 1.0"); //melakukan dengan batas 100 kali perulangan for ( i=0;i<=1000;i++){

fa= (a*a*a)+(a*a)-10; //menghitung nilai turunan fat=(3*a*a)+(2*a); System.out.println("Nilai dari X("+i+") \t= "+a); a = a-(fa/fat); System.out.println("Nilai dari fx \t\t= "+fa); System.out.println("Nilai dari fx aksen \t= "+fat); if (fa<0 ){ fa=(-fa); if (fa<=e){ break; } } else{ if(fa<=e){ break; } } System.out.println(""); } } }