将一维和更高维的高度振荡积分逼近到任意精度的最新技术是什么?
高度振荡积分计算的最新技术是什么?
我不完全熟悉现在对立方(多维积分)所做的事情,所以我将自己限制在正交公式中。
振荡积分求积有许多有效的方法。有适用于有限振荡积分的方法,也有适用于无限振荡积分的方法。
对于无限振荡积分,使用的两种更有效的方法是 Longman 方法和由 Ooura 和 Mori 改进的双指数求积法。(但另见 Arieh Iserles 的这两篇 论文。)
Longman 的方法依赖于通过拆分积分区间将振荡积分转换为交替级数,然后用序列变换方法对交替级数求和。例如,当积分形式的振荡积分时
将其转换为交替总和
这种交替和的项是用某种正交方法计算的,如 Romberg 方案或高斯正交。Longman 的原始方法使用Euler 变换,但现代实现用更强大的收敛加速方法代替 Euler,如Shanks 变换或Levin 变换。
而双指数求积法则巧妙地改变变量,然后利用梯形法则对变换后的积分进行数值计算。
对于有限振荡积分,Piessens(QUADPACK 的贡献者之一)和 Branders 在两篇 论文中详细介绍了对 Clenshaw-Curtis 求积的修改(即构造被积函数非振荡部分的 Chebyshev 多项式展开式)。另一方面,Levin方法对求积使用搭配法。(我听说现在有一个更实用的旧备用版本,Filon 的方法,但我没有这方面的经验。)
这些是我临时记得的方法;我确定我已经忘记了振荡积分的其他好方法。如果我记得他们,我稍后会编辑这个答案。
除了“多维与一维”和“有限范围与无限范围”之外,方法的一个重要分类是“一种特定类型的振荡器(通常是傅立叶类型:,等,或贝塞尔类型:等)与更一般的振荡器(甚至更通用的振荡器)”。
起初,振荡积分方法专注于特定的振荡器。正如JM所说,突出的方法包括有限范围积分的 Filon 方法和 Clenshaw-Curtis 方法(这两者密切相关),以及无限范围积分的基于级数外推的方法和 Ooura 和 Mori 的双指数方法。
最近,已经发现了一些通用方法。两个例子:
Levin 的基于搭配的方法( Levin 1982 ),或以后的任何振荡器由线性 ODE 定义(由JM链接的Levin 1996)。Mathematica 将Levin 方法用于更专业规则未涵盖的积分。
Huybrechs 和 Vandewalle 的方法基于沿复杂路径的解析延拓,其中被积函数是非振荡的(Huybrechs 和 Vandewalle 2006)。
对于更一般的方法,有限和无限范围积分的方法之间没有必要区分,因为紧化变换可以应用于无限范围积分,导致仍然可以用一般方法解决的有限范围振荡积分,尽管有不同的振荡器。
莱文的方法可以通过迭代维度和其他方式扩展到多个维度,但据我所知,迄今为止文献中描述的所有方法都有样本点,这些样本点是一维样本点或其他东西的外积随着维度呈指数增长,因此它迅速失控。我不知道高维度的更有效方法;如果可以在高维度的稀疏网格上找到任何样本,它将在应用程序中有用。
在大多数编程语言(C、Python、Fortran 等)中,为更通用的方法创建自动例程可能很困难,在这些语言中,您通常希望将被积函数编程为函数/例程并将其传递给积分器例程,因为更多一般方法需要知道被积函数的结构(哪些部分看起来是振荡的,什么类型的振荡器等),不能将其视为“黑匣子”。