Gürültülü veya ince yapılandırılmış veriler için orta nokta kuralından daha iyi kareleme var mı?


12

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:01f(t)dtφi[0,2π]

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

üst üste binmiş sinüsler

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 .<102
  • İ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 .


Bu gerçekten ilgilendiğiniz bir sorun mu? 1D'de, çoğu yöntemle muhtemelen oldukça hızlı bir şekilde iyi sonuçlar alabilirsiniz.
David Ketcheson

"Sabit sayıda örnekleme noktam var ve bunları serbestçe yerleştirebiliyorum. Ancak, örnekleme noktalarını etkileşimli olarak, diğer örnekleme noktalarından elde edilen sonuçlara dayanarak yerleştiremiyorum." Bu kısıtlama bana açık değil. Düğümleri, gerçekten akıllı olduğum sürece (aslında adaptif algoritmayı kullanmak yerine) uyarlanabilir bir algoritmanın koyacağı yerlere koymam mümkün mü? Bu konuda "gerçekten akıllı" olmama izin verilmezse, gerçekte ne tür düğüm yerleşimlerine izin verilir?
David Ketcheson

@DavidKetcheson: Bu gerçekten ilgilendiğiniz bir sorun mu? - Evet, gerçekten 1D ile ilgileniyorum. - 1D'de, çoğu yöntemle muhtemelen oldukça hızlı bir şekilde iyi sonuçlar alabilirsiniz. - İşlev değerlendirmesinin maliyetli olabileceğini unutmayın. - o zaman ne tür düğüm yerleşimlerine gerçekten izin verilir? - Soruyu daha açık hale getirmek için düzenledim.
Wrzlprmft

Yardımcı olur teşekkürler. Bana göre soru hala belirsiz görünüyor. Bence daha cevap verilebilecek basit ve daha kesin bir soru var. Bir dizi fonksiyonun (izin verilen kareleme düğümlerinin sayısına bağlı olabilir) ve bir metriğin tanımlanmasını gerektirir. Ardından, orta nokta yönteminin bu metrikte o işlev kümesi üzerinde en uygun olup olmadığını sorabilirsiniz (muhtemelen tüm işlevlerin kareleme için aynı düğüm kümesinin kullanılması gerekir).
David Ketcheson

1
@DavidKetcheson: Bir dizi işlev (izin verilen kareleme düğüm sayısına bağlı olabilir) ve bir metrik tanımlamayı gerektirir. - Bu konuda şimdiye kadar yararlı bir şey bulamadığım göz önüne alındığında, bu tür kısıtlamalar uygulamak için bir neden göremiyorum. Daha ziyade, bu tür kısıtlamalarla, bazı mevcut çalışmaları (veya kolay kanıtları) biraz farklı koşullar veya varsayımlar için hariç tutma riskim olacaktır. Tanımlanan senaryoyu tanımlamak için herhangi bir yol varsa ve referans çalışması veya kolay bir kanıtı olan benzer bir şey varsa, bunun için mutluyum.
Wrzlprmft

Yanıtlar:


1

Her şeyden önce, uyarlanabilir kareleme kavramını yanlış anladığınızı düşünüyorum. Uyarlanabilir kareleme "etkileşimli olarak numune noktaları yerleştirme" anlamına gelmez. Uyarlanabilir kareleme arkasındaki tüm fikir, belirli bir işlevi olabildiğince az işlev değerlendirmesi ile belirli (tahmini) mutlak veya göreceli bir hataya entegre edecek bir plan tasarlamaktır.

İkinci bir açıklama: "Örnekleme noktalarının sayısı sabittir (fonksiyon değerlendirmesinin maliyetli olması nedeniyle), ancak bunları serbestçe yerleştirebilirim". Fikir, örnekleme noktalarının (veya kareleme terminolojisindeki fonksiyon değerlendirmelerinin) mümkün olduğunca az olması gerektiği (yani sabit olmayan) olması gerektiğini düşünüyorum.

