시끄 럽거나 미세한 데이터의 경우 중간 규칙보다 더 나은 직교가 있습니까?


12

이 긴 질문의 처음 두 부분 만이 필수적입니다. 다른 것은 단지 설명을위한 것입니다.

배경

고차 합성 Newton–Cotes, Gauß–Legendre 및 Romberg와 같은 고급 쿼드 러처는 주로 함수를 미세하게 샘플링 할 수 있지만 분석적으로 통합 할 수없는 경우를위한 것으로 보입니다. 그러나 샘플링 간격 (예 : 부록 A 참조)보다 미세한 구조의 기능 또는 측정 노이즈의 경우 중간 점 또는 사다리꼴 규칙과 같은 간단한 접근 방식과 경쟁 할 수 없습니다 (시연은 부록 B 참조).

예를 들어 복합 심슨 규칙은 정보의 1/4을 더 낮은 가중치로 할당하여 본질적으로 "삭제"하므로 다소 직관적입니다. 이러한 직각이 충분히 지루한 기능에 더 좋은 유일한 이유는 경계 효과를 올바르게 처리하는 것이 폐기 된 정보의 효과보다 중요하기 때문입니다. 다른 관점에서 볼 때, 미세 구조 또는 노이즈가있는 함수의 경우 통합 영역 경계에서 떨어진 샘플은 거의 같은 거리에 있어야하고 무게는 거의 같아야합니다 (많은 샘플 수). ). 다른 한편으로, 그러한 함수의 직교는 (중간 점 방법보다) 보더 효과의 더 나은 처리로부터 이익을 얻을 수 있습니다.

질문

노이즈가 있거나 미세 구조화 된 1 차원 데이터를 수치 적으로 통합한다고 가정합니다.

샘플링 포인트의 수는 고정되어 있지만 (기능 평가에 비용이 많이 들기 때문에) 자유롭게 배치 할 수 있습니다. 그러나 I (또는 방법)은 대화식으로, 즉 다른 샘플링 지점의 결과를 기반으로 샘플링 지점을 배치 할 수 없습니다. 나는 또한 잠재적 문제 영역을 미리 모른다. 따라서 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

참고 : 결과없이 2 개월 동안 현상금이 한 번 발생하면 MathOverflow에 게시했습니다 .


이것이 당신이 정말로 관심이있는 문제 입니까? 1D에서는 대부분의 방법으로 좋은 결과를 얻을 수 있습니다.
David Ketcheson

"고정 된 수의 샘플링 지점이 있고 자유롭게 배치 할 수 있습니다. 그러나 다른 샘플링 지점의 결과에 따라 대화식으로 샘플링 지점을 배치 할 수 없습니다." 이 제한은 명확하지 않습니다. (실제로 적응 알고리즘을 사용하는 대신) 정말 똑똑하다면 적응 알고리즘이 노드를 배치 할 수 있습니까? "정말 똑똑"한 것이 허용되지 않으면 실제로 어떤 종류의 노드 배치가 허용됩니까?
David Ketcheson

@DavidKetcheson : 이것이 당신이 정말로 관심이있는 문제 입니까? – 예, 저는 1D에 관심이 있습니다. — 1D에서는 대부분의 방법으로 빠른 결과를 얻을 수 있습니다. – 기능 평가는 비용이 많이들 수 있습니다. — 실제로 어떤 종류의 노드 배치가 허용됩니까? – 더 명확하게하기 위해 내 질문을 편집했습니다.
Wrzlprmft

감사합니다. 나에게 질문은 여전히 ​​모호해 보인다. 더 대답하기 쉬운 간단하고 정확한 질문이 있다고 생각합니다. 함수 집합 (허용 된 직교 노드 수에 따라 다름)과 메트릭을 정의해야합니다. 그런 다음 해당 함수 집합에 대한 해당 메트릭에서 중간 점 방법이 최적인지 묻습니다 (아마도 동일한 노드 집합을 모든 함수의 직교에 사용해야 함).
David Ketcheson

1
@DavidKetcheson : 함수 세트 (허용 된 직교 노드 수에 따라 다름 )와 메트릭을 정의해야합니다. – 지금까지이 주제에 대해 유용한 정보를 찾지 못 했으므로 그러한 제한을 적용 할 이유가 없습니다. 오히려 그러한 제한으로 인해 나는 약간 다른 조건이나 가정에 대해 기존의 일 (또는 쉬운 증거)을 배제 할 위험이 있습니다. 참조 작업이나 쉬운 증거가있는 정의 및 유사한 시나리오에서 묘사 된 시나리오를 포착 할 수있는 방법이 있다면 기쁘다.
Wrzlprmft

