对于嘈杂或结构精细的数据,有没有比中点法则更好的正交?


12

这个长问题的仅前两个部分是必不可少的。其他仅用于说明。

背景

较高阶的正交函数,例如更高阶的牛顿-科茨复合材料,高斯-莱根特雷和罗姆贝格复合材料,似乎主要用于那些可以对函数进行精细采样而不能进行分析集成的情况。但是,对于具有比采样间隔(例如,请参阅附录A)或测量噪声更精细的结构的函数,它们无法与简单的方法(例如中点或梯形规则)(请参见附录B进行演示)竞争。

这有点直观,例如,复合Simpson规则通过分配较低的权重实质上“丢弃”了四分之一的信息。这样的正交对于足够无聊的功能更好的唯一原因是,正确处理边界效应要大于丢弃信息的效应。从另一角度看,从我的直觉上很清楚,对于具有精细结构或噪声的函数,远离积分域边界的样本必须几乎等距且权重几乎相同(对于大量样本而言) )。另一方面,更好地处理边界效果(与中点方法相比)可能会受益于此类函数的正交。

假设我希望在数值上整合嘈杂或精细结构的一维数据。

采样点的数量是固定的(由于功能评估成本很高),但是我可以自由放置它们。但是,我(或方法)不能交互地放置采样点,即基于其他采样点的结果。我也不事先知道潜在的问题区域。因此,像Gauß–Legendre(非等距采样点)之类的东西就可以了。自适应正交不是必需的,因为它需要交互式放置采样点。

  • 在这种情况下,是否建议使用任何超出中点方法的方法?

  • 或者:是否有任何证据证明在这种情况下中点方法是最好的?

  • 更笼统地说:关于此问题是否已有任何工作?

附录A:精细结构函数的特定示例

我想为估算: 其中和。一个典型的函数如下所示:01f(t)dt

f(t)=i=1ksin(ωitφi)ωi,
φi[0,2π]logωi[1,1000]

叠加罪

我为以下属性选择了此功能:

  • 可以对控制结果进行分析集成。
  • 它在某种程度上具有良好的结构,使得无法使用我正在使用的样本数量()捕获全部。<102
  • 它并不以其精细的结构为主导。

附录B:基准

为了完整起见,这是Python中的基准测试:

import numpy as np
from numpy.random import uniform
from scipy.integrate import simps, trapz, romb, fixed_quad

begin = 0
end   = 1

def generate_f(k,low_freq,high_freq):
    ω = 2**uniform(np.log2(low_freq),np.log2(high_freq),k)
    φ = uniform(0,2*np.pi,k)
    g = lambda t,ω,φ: np.sin(ω*t-φ)/ω
    G = lambda t,ω,φ: np.cos(ω*t-φ)/ω**2
    f = lambda t: sum( g(t,ω[i],φ[i]) for i in range(k) )
    control = sum( G(begin,ω[i],φ[i])-G(end,ω[i],φ[i]) for i in range(k) )
    return control,f

def midpoint(f,n):
    midpoints = np.linspace(begin,end,2*n+1)[1::2]
    assert len(midpoints)==n
    return np.mean(f(midpoints))*(n-1)

def evaluate(n,control,f):
    """
    returns the relative errors when integrating f with n evaluations
    for several numerical integration methods.
    """
    times = np.linspace(begin,end,n)
    values = f(times)
    results = [
            midpoint(f,n),
            trapz(values),
            simps(values),
            romb (values),
            fixed_quad(f,begin,end,n=n)[0]*(n-1),
        ]

    return [
            abs((result/(n-1)-control)/control)
            for result in results
        ]

method_names = ["midpoint","trapezoid","Simpson","Romberg","Gauß–Legendre"]

def med(data):
    medians = np.median(np.vstack(data),axis=0)
    for median,name in zip(medians,method_names):
        print(f"{median:.3e}   {name}")

print("superimposed sines")
med(evaluate(33,*generate_f(10,1,1000)) for _ in range(100000))

print("superimposed low-frequency sines (control)")
med(evaluate(33,*generate_f(10,0.5,1.5)) for _ in range(100000))

(我在这里使用中位数来减少归因于仅具有高频内容的函数的异常值的影响。对于平均值,结果是相似的。)

相对积分误差的中位数为:

superimposed sines
6.301e-04   midpoint
8.984e-04   trapezoid
1.158e-03   Simpson
1.537e-03   Romberg
1.862e-03   Gauß–Legendre

