1. Integral de Riemann
Para calcular una integral desde código, se pueden hacer dos cosas.
En primer lugar, hacer el código necesario capaz de calcular la función primitiva de una
función dada. Esto no sabemos hacerlo los humanos en todos los casos, así que
difícilmente se lo vamos a contar a un ordenador por medio de un programa. Hay
programas capaces de calcular algunas primitivas, pero desde luego no de todas las
funciones.
La otra opción es conformarse con calcular el valor de la integral definida entre dos
valores. Esto, desde un programa java, se puede hacer de forma aproximada. La integral
definida de una función entre dos valores representa el área entre esa función y el eje de
las x, entre los dos valores y que digamos.
Para calcular este área, se puede aproximar por la suma de las áreas de un montón de
rectángulos. Cada rectángulo tendrá una altura y=f(x) y será de un ancho lo más
estrecho posible.
Un código java que puede calcular esto podría ser como el siguiente.
En primer lugar, una interface para representar una función y=f(x), de forma que
nuestro código tratará con estas interfaces
package chuidiang.metodos_numericos;
public interface InterfaceFuncion {
public double getY (double x);
}
La clase Riemann será la que calcule la aproximación del área -de la integral definida-.
Su código puede ser así
package chuidiang.metodos_numericos;
public class Riemann {
public static double calculaIntegral (
InterfaceFuncion funcion,
double xInicial,
double xFinal,
int numeroPasos)
{
double resultado = 0.0;
double incremento = (xFinal-xInicial)/numeroPasos;
double semiIncremento = incremento/2;
double x = xInicial;
for (int i=0;i<numeroPasos;i++)
2. {
resultado += incremento * funcion.getY(x+semiIncremento);
x+=incremento;
}
return resultado;
}
}
A este método le pasaríamos
• La función a integrar
• El valor xInicial de la integral
• El valor xFinal de la integral
• El número de rectángulos por el que queremos aproximar la integral. Cuanto
más grande, más exactitud, aunque tardará más la cuenta.
Aquí un pequeño ejemplo de cómo llamaríamos a este método para calcular la integral
definida de y=x*x entre 0 y 1
package chuidiang.metodos_numericos;
public class MainEjemplo {
public static void main(String [] args)
{
InterfaceFuncion f = new InterfaceFuncion() {
public double getY(double x) {
return x*x;
}
};
System.out.println(Riemann.calculaIntegral(f, 0.0, 1.0, 1000));
}
}