2013-06-03 27 views
4

我正在嘗試整合一個非常簡單的功能。積分(x.dx)。我沒有得到1的答案,我得到的答案爲0或0.5,當我包含從0到1的限制。是否有什麼我誤解了在Apache公共庫中實現集成的東西?如何在apache commons math3庫中計算函數的集成?

import org.apache.commons.math3.analysis.integration.*; 
import org.apache.commons.math3.analysis.polynomials.*; 

public static void main(String args[]) 
{ 
    SimpsonIntegrator simpson = new SimpsonIntegrator(); 
    TrapezoidIntegrator trapezoid = new TrapezoidIntegrator(); 
    double[] vector = new double[2]; 
    vector[0] = 0; 
    vector[1] = 1; 

    PolynomialFunction f = new PolynomialFunction(vector); 
    UnivariateFunction uf = (UnivariateFunction)new PolynomialFunction(vector); 
    System.out.println("To String " + uf.toString()); 
    System.out.println("Degree: " + f.degree()); 

    double i = simpson.integrate(10, uf, -Float.MAX_VALUE, Float.MAX_VALUE); 
    double j = trapezoid.integrate(10, uf, 0, 1); 
    System.out.println("Simpson integral : " + i);   
    System.out.println("Trapezoid integral : " + j);   
} 
/*** OUTPUT 
To String x 
Degree: 1 
Simpson integral : 0.0 
Trapezoid integral : 0.5 
***/ 

回答

3

我認爲這是按預期運作。您正在積分的功能是斜率1的直線。

0和1之間的區域爲0.5。在所有的空間積分上方和下方取消了給0

enter image description here

+0

謝謝你,事實上,這是正確的:) – mtleis

+0

@ medPhys-PL我不是在Java中的數學家和新手。有沒有辦法獲得梯形的每個區間的間隔數和大小? – DeepSidhu1313

相關問題