Java - Metode Numerik Metode Bagi Dua


/*
 *menghitung akar f(x)=3e^x-2x^2 + 5 dengan metoda bagi dua
 *
 */
package metode.bagidua;
import java.text.DecimalFormat;
/**
 *
 * @author Moch. Afif
 */
public class MetodeBagidua {
     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) {
        System.out.println("------------------------------------------------------------------------------------------");
        System.out.println("-                                       Kelompok 5                                       -");
        System.out.println("-       Penyelesaian menghitung akar f(x)=3e^x-2x^2 + 5 dengan metoda bagi dua           -");
        System.out.println("------------------------------------------------------------------------------------------");
        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\ta\t\t\tb\t\t\tc\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){
                     b=c;                                                       //selang baru a-c
                 }
                 else{
                    a=c;                                                        //selang baru b-c
                 }
                 i++;
        }
        System.out.println("------------------------------------------------------------------------------------------");
        System.out.println("Hampiran akar = " + df1.format(c));
    }

}

Comments

Popular posts from this blog

VB.NET - Membuat Angka Acak

Kenapa dinamai windows?

Konversi Desimal ke Biner Menggunakan Stack - Java