Bu uzun sorunun sadece ilk iki bölümü önemlidir. Diğerleri sadece örnekleme amaçlıdır.
Arka fon
Yüksek dereceli kompozit Newton – Cotes, Gauß – Legendre ve Romberg gibi gelişmiş kareleme, esas olarak, fonksiyonun iyi bir şekilde örneklenebileceği ancak analitik olarak entegre edilemediği durumlar için tasarlanmıştır. Bununla birlikte, örnekleme aralığından (örnek için Ek A'ya bakın) veya ölçüm gürültüsünden daha ince yapılara sahip işlevler için, orta nokta veya yamuk kuralı gibi basit yaklaşımlarla rekabet edemezler (bir gösterim için Ek B'ye bakın).
Bu biraz sezgiseldir, örneğin, bileşik Simpson kuralı temelde bilginin dörtte birini daha düşük bir ağırlık atayarak “atar”. Bu tür dördünlerin yeterince sıkıcı işlevler için daha iyi olmasının tek nedeni, sınır efektlerinin doğru bir şekilde kullanılmasının atılan bilgilerin etkisinden daha ağır basmasıdır. Başka bir bakış açısından, ince bir yapıya veya gürültüye sahip işlevler için, entegrasyon alanının sınırlarından uzak olan numunelerin neredeyse eşit mesafede olması ve neredeyse aynı ağırlığa sahip olması gerektiği açıktır (çok sayıda örnek için) ). Öte yandan, bu tür işlevlerin kareleme, sınır etkilerinin daha iyi ele alınmasından yararlanabilir (orta nokta yönteminden daha iyi).
Soru
Gürültülü veya ince yapılandırılmış tek boyutlu verileri sayısal olarak entegre etmek istediğimi varsayalım.
Örnekleme noktalarının sayısı sabittir (fonksiyon değerlendirmesinin maliyetli olması nedeniyle), ancak bunları serbestçe yerleştirebilirim. Bununla birlikte, ben (veya yöntem) örnekleme noktalarını etkileşimli olarak, diğer örnekleme noktalarından elde edilen sonuçlara dayanarak yerleştiremez. Ayrıca önceden potansiyel sorunlu bölgeleri de bilmiyorum. Yani, Gauß – Legendre (eşitlikçi olmayan örnekleme noktaları) gibi bir şey iyidir; adaptif kareleme, interaktif olarak yerleştirilmiş örnekleme noktaları gerektirdiği için değildir.
Böyle bir durum için orta nokta yönteminin ötesine geçen herhangi bir yöntem önerildi mi?
Veya: Bu koşullar altında orta nokta yönteminin en iyi olduğuna dair herhangi bir kanıt var mı?
Daha genel olarak: Bu sorun üzerinde mevcut herhangi bir çalışma var mı?
Ek A: İnce yapılandırılmış fonksiyona özel örnek
Tahmin etmek istiyorum için: ileve. Tipik bir işlev şöyle görünür:φi∈[0,2π]
Bu işlevi aşağıdaki özellikler için seçtim:
- Bir kontrol sonucu için analitik olarak entegre edilebilir.
- Kullandığım örnek sayısı ( ) ile hepsini yakalamayı imkansız hale getiren bir seviyede ince bir yapıya sahiptir .
- İnce yapısı hakim değildir.
Ek B: Kıyaslama
Tamlık için, Python'da bir kriter:
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))
(Burada medyanı sadece yüksek frekans içeriğine sahip fonksiyonlar nedeniyle aykırı değerlerin etkisini azaltmak için kullanıyorum. Ortalama olarak sonuçlar benzer.)
Göreli entegrasyon hatalarının medyanları şunlardır:
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
Not: İki ay ve sonuçsuz bir ödül aldıktan sonra bunu MathOverflow'a gönderdim .