[text] a

Viewer

  1. /*
  2.  * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
  3.  * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
  4.  */
  5. package pbo;
  6. import java.util.Scanner;
  7.  
  8. /**
  9.  *
  10.  * @author ADVAN
  11.  */
  12. public class Numerik3 {
  13.     public static void main(String[] args) {
  14.         Scanner scanner = new Scanner(System.in);
  15.  
  16.         System.out.println("Mencari akar persamaan Dengan Metode Bagi dua/ Biseksi");
  17.  
  18.         System.out.print("\nMasukkan batas bawah: ");
  19.         double xb = scanner.nextDouble();
  20.  
  21.         System.out.print("Masukkan batas atas: ");
  22.         double xa = scanner.nextDouble();
  23.  
  24.         double fxb = Math.exp(-5 * xb * xb);
  25.         double fxa = Math.exp(-5 * xa * xa);
  26.  
  27.         System.out.printf("\nnilai fungsi pada batas bawah f(%.4f) = %.4f%n", xb, fxb);
  28.         System.out.printf("nilai fungsi pada batas atas f(%.4f) = %.4f%n", xa, fxa);
  29.  
  30.         System.out.print("\nMasukkan error: ");
  31.         double e = scanner.nextDouble();
  32.  
  33.         System.out.print("Masukkan iterasi maksimum: ");
  34.         int n = scanner.nextInt();
  35.  
  36.         if (fxb * fxa > e) {
  37.             System.out.println("\nTidak ada akar pada selang tersebut!!!");
  38.             System.out.print("\nMasukkan batas atas (xa) dan batas bawah (xb) baru: ");
  39.             // Untuk sementara, saya tidak menangani ulangannya
  40.         } else {
  41.             System.out.println("\nPemilihan batas atas (xa) dan Batas bawah (xb) tepat");
  42.             System.out.println("Akar diantara xa dan xb");
  43.         }
  44.  
  45.         int kondisi = 1;
  46.         double error = Math.abs(xa - xb);
  47.  
  48.         System.out.println("\nIterasi  xb      xc      xa      f(xb)   f(xc)   f(xa)   error");
  49.  
  50.         for (int i = 1; kondisi != 0 && i <= n; i++) {
  51.             double xc = (xb + xa) / 2.0;
  52.             double fxc = Math.exp(-5 * xc * xc);
  53.             error = Math.abs(xa - xb);
  54.  
  55.             System.out.printf("%7d %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f%n", i, xb, xc, xa, fxb, fxc, fxa, error);
  56.  
  57.             if (error < e || i >= n)
  58.                 kondisi = 0;
  59.             else if (fxb * fxc > 0) {
  60.                 xb = xc;
  61.                 fxb = fxc;
  62.             } else {
  63.                 xa = xc;
  64.                 fxa = fxc;
  65.             }
  66.         }
  67.  
  68.         if (kondisi == 0)
  69.             System.out.printf("\nAkar ditemukan: %.4f\n", (xb + xa) / 2.0);
  70.     }
  71. }
  72.  

Editor

You can edit this paste and save as new:


File Description
  • a
  • Paste Code
  • 08 May-2024
  • 2.4 Kb
You can Share it: