Universidad Nacional Autónoma de México
Colegio de Ciencias y Humanidades
Plantel Sur
Grupo ____ - Cibernética y Computación II
Nombres de los alumnos del equipo:
(en orden alfabético empezando por apellidos, sólo un representante del equipo entregará la tarea y la
marcará como entregada)
1. - Anguiano García Fernando
2. - Cañedo Rosete Francisco Aldahir
3. - Huerta Castillo Javier Tristán
4. * Motta Reyes Emmanuel
5. - Valles Arévalo Catherine Amanda
Actividad:
Desarrollar una clase en Java que permita calcular el valor aproximado de la integral de una Función
cualquiera por el método de Riemann. Utilizar la metodología de programación orientada a objetos respecto a
la abstracción y encapsulamiento.
Puede implementarse cualquiera de las estructuras cíclicas (for, while o do-while). Comenten cuál les
pareció más adecuada.
Realice las siguientes partes de la documentación (los diagramas pueden hacerse a mano e insertarse con una
fotografía tomada desde el celular).
Definición del problema:
[1] Definición
Desarrollar una clase en Java que permita calcular el valor aproximado de la integral de una función por el
método de Riemann.
[2] Objetivo general
Identificar la solución para resolver una integral de una función por el método de Riemann.
[3] Objetivos particulares
Utilizar la metodología de programación orientada a objetos respecto a la abstracción y encapsulamiento.
[4] Glosario
Función Math.sqrt
Función for while o do while
Implementar get y set
Implementar la solución al diseño de pruebas
[5] Alcance (ahora, futuro)
Calcular el valor aproximado en una Integral utilizando el método de Riemann realizando una clase de java
utilizando la codificación programación orientada a objetos respecto a la abstracción y encapsulamiento.
Análisis de la solución:
[6] Caso(s) de uso.
Calcular la función por
el método de Riemann
de una ecuación.
[7] Diagrama de estados.
Calcular la función por
el método de Riemann
de una ecuación.
[8] Prototipo en modo consola.
Cálculo de las ecuaciones de la integral definida:
Cuál es la forma de las ecuaciones por el método de Riemann.
Dame el valor de delta.
Dame el valor de delta de x.
Dame el valor de a, b y c.
El valor aproximado de la ecuación es: 0.6666666666666666
[9] Excepciones (qué problemas pudiera haber con los datos, valores negativos, igual a
cero, números escritos con letra, …).
Obtener un valor negativo o sin solución.
[10] Diagrama de estados.
Método de Riemann.
Valores de a, b y c:
Delta y Delta de x
Diseño de la solución:
[14] Arquitectura:
BlueJ. Para Windows descargar de http://www.bluej.org/download/files/BlueJ-windows-422.zip
Instalable para Mac, Windows y Ubuntu (Linux): https://bluej.org
Codificación:
[18] Codificar en Java la clase anterior.
public class EcuaciondeSegundoGrado {
private double a;
private double b;
private double c;
public EcuaciondeSegundoGrado (final double a, final double b, final double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double[] calcularRaices() {
final double discriminante = b*b - 4*a*c;
if (discriminante < 0) {
return new double[] {};
} else if (discriminante == 0) {
final double x = -b / (2*a);
return new double[] { x };
} else {
final double x1 = (-b + Math.sqrt(discriminante)) / (2*a);
final double x2 = (-b - Math.sqrt(discriminante)) / (2*a);
return new double[] { x1, x2 };
}
}
public double getA() {
return a;
}
public void setA(final double a) {
if(a!=0)
this.a = a;
else
throw new IllegalArgumentException("El valor de a debe ser distinto a cero.");
}
public double getB() {
return b;
}
public void setB(final double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(final double c) {
this.c = c;
}
public String toString() {
return "Ecuación: "
+ ( a==1 ? "" : a ) + "x²"
+ ( b==0 ? "" : (b<0?"":"+") + b + "x" )
+ ( c==0 ? "" : (c<0?"":"+") + c )
+ " = 0 \n"
+ "Raíces: x1 = " + this.calcularRaices()[0] + ", x2 = " + this.calcularRaices()[1];
}
MAiN
public static void mainIntegralDefinida(String[] args) {
// Definimos una función f(x) = x^2 - 1
Function<Double, Double> f = x -> x * x - 1;
// Creamos una instancia de la clase IntegralCalculator
RiemannIntegral calculator = new RiemannIntegral(0, 2, 1000000, f);
// Calculamos el valor aproximado de la integral utilizando el método de Riemann con n=100
double result = calculator.integrate();
// Imprimire el resultado
System.out.println("El valor aproximado de la integral es: " + result);
}
Ejecución de pruebas:
En Repliet se ejecuto y se calculo el valor, utilizando la misma codificación base de la ecuación por el método
de Riemann. Solo se utilizo un main diferente.
Bibliografía y referencias electrónicas:
Avila, J. y Bailón, J. (2022). Análisis y diseño en POO. Portal Académico del CCH, UNAM.
https://bit.ly/3JezMXY
Ávila, J. y Ruíz, C. E. (2022). Lenguaje de programación orientado a objetos con Java. Portal Académico
del CCH, UNAM. https://bit.ly/3j52T5g
Bailón, J. y Baltazar, J. M. (2021). Algoritmos y codificación. Portal Académico del CCH, UNAM.
https://bit.ly/3JftFm6
Ruíz, C. E. y Ávila, A. (2022). Metodología de resolución de problemas. Portal Académico del CCH,
UNAM. https://bit.ly/3JcXTWI