Öyleyse, örneğin QUADPACK'te uygulanan uyarlanabilir kareselenin arkasındaki fikir nedir?

  1. Temel bileşen "iç içe" bir kareleme kuralıdır: bu, birinin diğeriyle daha yüksek bir sıraya (veya doğruluğa) sahip olduğu iki kareleme kuralının birleşimidir. Neden? Bu kurallar arasındaki farka dayanarak, algoritma kareleme hatasını tahmin edebilir (elbette, algoritma referans sonucu olarak en doğru olanı kullanacaktır). Örnekler, düğümü ve düğümü olan yamuk kuralı olabilir . QUADPACK söz konusu olduğunda kurallar Gauss-Kronrod kurallarıdır. Bunlar, belirli bir düzeneğin Gauss-Legendre kareleme kuralını kullanan enterpolatuar kareleme kuralları2n2n+1Nve bu kuralın optimal bir uzantısı. Bu, Gauss-Legendre düğümlerinin (yani maliyetli fonksiyon değerlendirmeleri) farklı ağırlıklarla yeniden kullanılması ve bir dizi ekstra düğüm eklenmesiyle daha yüksek bir kareleme düzeninin elde edilebileceği anlamına gelir. Başka bir deyişle, orijinal Gauss-Legendre derece kuralı, derece tüm polinomlarını tam olarak entegre ederken, genişletilmiş Gauss-Kronrod kuralı bazı daha yüksek sıralı polinomu tam olarak entegre edecektir. Klasik bir kural G7K15'tir (15. derece Gauss-Kronrod ile 7. derece Gauss-Legendre). Sihir, Gauss-Legendre'nin 7 düğümünün Gauss-Kronrod'un 15 düğümünün bir alt kümesi olması, bu nedenle 15 işlev değerlendirmesi ile bir hata tahmini ile birlikte dörtlü bir değerlendirmem var!N2N1

  2. Sonraki bileşen bir "böl ve fethet" stratejisidir. Bu G7K15'i integralinizde kaybettiğinizi ve zevkinize göre çok büyük bir kareleme hatası gözlemlediğinizi varsayalım. QUADPACK daha sonra orijinal aralığı eşit aralıklı iki alt aralıkta alt bölümlere ayırır. Daha sonra, G7K15 temel kuralını kullanarak iki alt-integrali yeniden değerlendirecektir. Şimdi, algoritmanın küresel bir hata tahmini (umarım birincisinden daha düşük olması gerekir) değil, aynı zamanda iki yerel hata tahmini vardır. Aralığı en büyük hata ile alır ve bunu ikiye böler. İki yeni integral tahmin edilir ve global hata güncellenir. Global hata istediğiniz hedefin altına gelinceye veya maksimum alt bölüm sayısı aşılıncaya kadar devam edin.

Bu yüzden scipy.quadyöntemi kullanarak yukarıdaki kodunuzu güncellemek için meydan okuyorum. Belki çok sayıda "ince yapı" olan bir integral durumunda, maksimum alt bölüm sayısını ( limitseçenek) artırmanız gerekebilir . Ayrıca epsabsve / veya epsrelparametreleriyle de oynayabilirsiniz .

Ancak, sadece deneysel verileriniz varsa, iki olasılık görüyorum.

  1. Ölçüm noktalarını, yani değerlerini seçme şansınız varsa, iç içe trapezoidal bir kural (ve Romberg ekstrapolasyonundan faydalanabilmeniz) için bunları eşit olarak ve tercihen gücü olarak seçerim.t2
  2. Düğümleri seçmenin bir yolu yoksa, yani ölçümler rastgele zamanlarda gelirse, bence en iyi seçenek hala yamuk kuralıdır.

Bence uyarlanabilir kareleme kavramını yanlış anlıyorsunuz. - Gönderiniz önceki uyarlanabilir kareleme anlayışımı tamamen kabul ediyor ve örnekleme noktalarını etkileşimli olarak yerleştirmeyi nasıl tanımladığımla (bu uygun bir cümle olsun ya da olmasın) net bir eşleşme . - siz yazıyorsunuz […]. Bence fikir, örnekleme noktalarının sayısının […] mümkün olduğunca az olması gerektiği (yani sabit olmayan) olması gerektiğidir. - Eğer bu lüksünüz varsa, elbette, ama deneysel kısıtlamalar o kadar iyi olmayabilir. Örneğin, sabit sayıda pahalı sensörle bir şeyi aynı anda ölçmeniz gerektiğini varsayalım.
Wrzlprmft

Özür dilerim. Sorunuzda "etkileşimli" olarak yorumladım. Anladığım kadarıyla "etkileşimli" bir algoritma tarafından değil kullanıcı tarafından müdahale anlamına gelir. Deneysel verilere cevabımda bir paragraf ekledim. Başka bir yaklaşım, ince yapı bilgisini "filtrelemek", yani bir Fourier dönüşümü uygulamak ve küçük amplitüdlü yüksek dereceli frekansları kaldırmak olacaktır. Bu bir seçenek olabilir mi?
GertVdE