superimposed low-frequency sines (control)
2.790e-05   midpoint
5.933e-05   trapezoid
5.107e-09   Simpson
3.573e-16   Romberg
3.659e-16   Gauß–Legendre

注意:两个月零一个赏金没有结果后,我将其发布在MathOverflow上


真的对这种问题感兴趣吗?在1D模式下,几乎所有方法都可以很快获得良好的效果。
David Ketcheson

“我有固定数量的采样点,可以自由放置。但是,我不能交互地放置采样点,即,基于其他采样点的结果。” 我不清楚这个限制。只要我真的很聪明(而不是实际使用自适应算法),我是否可以将节点放在自适应算法可以放置它们的地方?如果不允许我“真正聪明”,那么实际上允许哪种节点放置?
David Ketcheson

@DavidKetcheson:这是您真正感兴趣的问题吗?–是的,我对一维真的很感兴趣。— 在1D模式下,几乎所有方法都可以很快获得良好的效果。–请记住,功能评估可能会很昂贵。— 那么实际上允许哪种节点放置?–我编辑了我的问题,希望更清楚。
Wrzlprmft

谢谢您的帮助。在我看来,这个问题似乎还很模糊。我认为,有一个简单而精确的问题会更容易回答。这将需要定义一组功能(可能取决于正交节点的允许数量)和一个度量。然后,您可能会问,在该度量标准中,中点方法是否在该函数集上最优(假定必须使用相同的节点集来正交所有函数)。
David Ketcheson

1
@DavidKetcheson:这将需要定义一组功能(可能取决于所允许的正交节点数)和一个度量。–鉴于到目前为止,我在该主题上找不到任何有用的东西,因此我认为没有理由施加此类限制。相反,由于存在这些限制,我可能会冒风险,因为条件或假设略有不同,因此排除了一些现有的工作(或简单的证明)。如果有任何方法可以捕获定义和类似场景中描述的场景,并且存在参考工作或简单的证明,我对此感到高兴。
Wrzlprmft

Answers:


1

首先,我认为您会误解自适应正交的概念。自适应正交并不意味着“交互式放置采样点”。自适应正交背后的全部思想是设计一种方案,该方案将某个功能与某个(估计的)绝对或相对误差相集成,而对功能的评估应尽可能少。

第二点:写“采样点的数量是固定的(由于功能评估成本很高),但是我可以随意放置它们”。我认为这种想法应该是采样点(或正交术语中的函数求值)的数量应尽可能小(即不固定)。

那么,例如在QUADPACK中实现的自适应正交背后的思想是什么?

  1. 基本成分是“嵌套”正交规则:这是两个正交规则的组合,其中一个具有比另一个更高的顺序(或精度)。为什么?根据这些规则之间的差异,该算法可以估计正交误差(当然,该算法将使用最准确的一个作为参考结果)。示例可以是具有节点和节点的梯形规则。对于QUADPACK,规则是高斯-克朗罗德规则。这些是使用某个阶数的Gauss-Legendre正交规则的插值正交规则 2 Ñ + 1 Ñ Ñ 2 Ñ - 12n2n+1N以及此规则的最佳扩展。这意味着可以通过以不同的权重重用高斯-勒格德勒节点(即代价高昂的函数评估)并添加大量额外的节点来获得更高的正交度。换句话说,原始的阶Gauss-Legendre规则将精确地积分所有多项式,而扩展的Gauss-Kronrod规则将精确地积分一些高阶多项式。一个经典的规则是G7K15(7阶高斯-勒根德雷与15阶高斯-克朗罗德)。神奇的是,高斯勒格德勒的7个节点是高斯克朗德15个节点的子集,因此通过15个函数求值,我得到了正交求值和误差估计!N2N1

  2. 下一个要素是“分而治之”的策略。假设您将这个G7K15放到被测物上,并且观察到根据您的品味太大的正交误差。然后,QUADPACK将原始间隔细分为两个等间隔的子间隔。然后,它将使用基本规则G7K15重新评估两个子积分。现在,该算法具有全局误差估计(希望应该低于第一个误差估计),但还有两个局部误差估计。它选择误差最大的间隔并将其一分为二。估计两个新的积分,并更新全局误差。依此类推,直到全局误差低于您要求的目标或超过最大细分数为止。

因此,我要求您使用该scipy.quad方法更新上面的代码。也许在具有很多“精细结构”的被积物的情况下,您可能需要增加细分的最大数量(该limit选项)。您也可以使用epsabs和/或epsrel参数。

