import javax.swing.JOptionPane; public class BisezioneSemplice { public static void main(String[] args) { double left, right, fLeft, fRight; System.out.println("ricerca di una soluzione approssimata dell'equazione sin(x) - x^3 = 0\n"+ "dove l'argomento del seno e' espresso in radianti\n"+ "e' necessario fornire due valori della x nei quali la funzione assume segni discordi"); // input degli estremi dell'intervallo di ricerca left = Double.parseDouble(JOptionPane.showInputDialog("digita estremo sinistro")); right = Double.parseDouble(JOptionPane.showInputDialog("digita estremo destro")); // soluzione numerica dell'equazione fLeft = Math.sin(left) - Math.pow(left,3); fRight = Math.sin(right) - Math.pow(right,3); int numIterazioni = 0; while(Math.abs((right-left)/right) > 1E-10) { // System.out.println(left+" "+right); double middle, fMiddle; numIterazioni++; middle = (right+left)/2; fMiddle = Math.sin(middle) - Math.pow(middle,3); if (fMiddle * fRight >= 0) { // sposto right right = middle; fRight = fMiddle; } else { // sposto left left = middle; fLeft = fMiddle; } } System.out.println("La soluzione e' compresa tra\n" + left + "\ne\n" + right); System.out.println("ottenuta dopo " + numIterazioni + " bisezioni"); } }