Julia 中的双指数积分 - 精度更高

Double Exponential integrals in Julia - better precision

提问人:Student Debil 提问时间:10/31/2023 更新时间:11/9/2023 访问量:50

问:

我正在尝试使用函数 quadde 在 Julia 中使用 DoubleExponentialFormulas.jl 计算积分。但是,在将结果与公式中的 Mathematica 进行比较时,我得到的相对误差为 ~10^10:(abs(mathematica-julia)/mathematica - 1)/eps()。

我想以更高的精度计算四边形的积分。除了在四边形的参数中使用 rtol 之外,还有其他选择吗?

也许有一些更好的函数可以与双指数法集成?

Julia 精密 数值积分

评论

2赞 DNF 10/31/2023
这是一个奇怪的相对误差公式。为什么不呢?另外,您如何知道 Mathematica 结果的准确性?abs(a - b)/abs(b)

答:

1赞 SGJ 11/9/2023 #1

首先,实现将所需的相对公差作为输入参数 (),默认为 ≈ 。如果你想要一个更小的误差,你需要通过一个更小的容差,从你的问题中不清楚你是否已经这样做了。quaddertol1e-8

其次,误差最终将受到精度的限制。Mathematica 使用任意精度的算术。默认情况下,在 Julia 中,您可能使用双精度 (),这可能会将您可达到的精度限制为最多 14 或 15 位。但是,DoubleExponentialFormulas 包提供了一个接口,允许您在想要更高的精度时使用任意精度(以更高的计算成本为代价)。Float64

如果没有一个可运行的例子来说明你试图计算的积分,就很难说更多。