package optimizacion;

import operaciones.Matriz;

/**
 * <p>Title: Ejemplo de aplicacion del metodo de punto Interior</p>
 * <p>Description: Minimiza una funcion cuadratica utilizando el metodo de
 * Punto Interior</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: UMSNH</p>
 * @author Dr. Felix Calderon Solorio
 * @version 1.0
 */

public class ejemplo_06 extends Restricciones{
    public static void main(String[] args) {
        ejemplo_06 aplica = new ejemplo_06();
        double X[] = {1, 1};
        double l[] = {100, 100};

        aplica.interior(new Matriz(X), l, 0.2, 0.1);
        //aplica.Barrera(new Matriz(X), 100);
    }

    /**
     * Calcula la matriz Hessiana en el punto X
     * @param X Matriz
     * @return Matriz
     */

    public Matriz Hessiano(Matriz X)
    {
        double H[][] = {{2.0, 0.0}, {0.0, 2.0}};
        return (new Matriz(H));
    }

    /**
     * Calcula el vector gradiente en el punto X
     * @param X Matriz
     * @return Matriz
     */

    public Matriz Gradiente(Matriz X)
    {
        double g[] = new double[2];

        g[0] = 2.0*(X.obten(0,0)-2.0);
        g[1] = 2.0*(X.obten(1,0)-2.0);

        return (new Matriz(g));
    }

    /**
     * Restricciones dadas.
     * @return double[][]
     */

    public double [][] Restricciones()
    {
        double A[][] = {{1, 1, 4},{2, -1, 0}};
        return A;
    }
}
