Logika Program Bisectional.java

sebelumnya telah menulis teori tentang pencarian Akar dengan metode Bisectional.

dibawah ini listing dan logikanya sekaligus.

import java.util.Scanner;

import java.lang.Math;

import java.math.*;

import java.text.NumberFormat;

Import dalam Java, digunakan untuk mengambil fungsi dari library. Disini dipakai library utility untuk penggunaan fungsi scanner (digunakan untuk menginput angka); Math digunakan untuk mengambil fungsi fungsi matematika disini dipakai exp(untuk e^sesuatu), Math.pow(untuk pangkat dsb)

Java.text untuk menggunakan fungus Numberformat (dipakai dalam menentukan jumlah angka dibelakang koma.

class Perhitungan

{

                static public double hitung(double a)

                {

                //            return ((Math.exp((Math.pow(a,2)-3)))); //Fngsinya (((e^(2x^2)-3)))

                    return (Math.pow(a,2)-3); //fungsinya (x^2)-3

                }

}

Class Perhitungan adalah,sebuah kelas yang digunakan sebagai konstruktor dengan parameter a, jadi kelas ini yang akan menghitung nilai dari fungsinya.

public class biseksion

{

                public static void main(String[]args)

                {

                                NumberFormat n = NumberFormat.getInstance();

        n.setMaximumFractionDigits(4);

                                Perhitungan Ngitung = new Perhitungan();

                                Scanner s = new Scanner(System.in);

                                double r1,r2,rm;

                                double a,b,m;

 

merupakan kelas utama, statement diatas merupakan statement untuk deklarasi variable yang akan digunakan, disini digunakan variable global. Dimana, var global dapat di pakai diseluruh kelas. Termasuk kedalam konstruktor yang diatas tadi.

do

{

                                //input interval

                                System.out.print(“Batas Kiri: “);

                                a = s.nextFloat();

                                System.out.print(“Batas Kanan: “);

                                b = s.nextFloat();

                                //Hitung nilai dari masing masing titik

                               

                                r1 = Ngitung.hitung(a);

                                r2 = Ngitung.hitung(b);

                                //System.out.println(“r1  “+n.format(r1) +”\t r2  ” + n.format(r2)+” r1*r2 “+n.format(r1*r2)); bukan apa apa

}

while (r1*r2>0);

merupakan statement kondisi looping do-loop, dimana program akan melaksanakan paling tidak satu kali statement, disini program meminta input dulu (nilai awal dan akhir) lalu, menghitung nilai fungsi dari titik tersebut, untuk menghitung digunakan kontruktor Perhitungan yang dibuat tadi. Jika kondisinya tidak terpenuhi (f(L).f(U)>0) maka dia akan melakukan perulangan terus (meminta input a dan b) terus terusan.

                System.out.println(“\nNilai a|Nilai b|Nil Tgh|Fungsi  “);

Dilaksanakan setelah a dan b di dapat dengan benar.

do

{

                                r1 = Ngitung.hitung(a);

                                r2 = Ngitung.hitung(b);

                                //hitung nilai tengah

                                m = (a+b)/2;

                                //hitung nilai titik tengah

                                rm = Ngitung.hitung(m);

                                System.out.print (n.format(a)+”\t”+n.format(b)+”\t”+n.format(m)+”\t”+n.format(rm)+”\t \t hasil f(a)*f(m) “+n.format(r1*rm)+”\n”);

                               

                                if (r1*rm<0)

                                {

                                                b=m;

                                }

                                else

                                {

                                                a=m;

                                }

                                System.out.print(“”);

}

while (Math.abs(rm)>0.0001); //batas toleransi

merupakan statement looping untuk menjalankan iterasinya. Setelah nilai interval didapat dengan tepat, dan fungsinya dapat dihitung, maka program akan melakukan perulangan terus, dengan catatan. Perubahan nilai disetiap iterasi. Nilai yang berubah merupakan nilai L atau U, dimana akan digantikan dengan nilai f(M). perulangannya akan berhenti saat nilai rm (Nilai Tengah) lebih kecil dari 0.0001 (ini merupakan batas toleransi)

kenapa menggunakan batas toleransi? Karena tidak mungkin sampai 0; programnya sih bisa di compile, di run juga bisa kalau ditulis. 0 tapi loopingnya ga bisa berhenti nanti. Oleh karena itu digunakan 0.000001 (Logika nya sama dengan pembagian dengan 0)

                                System.out.println(“akarnya adalah = ” + n.format(m));

Mencetak nilai  dari program (nilai akhir adalah nilai dari m itu sendiri (yang sudah mendekati 0)

}

}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s