2010-08-01 20 views
24

Muszę opracować program w Javie, aby rozwiązać niektóre całki. Całki takie jak ten:Jak rozwiązać problem Integral w języku Java?

alt text

szukałem dla niektórych funkcji, aby to zrobić, w java.Math ale nie znalazłem nic.

Czy ktoś ma pomysł na rozwiązanie tego problemu? (może jakieś dodatkowe biblioteki lub coś w tym stylu)

Wielkie dzięki!

+6

Poszukujesz rozwiązania liczbowego (przybliżona liczba) lub symbolicznego (formuła dokładnie reprezentująca wynik)? – meriton

+1

Aby uzyskać symboliczną integrację, możesz rozważyć http://integrals.wolfram.com/index.jsp –

+0

@meriton Wątek ten zawiera rozwiązanie przybliżenia numerycznego. Ale jak uzyskać symboliczne rozwiązanie? –

Odpowiedz

16

Artykuł Wikipedii o integracji numerycznej zawiera dział o numerze methods for one-dimensional integrals.

Nie powinieneś mieć problemu z implementacją reguły "trapezowej" lub "prostokątnej".

+0

również ten dokument pomaga Tobie, tolerancji użytkowania i błędów formuł http://www.mpia-hd.mpg.de/~mordasini/UKNUM/integration.pdf – mehmet

11

Biblioteka Apache Commons Math zawiera w sekcji Numerical Analysis cztery różne integratorów numeryczne:

  • metoda romberga
  • metoda Simpsona
  • metoda trapezu
  • Legendre'a - metoda Gaussa:
+0

Witam, pobieram apache math .jar i dodam do moich bibliotek projektu. Ale na przykład, gdy próbuję użyć funkcji na przykład erfc, kiedy wołam Erf erf = new Erf(); (to jest w matematyce na specjalnym pakiecie) Android studio rzuca mi błąd, który mówi: "Erf() ma prywatny dostęp w org.apaches.coommon.math.special.erf". Dlaczego to? – Txispas

+0

@Txispas: Jeśli masz nowe pytanie, użyj przycisku [Zadaj pytanie] (https://stackoverflow.com/questions/ask). Nikt oprócz mnie nie zobaczy tego komentarza, a ja nie znam odpowiedzi :) –

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 
    } 
} 
Powiązane problemy