但是,如果您只有实验数据,我会看到两种可能性。

  1. 如果您有机会选择测量点(即值),我将等距离地选择它们,最好选择的幂,以便您可以应用嵌套的梯形法则(并从Romberg推断中受益)。2t2
  2. 如果您没有选择节点的方法,即测量是随机发生的,那么我认为最好的选择仍然是梯形法则。

我认为您误解了自适应正交的概念。–您的帖子完全符合我以前对自适应正交的理解,这与我以交互方式定义放置采样点(无论是否合适)的定义完全匹配。- 您写[…]。我认为应该是采样点[…]的数量应尽可能少(即不固定)。–当然,如果您有那样的奢侈,但实验性的限制可能不是那么有益。例如,假设您必须同时使用固定数量的昂贵传感器进行测量。
Wrzlprmft

我很抱歉。我在您的问题中误解了“互动”。在我的理解中,“交互地”是指用户的干预而不是算法的干预。我在关于实验数据的答案中添加了一个段落。另一种方法是“过滤”出精细的结构信息,即应用傅立叶变换并去除小幅度的高阶频率。这是一个选择吗?
GertVdE

如果您有机会选择测量点[…] –无论如何,等距点就是我需要的中点,普通梯形等,因此,这正是我在基准测试中所做的。在这里,隆伯格外推法没有任何优势。
Wrzlprmft

另一种方法是“过滤”出精细的结构信息[…]这是一种选择吗?–在我的示例中,我假设精细结构是我要测量的一部分,我只是碰巧没有足够的样本来完全捕获它。至于实际的噪声,没有任何技术约束可以阻止我进行滤波。但是,整个域中的积分已经是最终的低通滤波器,因此,我怀疑可以在不具有特定,良性和已知属性的噪声的情况下改善这一点。
Wrzlprmft

它真的是随机的吗?必须导出一些高阶随机积分近似值。
克里斯·拉考卡斯

0

我不相信您的代码会展示任何有关各种正交规则的基本知识,以及它们在噪声和精细结构方面的表现如何,并相信,如果您选择各种不同的精细结构,您会发现一些不同的东西。这是定理:

对于具有无穷大总变化量的函数,没有任何正交方法可以提供较低的绝对或相对误差。在单位四舍五入为的浮点系统中,我们得到的估算值为μ 其中是作用于数值实现正交总和的。

|abfdxQ^[f^]||abfdxQ[f]|+μ[4ab|f|dx+ab|xf|dx]
Q^f^f

证明:令正交节点为,(非负)正交权重为并用和表示它们的浮点近似值。假定满足其中其中是单位四舍五入。然后 {xi}i=0n1{wi}i=0n1w^ix^if^f^(x)=f(x)(1+2δ)|δ|μμ

Q^[f^]=i=0n1w^if^(x^i)=i=0n1wi(1+δiw)f(xi+δixxi)(1+2δif)(1+δi)i=0n1wi[f(xi)+δixxif(xi)](1+δiw+2δif+δi)i=0n1wif(xi)+i=0n1δixwixif(xi)+wif(xi)(δiw+2δif+δi)
这样 假定计算总和时没有错误;乘以可删除该假设。
|Q^[f^]Q[f]|μi=0n1wi(|xif(xi)|+4|f(xi)|)4μ|f|dx+μ|xf|dx
n

进行必要的修改后,您还可以显示结果在定点算法中有效。


谢谢您的回答。我在理解您正在考虑的方案及其与我的问题的关系时遇到了一些麻烦。浮点无穷总变化是什么意思除非我很误会,否则我的所有计算结果(除Romberg和Gauß-Legendre的控制情况外)都不会受到算术实现不准确的影响(浮点或定点)。我正在考虑的噪声本质上也不是数字,而是实验性的。
Wrzlprmft

@Wrzlprmft:浮点数是我能够证明的结果。我也可以在不动点上证明它,这表明结果对实验数据成立。我相信对于正交节点中的任何错误源来说都是如此。我已进行编辑以澄清。
user14717

对于实验数据,结果更具说服力,因为一般而言,实验数据是不可微分的,因此总变化是无限的。
user14717

很抱歉,但我仍然无法关注您。您的结果似乎与在数字上实现正交时产生的错误有关,而与正交本身的错误无关。我遇到的问题是关于后者的问题,尤其是我没有理由相信,对于不会出现问题。μ=0
Wrzlprmft

这里的主要思想来自功能评估的条件编号。您的评估很嘈杂,因此条件不佳。
user14717
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.