public static Punto[] rungeKuttaOrden4(double x0, double xn, double h, double y0, Funcion fun) {
        //Big decimal se utiliza para mayor precision a la hora de calcular el n
        BigDecimal operacion = BigDecimal.valueOf((((xn-x0) / h) + 1));
        int n = operacion.setScale(0, RoundingMode.HALF_UP).intValueExact();   // Cantidad de puntos a devolver.
        Punto[] puntos = new Punto[n];
        //el primer punto es el punto dado formado por los valores x0 y y0
        puntos[0] = new Punto(x0,y0);
        for (int i = 1; i < n; i++) {
            y0 = order4(fun, x0, y0, h); //calcula el nuevo y
            x0 += h; // suma x+h para sacar el nuevo x
            puntos[i] = new Punto(x0, y0); //crea un nuevo punto utilizando el nuevo y0 y el nuevo x0
        }
        return puntos;
    }