Metode Bagi Dua
Listing Program :
import java.text.DecimalFormat;
/*menghitung akar f(x)=3e^x-2x^2 + 5 dengan metoda bagi dua
*/
static double fx(double x)
{
double f_x;
double e=2.718281828459;
f_x = (3*Math.pow(e,x))-(2*Math.pow(x,2))+5;
return f_x;
}
public static void main(String args[])
{
int i; //untuk menghitung banyaknya iterasi
DecimalFormat df1=new DecimalFormat("##0.000000");
double e1=0.000001; //batas selang setelah iterasi
double e2=0.0000001; //batas nilai f(x) mendekati nol
double fa,fb,fc;
fc=1000;//nilai fungsi f(x) pada titik a,b,c
double a,b,c;//variabel untuk selang a,b dan c sebagai titik tengah
a=-1.7;b=-1.6;c=0;//nilai selang awal a dan b
i=0;
System.out.println("----------------------------------");
System.out.println("i\t\ta\t\t\t\tb\t\t\tc\t\t\tf(c)");
System.out.println("----------------------------------");
while((Math.abs(a-b)>e1)||(fc>e2))
{
c=(a+b)/2;
fa=fx(a);fx(b);fc=fx(c);
System.out.println(i+" "+df1.format(a)+"\t\t"+ df1.format(b)+"\t\t" + df1.format(c)+"\t\t"+df1.format(fc));
if((fa*fc)<0)
{
//selang baru a-c
b=c;
}
else
{
//selang baru b-c
a=c;
}
i++;
}
System.out.println("----------------------------------");
System.out.println("Hampiran akar = " + df1.format(c));
}
Metode Biseksi
Listing Program :
public static void main(String[]args){
double x1=-1;
double x2=3;
double xt;
double y1,y2,yt;
int iterasi=33;
for(int i=1;i<=iterasi;i++){
y1=f(x1);
y2=f(x2);
xt=(x1+x2)/2;
yt=f(xt);
if(y1==0||y2==0){
break;
}
if(y1*yt<0){
x1=x1;
x2=xt;
}
else if(y2*yt<0){
x1=xt;
x2=x2;
}
else{
System.out.println("Tidak terdapat akar " + "dalam interval ["+x1+", "+x2+"]");
break;
}
System.out.println("Iterasi ke-"+i+"\txt = "+xt);
}
}
static double f(double x){
return Math.pow(x,3)+4*Math.pow(x,2)-10;
}
Metode Regula Falsi
Listing Program :
import java.text.DecimalFormat;
/*menghitung akar f(x)=3e^x-2x^2 + 5 dengan metoda regula falsi pada selang a=-2 dan b=-1*/
public static double fx(double x)
{
double f_x;
double e=2.718281828459;
f_x = (3*Math.pow(e,x))-(2*Math.pow(x,2))+5;
return f_x;
}
public static void main(String args[])
{
int i; //untuk menghitung banyaknya iterasi
DecimalFormat df1=new DecimalFormat("##0.000000");
double e1=0.000001; //batas lebar selang setelah iterasi
double e2=0.0000001; //batas nilai f(x) mendekati nol
double fa,fb,fc;
fc=1000;//nilai fungsi f(x) pada titik a,b,c
double a,b,c;//variabel untuk selang a,b dan c sebagai titik tengah
a=-2;b=-1;c=0;//nilai selang awal a dan b
i=0;
System.out.println("---------------------------------");
System.out.println("i\t\ta\t\t\t\tb\t\t\tc\t\t\tf(c)");
System.out.println("---------------------------------");
while((Math.abs(a-b)>e1))
{
fa=fx(a);fb=fx(b);
c=b-(fb*(b-a)/(fb-fa));
fc=fx(c);
System.out.println(i+" "+df1.format(a)+"\t\t"+ df1.format(b)+"\t\t" + df1.format(c)+"\t\t"+df1.format(fc));
if(Math.abs(fc)
{
//akar adalah c
a=c;b=c;
}
else
{ if(fa*fc<0)b=c;
else
a=c;
}
i++;
}
System.out.println("---------------------------------");
System.out.println("Hampiran akar = " + df1.format(c));
}
Metode Newton-Raphson
Listing Program :
public static void main(String[]args){
double x=3;
double y,t;
int iterasi=33;
for(int i=1;i<=iterasi;i++){
y=Math.pow(x,3)+4*Math.pow(x,2)-10;
t=3*Math.pow(x,2)+8*x;
x=x-y/t;
if(y==0) break;
System.out.println("Iterasi ke-"+i+"\tx= "+x);
}
}
Metode Secant
Listing Program :
public static void main(String[]args)
{
double a=0.5;
double b=1;
double fa;
double fb;
double c;
double lebar=0;
for(int i=0; i<60; i++)
{
//rumus untuk secant
fa=Math.pow(Math.E,a)-5*Math.pow(a,2);
fb=Math.pow(Math.E,b)-5*Math.pow(b,2);
c=b-(fb*(b-a)/(fb-fa));
lebar=c-a;
a=b;
b=c;
if(fa==fb)
{
break;
}
//mencetak hasil pencarian akar
System.out.println("Iterasi ke- "+i+"\tNilai tengah : "+c +"\tlebar :"+lebar +"\tGalat:"+fb);
}
}
Kelompok :
1. Ahmad Apandi
2. Dessyre Natalia D
3. Dewi Purnamasari
4. Ferhat
5. Retariati
Tidak ada komentar:
Posting Komentar