如何融入 java?

How do I integrate in java?

我正在研究累积分布函数,我需要能够求解 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,因为我只是用它来计算方程式,然后在 google Play 商店的计算器上使用它。

您的积分有一个真实值 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。