package Tutorial7; public class RootFinder { public static double bisect( MathFunction f, double x1, double x2, double epsilon) { double m; for (m= (x1+x2)/2.0; Math.abs(x1-x2)> epsilon; m= (x1+x2)/2.0) if (f.func(x1)*f.func(m) <= 0.0) x2= m; // Utiliza el subintervalo izquierdo else x1= m; // Utiliza el subintervalo derecho return m; } public static double secant(MathFunction f, double x1, double x2, double epsilon) { double root = x1; double y1, y2; while (Math.abs(x2 - x1) > epsilon) { y1 = f.func(x1); y2 = f.func(x2); root = x1-y1*(x2-x1)/(y2-y1); x1 = x2; x2 = root; } return root; } public static double regulaFalsi(MathFunction f, double x1, double x2, double epsilon) { double y1, y2, root, yroot; do { y1 = f.func(x1); y2 = f.func(x2); root = x1-y1*(x2-x1)/(y2-y1); yroot = f.func(root); if (yroot*y2 < 0.0) x1=root; else x2=root; } while (Math.abs(yroot)>epsilon); return root; } }