2010-08-01 27 views
24

Necesito desarrollar un programa en Java para resolver algunas integrales. Integrales como este:¿Cómo resolver un Integral en Java?

alt text

he buscado algunas funciones para hacer esto, en java.math pero no encontraron nada.

¿Alguien tiene una idea para encontrar una solución para esto? (tal vez algunas bibliotecas adicionales o algo por el estilo)

Gracias mucho !!

+6

qué buscáis un (número aproximado) numérica o simbólica (una fórmula que representa el resultado exactamente) solución? – meriton

+1

Para la integración simbólica es posible que desee considerar http://integrals.wolfram.com/index.jsp –

+0

@meriton Este hilo tiene alguna solución para la aproximación numérica. ¿Pero cómo obtengo la solución simbólica? –

Respuesta

16

El artículo de Wikipedia sobre integración numérica tiene una sección sobre methods for one-dimensional integrals.

no debería tener ningún problema en la aplicación de la "trapezoidal" o regla "rectángulo".

+0

también este documento le ayuda a usted, tolerancias de uso y error de las fórmulas http://www.mpia-hd.mpg.de/~mordasini/UKNUM/integration.pdf – mehmet

11

La biblioteca Apache Commons Math contiene, en la sección Numerical Analysis, cuatro diferentes integradores numéricos:

  • método de Romberg
  • método de Simpson
  • método trapezoidal
  • Legendre -Gauss método
+0

Hola, descargo apache math .jar y lo agrego a mis bibliotecas de proyectos. Pero, por ejemplo, cuando intento utilizar una función, por ejemplo, erfc, cuando llamo a Erf erf = new Erf(); (está dentro de las matemáticas en un paquete especial) El estudio de Android me arroja un error que dice "Erf() tiene un acceso privado en org.apaches.coommon.math.special.erf". ¿Por qué esto? – Txispas

+0

@Txispas: si tiene una nueva pregunta, utilice el botón [Preguntar pregunta] (https://stackoverflow.com/questions/ask). Nadie, excepto yo, verá este comentario, y no sé la respuesta :) –

0
/* Petit programme qui calcul numériquement une intégrale selon l'algorithme de Simpson. 
    Avant de l'executer, il faut entrer: 
- l'expression de la fonction f: ligne 12; 
- les bornes inférieure a et supérieure b de l'intégrale: lignes 39 et 40; 
- le nombre de mesures n (n est entier!!!): ligne 41. 

------------------------------------------------------------------------------------------------------ */ 
class Fonction{              //Classe fonction: definit fonction et Simpson 

    double f (double x) {            //DEFINIR la fonction à intégrer. 
    return Math.Cos(x); 
    } 

    double IntSimpson(double a, double b,int n){      //Methode de Simpson pour calcul intégrale 
    int i,z;              //a= borne inférieure et b, borne supérieure d'intégration 
     double h,s;             //n = nombre de pas 

    n=n+n; 
    s = f(a)*f(b); 
    h = (b-a)/n;           
    z = 4; 

    for(i = 1; i<n; i++){ 
     s = s + z * f(a+i*h); 
     z = 6 - z; 
    } 
    return (s * h)/3; 
    } 
} 

class integration{             //Class resultat: calcul l'integrale et affiche le resultat. 

    public static void main(String args[]){ 

    Fonction fonction;           //Appel class fonction 
    fonction = new Fonction(); 

     double a = ???? ;           //RENTRER les valeurs souhaitées de a, b et n !!! 
    double b = ???? ; 
    int n = ???? ; 
    double resultat = fonction.IntSimpson(a,b,n);    //Applique méthode simpson à fonction 


    System.out.println("Integrale vaut: " + resultat);   //Affiche les résultats 
    } 
} 
Cuestiones relacionadas