package optimizacion;

import operaciones.Matriz;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ejemplo11 extends zeros{
    public static void main(String[] args) {

        //ejemplo11.funcion01();
        ejemplo11.funcion02();

    }

    static public void funcion01()
    {
        ejemplo11 aplica = new ejemplo11();

        double x0 = 0, x1 = 4.5;
        /*
        System.out.println("Metodo de Bisecciones");
        aplica.biseccion(x0, x1);

        System.out.println("Metodo de Regla Falsa");
        aplica.Regla_falsa(x0, x1);
         */

        System.out.println("Metodo de Secante");
        aplica.secante(x0, x1);

        System.out.println("Metodo de Newton");
        aplica.Newton_Raphson(x1);

        System.out.println("Metodo de Newton Modificado");
        aplica.Newton_Raphson_Modificado(x1);

    }

    static public void funcion02()
    {
        ejemplo11 aplica = new ejemplo11();
        double x[] = {0, 1};

        System.out.println("M�todo de Newton");
        aplica.Newton_Raphson(new Matriz(x));
        /*
        System.out.println("M�todo de Secante");
        aplica.Secante(new Matriz(x));
*/

    }
    /**
     * Funci�n dada
     * @param x double
     * @return double
     */

    public double funcion(double x)
    {
    return x*x*x - 5.0*x*x + 7.0*x - 3.0;
    }

    public double derivada(double x)
    {
    return 3.0*x*x - 10.0*x + 7.0;
    }

    public double dderivada(double x)
    {
    return 6.0*x - 10.0;
    }

    public Matriz funcion(Matriz r)
    {
        double f[] = {0,0};
        double x = r.obten(0,0), y = r.obten(1,0);
        f[0] = x*x - 2.0*x - y + 0.5;
        f[1] = x*x + 4.0*y*y - 4;
        return (new Matriz(f));
    }

    public Matriz J(Matriz r)
    {
        double M[][] = new double[2][2];
        double x = r.obten(0,0), y = r.obten(1,0);
        M[0][0] = 2.0*x - 2.0;
        M[0][1] = -1;
        M[1][0] = 2.0*x;
        M[1][1] = 8.0*y;

        return new Matriz(M);
    }
}
