我如何在java中集成?

时间:2016-03-15 13:24:13

标签: java math integral

我正在研究累积分布函数,我需要能够用Java解决积分。

我已经在Apache Commons中尝试过Math3,但我也无法解决这个问题。

我需要解决的积分类型是从下限到上限的积分,我需要它集成一个变量,比如'T'。

其余我可以弄清楚,就像在等式中使用变量一样。但是当我从Math3尝试Simpson Integration时,构造函数中有2个参数或4个参数。使用这些:

// Construct an integrator with default settings.
SimpsonIntegrator()

// Build a Simpson integrator with given accuracies and iterations counts.
SimpsonIntegrator(double relativeAccuracy, double absoluteAccuracy, 
    int minimalIterationCount, int maximalIterationCount)

// Build a Simpson integrator with given iteration counts.
SimpsonIntegrator(int minimalIterationCount, int maximalIterationCount)

我也不知道准确性意味着什么。而且我对Integrals不是很擅长,因为我只是用它来制作我在谷歌游戏商店的计算器。

1 个答案:

答案 0 :(得分:0)

您的积分值为I。对于与S(n)样本的数值积分,有辛普森结果2n

绝对精度限制了错误

abs(S(n)-I)

相对准确度是

的界限
abs(S(n)-I)/abs(I).

当加倍被积函数时,绝对误差加倍,相对误差在这样的缩放下保持不变。两种错误类型都有其用途,出于显示目的,相对错误应该更重要,因为它给出了有效数字的数量。例如,如果结果为0.01,则绝对误差为0.01,结果在0.00和0.03之间。在相同情况下,相对误差为0.1会将数值结果限制在0.009和0.011之间。

其他两个数字给出了n(或2n)的起始值和救助值。

由于I未知,因此必须估算其值和误差。为此,使用Simpson有错误顺序4,这意味着渐近

S(n) = I + C·n^(-4)+O(n^(-6))

这样

16·S(2n)-S(n) = 15·I + O(n^(-6))

I

提供了改进的值
16·n^4·(S(n)-S(2n)) = 15·C + O(n^(-2))

给出系数C的估计值,这样就可以对满足误差范围所需的最优n进行一次很好的估计。

C*nopt^(-4) <= min(absacc, relacc*abs(I))

nopt = ceil( pow(C/min(absacc, relacc*abs(I)), 0.25) )

因此,使用最小n计算第一个近似值,然后计算最优n(如果小于最大n)并确认第一个误差估计值。如果失败,则使用新近似值计算新的最优n。