답변:


1

우선, 당신은 적응 구적법의 개념을 오해한다고 생각합니다. 적응 구적법은 "대화식으로 샘플 포인트 배치"를 의미하지 않습니다. 적응 구적법의 배후에있는 아이디어는 가능한 한 적은 함수 평가로 특정 함수를 특정 (추정 된) 절대 또는 상대 오차에 통합하는 체계를 고안하는 것입니다.

두 번째 언급 : "샘플링 포인트의 수는 고정되어 있지만 (기능 평가로 인해 비용이 많이 들지만) 자유롭게 배치 할 수 있습니다." 샘플링 포인트 (또는 쿼드 러처 용어의 함수 평가)의 수는 가능한 한 작아야합니다 (즉 고정되지 않아야 함).

예를 들어 QUADPACK 에서 구현 된 적응 적 구적법의 기본 개념은 무엇 입니까?

  1. 기본 성분은 "중첩 된"직교 규칙입니다.이 규칙은 하나가 다른 순서보다 높은 차수 (또는 정확도)를 갖는 두 개의 직교 규칙의 조합입니다. 왜? 이러한 규칙의 차이를 기반으로 알고리즘은 구적 오차를 추정 할 수 있습니다 (물론 알고리즘은 가장 정확한 것을 기준 결과로 사용합니다). 예는 노드와 노드 가있는 사다리꼴 규칙 일 수 있습니다 . QUADPACK의 경우 규칙은 Gauss-Kronrod 규칙입니다. 이들은 특정 차수 의 가우스 레전드 레 구적 법칙을 사용하는 보간 구적 법칙입니다.2n2n+1N그리고이 규칙의 최적의 확장. 이것은 다른 가중치로 Gauss-Legendre 노드 (즉, 고가의 함수 평가)를 재사용하고 다수의 추가 노드를 추가하여 더 높은 직교 차수를 얻을 수 있음을 의미합니다. 다시 말해, 원래 가우스 레전드 차수 규칙은 차수의 모든 다항식을 정확하게 적분 하는 반면, 확장 가우스 크론로드 규칙은 일부 고차 다항식을 정확하게 통합 할 것입니다. 고전적인 규칙은 G7K15 (15 차 가우스-크론로드의 7 차 가우스 레전드 르)입니다. 마술은 Gauss-Legendre의 7 개 노드가 Gauss-Kronrod의 15 개 노드의 하위 집합이므로 15 개의 함수 평가를 통해 오차 추정값과 함께 구적법 평가가 있습니다!N2N1

  2. 다음 성분은 "분할 정복"전략입니다. 이 G7K15를 integrand에서 느슨하게하고 취향에 따라 구적 오차가 너무 크다고 가정합니다. 그런 다음 QUADPACK은 원래 간격을 두 개의 동일한 간격의 하위 간격으로 세분화합니다. 그런 다음 기본 규칙 G7K15를 사용하여 두 개의 하위 적분을 다시 평가합니다. 이제 알고리즘에는 전역 오류 추정치 (첫 번째 것보다 희망적으로 낮아야 함)와 두 개의 로컬 오류 추정치가 있습니다. 오류가 가장 큰 구간을 선택하고이 구간을 둘로 나눕니다. 두 개의 새로운 적분이 추정되고 전역 오류가 업데이트됩니다. 전역 오류가 요청한 목표보다 낮거나 최대 세분을 초과 할 때까지 계속됩니다.

따라서 scipy.quad메소드를 사용하여 위의 코드를 업데이트하도록 요청합니다 . "정밀한 구조"가 많은 통합의 경우 최대 세분 ( limit옵션) 을 늘려야 할 수도 있습니다 . epsabs및 / 또는 epsrel매개 변수로 재생할 수도 있습니다 .

그러나 실험 데이터 만있는 경우 두 가지 가능성이 있습니다.

  1. 측정 지점, 즉 값을 선택할 수있는 기회가 있으면 중첩 사다리꼴 규칙을 적용하고 Romberg 외삽을 통해 이익을 얻을 수 있도록 등가 적으로 그리고 바람직하게는 의 거듭 제곱으로 선택합니다 .t2
  2. 노드를 선택할 수단이없는 경우, 즉 측정이 임의의 시간에 이루어 지더라도 내 생각에 가장 좋은 옵션은 여전히 ​​사다리꼴 규칙입니다.

