我正在研究累积分布函数,我需要能够用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不是很擅长,因为我只是用它来制作我在谷歌游戏商店的计算器。
答案 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。