Niezbędne są tylko dwie pierwsze części tego długiego pytania. Pozostałe służą wyłącznie ilustracji.
tło
Zaawansowane kwadratury, takie jak kompozyt wyższego stopnia Newtona-Cotesa, Gaußa-Legendre'a i Romberga, wydają się być głównie przeznaczone do przypadków, w których można dokładnie próbkować funkcję, ale nie integrować analitycznie. Jednak w przypadku funkcji o strukturach większych niż interwał próbkowania (patrz przykład A dodatek) lub szumu pomiarowego nie mogą one konkurować z prostymi podejściami, takimi jak punkt środkowy lub reguła trapezowa (demonstracja znajduje się w dodatku B).
Jest to nieco intuicyjne, ponieważ np. Złożona reguła Simpsona zasadniczo „odrzuca” jedną czwartą informacji, przypisując jej niższą wagę. Jedynym powodem, dla którego takie kwadratury są lepsze dla wystarczająco nudnych funkcji, jest to, że prawidłowe zarządzanie efektami granicznymi przeważa nad efektem odrzucenia informacji. Z innego punktu widzenia intuicyjnie jest dla mnie jasne, że w przypadku funkcji o drobnej strukturze lub szumie próbki, które są oddalone od granic domeny integracji, muszą być prawie w równej odległości i mieć prawie taką samą wagę (w przypadku dużej liczby próbek ). Z drugiej strony kwadratura takich funkcji może skorzystać na lepszej obsłudze efektów granicznych (niż w metodzie punktu środkowego).
Pytanie
Załóżmy, że chcę zintegrować numerycznie jednowymiarowe dane z zaszumieniem lub drobną strukturą.
Liczba punktów próbkowania jest stała (ze względu na kosztowną ocenę funkcji), ale mogę je dowolnie umieszczać. Jednak ja (lub metoda) nie mogę umieszczać punktów próbkowania interaktywnie, tj. W oparciu o wyniki z innych punktów próbkowania. Nie znam też wcześniej potencjalnych regionów problemowych. Tak więc coś w stylu Gauß – Legendre (nierównoodległe punkty próbkowania) jest w porządku; kwadratura adaptacyjna nie jest, ponieważ wymaga interaktywnie rozmieszczonych punktów próbkowania.
Czy w takim przypadku zaproponowano metody wykraczające poza metodę punktu środkowego?
Lub: Czy istnieje dowód, że metoda punktu środkowego jest najlepsza w takich warunkach?
Mówiąc bardziej ogólnie: czy są jakieś prace nad tym problemem?
Dodatek A: Konkretny przykład funkcji o drobnej strukturze
Chcę oszacować dla: z i . Typowa funkcja wygląda następująco:φi∈[0,2π]logωi∈[1,1000]
Wybrałem tę funkcję dla następujących właściwości:
- Można go zintegrować analitycznie w celu uzyskania wyniku kontroli.
- Ma drobną strukturę na poziomie, który uniemożliwia uchwycenie wszystkiego przy użyciu liczby próbek, których używam ( ).
- Nie jest zdominowany przez swoją delikatną strukturę.
Załącznik B: Benchmark
Dla kompletności, oto test porównawczy w Pythonie:
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))
(Używam tutaj mediany, aby zmniejszyć wpływ wartości odstających z powodu funkcji, które mają tylko zawartość wysokich częstotliwości. Dla średniej wyniki są podobne.)
Mediany względnych błędów integracji to:
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
Uwaga: po dwóch miesiącach i jednej nagrodie bez rezultatu opublikowałem to na MathOverflow .