我正在尝试集成一个非常简单的函数。整数(x.dx)。我得到的答案不是1,而是0,或者当我包括从0到1的限制时,我得到的答案是0.5。关于apache commons库中集成的实现,我是不是有什么误解?
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
***/发布于 2013-06-03 21:29:10
我认为这和预期的一样。你要积分的函数是斜率1的直线。
在0和1之间,面积为0.5。在所有的空间上,上面和下面的积分相互抵消,得到0。

https://stackoverflow.com/questions/16896961
复制相似问题