2010-08-01 32 views
24

Tôi cần phát triển một chương trình trong Java để giải quyết một số tích phân. Tích như thế này:Làm thế nào để giải quyết một tích phân trong Java?

alt text

Tôi đã nhìn đối với một số chức năng để làm điều này, trong java.Math nhưng tôi đã không tìm thấy bất cứ điều gì.

Có ai có ý tưởng để nhận giải pháp cho việc này không? (có thể một số thư viện bổ sung hoặc một cái gì đó tương tự)

Cảm ơn rất nhiều !!

+6

Bạn có tìm kiếm giải pháp số (số gần đúng) hoặc biểu tượng (công thức biểu diễn chính xác kết quả) không? – meriton

+1

Để tích hợp tượng trưng, ​​bạn có thể muốn xem xét http://integrals.wolfram.com/index.jsp –

+0

@meriton Chủ đề này có một số giải pháp cho xấp xỉ số. Nhưng làm thế nào để tôi có được giải pháp tượng trưng? –

Trả lời

16

Bài viết trên Wikipedia về Tích hợp số có một phần trên methods for one-dimensional integrals.

Bạn sẽ không gặp sự cố khi triển khai quy tắc "hình thang" hoặc "hình chữ nhật".

+0

cũng tài liệu này sẽ giúp bạn, sử dụng và dung sai lỗi của các công thức http://www.mpia-hd.mpg.de/~mordasini/UKNUM/integration.pdf – mehmet

11

Thư viện Apache Commons Math chứa, trong phần Numerical Analysis, bốn nhà tích hợp số khác nhau:

  • phương pháp Romberg của
  • phương pháp Simpson
  • phương pháp hình thang
  • Legendre Phương pháp -Gauss
+0

Xin chào, tôi tải xuống bộ đệm apache .jar và tôi thêm vào thư viện dự án của mình. Nhưng ví dụ khi tôi cố gắng sử dụng một hàm cho ví dụ, khi tôi gọi Erf erf = new Erf(); (nó là bên trong toán học trên gói đặc biệt) Android studio ném cho tôi một lỗi mà nói "Erf() có quyền truy cập riêng trong org.apaches.coommon.math.special.erf". Tại sao lại thê nay? – Txispas

+0

@Txispas: Nếu bạn có câu hỏi mới, vui lòng sử dụng nút [Hỏi câu hỏi] (https://stackoverflow.com/questions/ask). Không ai ngoại trừ tôi sẽ thấy bình luận này, và tôi không biết câu trả lời :) –

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 
    } 
} 
Các vấn đề liên quan