Package metodos

Source Code of metodos.Romberg

package metodos;

import consola.Consola;
import funcion.*;

public class Romberg extends Base {
   
    public Romberg() {
        this.espaciado = 0;
        this.decimales = 10;
    }
   
    public double evaluar(Funcion funcion, double a, double b, int n) {
       
        System.out.println("a: "+a);
        System.out.println("b: "+b);
        System.out.println("n: "+n);
        System.out.println();
       
        double resultado = 0;
       
        double[][] matriz = new double[n][n];
       
        System.out.println("1) Aplicar la regla del trapecio extendido");
        System.out.println("");
        for (int i = 0; i < n; i++) {
            matriz[i][0] = this.trapecioExtendido(funcion, a, b, (Math.pow(2, i)));
        }
       
        System.out.println("");
        System.out.println("1.1) la matriz quedaria asi");
        this.reportarmatriz(matriz);
       
       
       
        System.out.println("");
        System.out.println("2) Aplicar las formulas de Romberg en cada nivel siguiente");
        System.out.println("");
        for (int k = 1; k < n; k++) {
           
            for (int j = 0; j < (n - k); j++) {
               
                double potencia = Math.pow(4.0, k);
               
                double mayor = (potencia / (potencia - 1)) * matriz[j + 1][k - 1];
                double menor = (1 / (potencia - 1)) * matriz[j][k - 1];
               
                System.out.println("Mayor[" + (j + 1) + "][" + (k - 1) + "]=(" + potencia + " / (" + (potencia - 1) + ")) * " + this.redondear(matriz[j + 1][k - 1]) + " = " + this.redondear(mayor));
                System.out.println("Menor[" + j + "][" + (k - 1) + "]=(" + 1 + " / (" + (potencia - 1) + ")) * " + this.redondear(matriz[j][k - 1]) + " = " + this.redondear(menor));
                System.out.println("");
                System.out.println("matriz[" + j + "][" + k + "]=" + this.redondear(mayor) + " - " + this.redondear(menor) + " = " + this.redondear(mayor - menor));
                System.out.println("--------------------------------------------");
                matriz[j][k] = mayor - menor;
               
            }
           
        }
        System.out.println("");
        System.out.println("2.1) la matriz quedaria asi");
        this.reportarmatriz(matriz);
       
        System.out.println("3) El resultado es el ultimo elemento de la primera fila: matriz[0][" + (n - 1) + "]");
        resultado = matriz[0][n - 1];
        System.out.println("");
        System.out.println("Resultado:");
        System.out.println(this.redondear(resultado));
       
       
       
       
        return resultado;
       
    }
   
    private double trapecioExtendido(Funcion funcion, double a, double b, double n) {
       
        double resultado = 0;
        resultado += funcion.evaluar(a);
        String centro = "";
       
        double h = (b - a) / n;
        double partes = 0;
        for (int i = 1; i < n; i++) {
           
            partes += funcion.evaluar(a + i * h);
            centro += this.redondear(funcion.evaluar(a + i * h)) + (i != (n - 1) ? " + " : "");
        }
        if (centro.equals("")) {
            centro = "0";
        }
       
        resultado += (2 * partes);
       
        resultado += funcion.evaluar(b);
        resultado *= ((b - a) / (2 * n));
       
       
        System.out.println("((" + b + " - " + a + ") / " + (2 * n) + ") * (" + this.redondear(funcion.evaluar(a)) + " + 2(" + centro + ") + " + this.redondear(funcion.evaluar(b)) + "  ) = " + this.redondear(resultado));
       
       
       
       
        return resultado;
       
    }
   
    public void consola() {
       
        Consola consola = new Consola();
        String funcion_cadena = consola.getCadena("Ingresa la Funcion");
        double a = consola.getNumero("Ingresa el Valor para a");
        double b = consola.getNumero("Ingresa el Valor para b");
        int n = consola.getEntero("Ingresa el Numero de Niveles", 4);
       
       
        boolean fraccion = consola.getBoolean("Quieres usar Fraccciones?");
        int decimales = consola.getEntero("cuantos decimales queres usar para el reporte?", 6);
       
        this.fraccion = fraccion;
        this.decimales = decimales;
       
        consola.limpiarPantalla();
        Funcion funcion = new Funcion(funcion_cadena);
        this.evaluar(funcion, a, b, n);
       
    }
}
TOP

Related Classes of metodos.Romberg

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.