|
|||||||
|
|
|
|||||
|
|
|||||||
Este método consiste en generar la sucesión
con el criterio de parada
a partir de X0 y X1 suficientemente cerca
de t, tal que f(t) = 0
Implementación
class Secante
{
public static double EPSILON = 0.00005;
public final static int MAX_ITER = 500;
private double xi,xf;
private int cont;
public void asignarDatos(double xi , double xf)
{
this.xi = xi;
this.xf = xf;
this.cont = 0;
}
public int numIteraciones( )
{
return cont;
}
public double raiz(Evaluar e)
{
do
{
double temp = xf;
double aux = e.f(xf) - e.f(xi);
if (aux != 0)
xf -= (e.f(xf) * (xf - xi)) / aux;
else
break;
xi = temp;
if (++cont > MAX_ITER ) break;
if(Math.abs(xf - xi) <= EPSILON) break;
} while(true);
return xf;
}
}
Programa de prueba
Consiste en aplicar el método de la secante a un polinomio de grado tres.
Código fuente
class pruebaSecante
{
public static void main(String arg[ ])
{
Secante s = new Secante( );
double coef[ ] = { -1.0 , 0.0 , 0.0 , 1.0 };
EvalPolinomio p = new EvalPolinomio(coef);
s.asignarDatos(0.0 , 2.0);
System.out.println("\n\tPrograma de prueba para metodo de la Secante");
System.out.println("\t--------------------------------------------");
System.out.println("\n\tf(t) : " + p.toString("t"));
System.out.println("\n\tf(0.0) : " + p.f(0.0));
System.out.println("\tf(2.0) : " + p.f(2.0));
System.out.println("\n\traiz : " + s.raiz(p));
System.out.println("\n\tnumero de iteraciones : " + s.numIteraciones( ));
System.out.println( );
}
}
bajar archivos