Ölçüm noktalarını seçme olanağınız varsa […] - Eşit uzaklıktaki noktalar orta nokta, düz yamuk, vb. Burada, Romberg ekstrapolasyonu herhangi bir avantaj sağlamaz.
Wrzlprmft

Başka bir yaklaşım, ince yapı bilgisini "filtrelemek" olacaktır […] Bu bir seçenek olabilir mi? - Örneğimde, ince yapının ölçmek istediğim şeyin bir parçası olduğunu varsayıyorum, sadece onu yakalamak için yeterince fazla örneğim yok. Gerçek gürültüye gelince, filtrelememi engelleyen teknik bir kısıtlama yok. Bununla birlikte, tüm etki alanı üzerindeki integral zaten nihai düşük geçiş filtresidir, bu yüzden bunun belirli, iyi huylu ve bilinen özelliklerle gürültü olmadan iyileştirilebileceğinden şüpheliyim.
Wrzlprmft

Gerçekten stokastik mi? Bazıları daha yüksek mertebeden stokastik integral yaklaşımları olan türetilmiş olmalıdır.
Chris Rackauckas

0

Kodunuzun çeşitli dörtlü kurallar ve gürültü ve ince yapıya karşı ne kadar iyi yaptıkları hakkında temel bir şey gösterdiğine ikna olmadım ve çeşitli farklı para cezaları yapısını seçerseniz farklı bir şey bulacağınıza inanıyorum. İşte teorem:

Hiçbir kareleme yöntemi, sınırsız toplam varyasyona sahip bir fonksiyona karşı düşük mutlak veya göreceli hata veremez. Birim yuvarlama olan bir kayan nokta sisteminde , tahminiμ burada sayısal uygulanması üzerine etki eden kuadratür toplamıdır ve .

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

Kanıt: Kareleme düğümleri ve (negatif olmayan) kareleme ağırlıkları ve kayan nokta yaklaşımlarını ve . karşıladığını varsayalım burada Burada birim yuvarlaklığıdır. Sonra {xi}i=0n1{wi}i=0n1w i xw^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)
böylece Toplamın hatasız hesaplandığını varsayar; bu varsayımı bırakmak için ile çarpın .
|Q^[f^]Q[f]|μi=0n1wi(|xif(xi)|+4|f(xi)|)4μ|f|dx+μ|xf|dx
n

Mutatis mutandis de sonucun sabit nokta aritmetiğinde olduğunu gösterebilirsiniz.


Cevabınız için teşekkür ederim. Düşündüğünüz senaryoyu ve sorumla olan ilişkisini anlamakta biraz güçlük çekiyorum. Kayan noktadaki sınırsız toplam varyasyon ile ne demek istiyorsun ? Çok yanılmadıkça, tüm hesaplama sonuçlarım (Romberg ve Gauß-Legendre ile yapılan kontrol durumu hariç), aritmetik uygulamanın yanlışlıklarından (kayan nokta veya sabit nokta) etkilenmekten çok uzaktır. Düşündüğüm gürültü de doğası gereği sayısal değil, deneysel.
Wrzlprmft

@Wrzlprmft: Kayan nokta kanıtlayabildiğim sonuç. Ayrıca sabit noktada kanıtlayabilirim, bu da sonucun deneysel veriler için tutulduğunu gösterir. Kareleme düğümlerindeki herhangi bir hata kaynağı için doğru olduğuna inanıyorum. Açıklığa kavuşturmak için düzenledim.
user14717

Deneysel veriler için, sonuç çok daha ikna edicidir, çünkü genel olarak deneysel veriler farklılaştırılamaz ve dolayısıyla toplam varyasyon sınırsızdır.
user14717

Üzgünüm, ama hala seni takip edemiyorum. Sonucunuz, dördüncülüğün kendisiyle ilgili değil, dördüncül sayısal olarak uygulanırken yapılan hata ile ilgilidir. Yaşadığım sorun ikincisiyle ilgili ve özellikle için tezahür etmeyeceğine inanmak için hiçbir neden göremiyorum . μ=0
Wrzlprmft

Buradaki ana fikir, işlev değerlendirmesinin koşul sayısından gelir. Değerlendirmeleriniz gürültülü olduğundan koşulsuzdur.
user14717
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.