나는 당신이 적응 적 구적법의 개념을 오해한다고 생각합니다. – 귀하의 게시물은 이전에 적응 구적법에 대한 나의 이해에 전적으로 동의 하며 샘플링 지점을 대화식으로 배치 한 방식 (적절한 문구인지 여부) 과 정확히 일치합니다 . — […]라고 쓴다. 샘플링 포인트 […]의 수가 가능한 한 작아야한다는 생각이 있어야합니다. – 그 사치가 있다면, 그러나 실험적인 제약은 그다지 양 성적이지 않을 수 있습니다. 예를 들어, 고정 된 수의 고가의 센서로 동시에 무언가를 측정해야한다고 가정하십시오.
Wrzlprmft

사과드립니다. 귀하의 질문에 "대화 형"으로 잘못 해석했습니다. 내 이해에서 "대화식으로"는 알고리즘이 아닌 사용자의 개입을 의미합니다. 실험 데이터에 대한 답변에 단락을 추가했습니다. 또 다른 접근법은 미세 구조 정보를 "필터링"하는 것입니다. 즉, 푸리에 변환을 적용하고 작은 진폭으로 고차 주파수를 제거합니다. 이것이 옵션일까요?
GertVdE

측정 포인트를 선택할 수있는 기회가 있다면 […] – 등거리 포인트는 어쨌든 중간 점, 평평한 사다리꼴 등에 필요한 것이므로 이것이 바로 벤치 마크에서 한 것입니다. 여기서 Romberg 외삽 법은 아무런 이점이 없습니다.
Wrzlprmft

또 다른 접근법은 미세 구조 정보를 "필터링"하는 것입니다. […] 이것이 옵션입니까? – 나의 예에서, 나는 미세 구조가 내가 측정하고자하는 것의 일부라고 가정하고, 그것을 완전히 포착하기에 충분히 많은 샘플을 가지지 않습니다. 실제 노이즈에 대해서는 필터링을 방해하는 기술적 제약이 없습니다. 그러나 전체 도메인에 대한 적분은 이미 궁극적 인 저역 통과 필터이므로 특정, 양성 및 알려진 특성의 노이즈없이 개선 될 수 있다는 것에 회의적입니다.
Wrzlprmft

정말 확률 론적입니까? 고차 확률 적분 근사치 인 파생물이 있어야합니다.
Chris Rackauckas

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

Mutatis는 또한 결과가 고정 소수점 산술로 유지됨을 보여줄 수 있습니다.


답변 주셔서 감사합니다. 고려중인 시나리오와 이것이 내 질문과 어떻게 관련되는지 이해하는 데 약간의 어려움이 있습니다. 부동 소수점의 무한한 총 변동 은 무엇을 의미 합니까? 내가 잘못 생각하지 않는 한, 내 모든 계산 결과 (Romberg 및 Gauß-Legendre의 제어 사례 제외)는 산술 구현의 부정확성 (부동 소수점 또는 고정 소수점)의 영향을받지 않습니다. 내가 고려하고있는 소음은 본질적으로 수치가 아니라 실험적입니다.
Wrzlprmft

@ Wrzlprmft : 부동 소수점은 내가 증명할 수있는 결과입니다. 또한 고정 소수점으로 증명할 수 있으며 결과는 실험 데이터에 대한 결과임을 나타냅니다. 직교 노드의 모든 오류 원인이 사실이라고 생각합니다. 명확히하기 위해 편집했습니다.
user14717

실험 데이터의 경우, 일반적으로 실험 데이터가 미분 할 수 없으므로 전체 변동이 무한하므로 결과가 훨씬 더 확실합니다.
user14717

미안하지만 여전히 당신을 따르지 않습니다. 결과는 직교 자체의 오류가 아니라 직교를 수치 적으로 구현할 때 발생한 오류에 대한 것 같습니다. 내가 겪고있는 문제는 후자에 관한 것이며 특히 나타나지 않을 것이라고 믿을 이유가 없습니다 . μ=0
Wrzlprmft

여기서 주요 아이디어는 기능 평가의 조건 수에서 비롯됩니다. 소음이 심해 평가가 잘못되었습니다.
user14717
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.