高度振荡积分计算的最新技术是什么?

计算科学 正交 精确 数值分析
2021-12-23 20:47:19

将一维和更高维的高度振荡积分逼近到任意精度的最新技术是什么?

3个回答

我不完全熟悉现在对立方(多维积分)所做的事情,所以我将自己限制在正交公式中。

振荡积分求积有许多有效的方法。有适用于有限振荡积分的方法,也有适用于无限振荡积分的方法。

对于无限振荡积分,使用的两种更有效的方法是 Longman 方法和由 Ooura 和 Mori 改进的双指数求积法。(但另见 Arieh Iserles 的这两篇 论文。)

Longman 的方法依赖于通过拆分积分区间将振荡积分转换为交替级数,然后用序列变换方法对交替级数求和。例如,当积分形式的振荡积分时

0f(t)sintdt

将其转换为交替总和

k=0kπ(k+1)πf(t)sintdt

这种交替和的项是用某种正交方法计算的,如 Romberg 方案或高斯正交。Longman 的原始方法使用Euler 变换,但现代实现用更强大的收敛加速方法代替 Euler,如Shanks 变换Levin 变换

双指数求积法则巧妙地改变变量,然后利用梯形法则对变换后的积分进行数值计算。

对于有限振荡积分,Piessens(QUADPACK 的贡献者之一)和 Branders 在两篇 论文中详细介绍了对 Clenshaw-Curtis 求积的修改(即构造被积函数非振荡部分的 Chebyshev 多项式展开式)。另一方面,Levin方法对求积使用搭配法。(我听说现在有一个更实用的旧备用版本,Filon 的方法,但我没有这方面的经验。)


这些是我临时记得的方法;我确定我已经忘记了振荡积分的其他好方法。如果我记得他们,我稍后会编辑这个答案。

除了“多维与一维”和“有限范围与无限范围”之外,方法的一个重要分类是“一种特定类型的振荡器(通常是傅立叶类型:sin(t),exp(it)等,或贝塞尔类型:J0(t)等)与更一般的振荡器(exp(ig(t))甚至更通用的振荡器w(t))”。

起初,振荡积分方法专注于特定的振荡器。正如JM所说,突出的方法包括有限范围积分的 Filon 方法和 Clenshaw-Curtis 方法(这两者密切相关),以及无限范围积分的基于级数外推的方法和 Ooura 和 Mori 的双指数方法。

最近,已经发现了一些通用方法。两个例子:

  1. Levin 的基于搭配的方法exp(ig(t))( Levin 1982 ),或以后的任何振荡器w(t)由线性 ODE 定义(由JM链接的Levin 1996)。Mathematica 将Levin 方法用于更专业规则未涵盖的积分。

  2. Huybrechs 和 Vandewalle 的方法基于沿复杂路径的解析延拓,其中被积函数是非振荡的(Huybrechs 和 Vandewalle 2006)。

对于更一般的方法,有限和无限范围积分的方法之间没有必要区分,因为紧化变换可以应用于无限范围积分,导致仍然可以用一般方法解决的有限范围振荡积分,尽管有不同的振荡器。

莱文的方法可以通过迭代维度和其他方式扩展到多个维度,但据我所知,迄今为止文献中描述的所有方法都有样本点,这些样本点是一维样本点或其他东西的外积随着维度呈指数增长,因此它迅速失控。我不知道高维度的更有效方法;如果可以在高维度的稀疏网格上找到任何样本,它将在应用程序中有用。

在大多数编程语言(C、Python、Fortran 等)中,为更通用的方法创建自动例程可能很困难,在这些语言中,您通常希望将被积函数编程为函数/例程并将其传递给积分器例程,因为更多一般方法需要知道被积函数的结构(哪些部分看起来是振荡的,什么类型的振荡器等),不能将其视为“黑匣子”。

您还可以查看 Marnix Van Daele 和合著者的作品。参见例如thisthis