Untuk data yang bising atau terstruktur dengan baik, apakah ada kuadratur yang lebih baik daripada aturan titik tengah?

12

Hanya dua bagian pertama dari pertanyaan panjang ini yang penting. Yang lain hanya untuk ilustrasi.

Latar Belakang

Kuadratur maju seperti komposit tingkat tinggi Newton-Cotes, Gauß-Legendre, dan Romberg tampaknya terutama ditujukan untuk kasus-kasus di mana seseorang dapat mengambil sampel fungsi secara halus tetapi tidak berintegrasi secara analitis. Namun, untuk fungsi dengan struktur yang lebih halus daripada interval pengambilan sampel (lihat Lampiran A untuk contoh) atau noise pengukuran, mereka tidak dapat bersaing dengan pendekatan sederhana seperti titik tengah atau aturan trapesium (lihat Lampiran B untuk demonstrasi).

Ini agak intuitif karena, misalnya, aturan Simpson komposit pada dasarnya "membuang" seperempat informasi dengan menetapkan bobot yang lebih rendah. Satu-satunya alasan kuadratur semacam itu lebih baik untuk fungsi-fungsi yang cukup membosankan adalah penanganan efek perbatasan yang lebih baik daripada efek informasi yang dibuang. Dari sudut pandang lain, secara intuitif jelas bagi saya bahwa untuk fungsi dengan struktur atau noise yang halus, sampel yang jauh dari batas domain integrasi harus hampir sama dan memiliki bobot yang hampir sama (untuk jumlah sampel yang tinggi). ). Di sisi lain, kuadratur fungsi-fungsi tersebut dapat mengambil manfaat dari penanganan efek perbatasan yang lebih baik (daripada untuk metode titik tengah).

Pertanyaan

Asumsikan bahwa saya ingin secara numerik mengintegrasikan data satu dimensi yang bising atau terstruktur dengan baik.

Jumlah titik pengambilan sampel ditetapkan (karena evaluasi fungsi menjadi mahal), tetapi saya dapat dengan bebas menempatkannya. Namun, saya (atau metode) tidak dapat menempatkan titik pengambilan sampel secara interaktif, yaitu berdasarkan hasil dari titik pengambilan sampel lainnya. Saya juga tidak tahu daerah masalah potensial sebelumnya. Jadi, sesuatu seperti Gauß – Legendre (titik pengambilan sampel yang tidak sama) tidak apa-apa; quadrature adaptif bukan karena membutuhkan titik pengambilan sampel yang ditempatkan secara interaktif.

  • Apakah ada metode yang melampaui metode titik tengah yang disarankan untuk kasus seperti itu?

  • Atau: Apakah ada bukti bahwa metode titik tengah terbaik dalam kondisi seperti itu?

  • Secara umum: Apakah ada pekerjaan yang ada untuk masalah ini?

Lampiran A: Contoh spesifik dari fungsi terstruktur halus

Saya ingin memperkirakan untuk: dengan dan . Fungsi khas terlihat seperti ini:01f(t)dt

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

sinus yang ditumpangkan

Saya memilih fungsi ini untuk properti berikut:

  • Ini dapat diintegrasikan secara analitis untuk hasil kontrol.
  • Ini memiliki struktur yang bagus pada tingkat yang membuatnya tidak mungkin untuk menangkap semuanya dengan jumlah sampel yang saya gunakan ( ).<102
  • Itu tidak didominasi oleh strukturnya yang halus.

Lampiran B: Tolok Ukur

Untuk kelengkapan, berikut adalah patokan dalam 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))

(Saya di sini menggunakan median untuk mengurangi pengaruh outlier karena fungsi yang hanya memiliki konten frekuensi tinggi. Untuk rata-rata, hasilnya serupa.)

Median kesalahan integrasi relatif adalah:

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

Catatan: Setelah dua bulan dan satu hadiah tanpa hasil, saya memposting ini di MathOverflow .

Wrzlprmft
sumber
Apakah ini jenis masalah yang Anda benar - benar tertarik? Dalam 1D, Anda mungkin bisa mendapatkan hasil yang baik dengan cepat dengan sebagian besar metode apa pun.
David Ketcheson
"Saya memiliki jumlah titik pengambilan sampel yang tetap dan dapat dengan bebas menempatkannya. Namun, saya tidak dapat menempatkan titik pengambilan sampel secara interaktif, yaitu, berdasarkan hasil dari titik pengambilan sampel lainnya." Batasan ini tidak jelas bagi saya. Apakah saya diperbolehkan untuk meletakkan node di mana algoritma adaptif akan menempatkan mereka, selama saya benar-benar pintar (daripada benar-benar menggunakan algoritma adaptif)? Jika saya tidak diizinkan untuk "benar-benar pintar" tentang hal itu, maka penempatan simpul seperti apa yang sebenarnya diizinkan?
David Ketcheson
@ Davidvideteson: Apakah ini jenis masalah yang Anda benar - benar tertarik? - Ya, saya benar-benar tertarik pada 1D. - Dalam 1D, Anda mungkin bisa mendapatkan hasil yang baik agak cepat dengan sebagian besar metode apa pun. - Ingat bahwa evaluasi fungsi mungkin mahal. - lalu apa jenis penempatan simpul yang benar-benar diizinkan? - Saya mengedit pertanyaan saya dengan harapan membuatnya lebih jelas.
Wrzlprmft
Terima kasih, itu membantu. Bagi saya, pertanyaannya masih tampak kabur. Saya pikir ada pertanyaan sederhana dan lebih tepat yang akan lebih bisa dijawab. Ini akan membutuhkan mendefinisikan seperangkat fungsi (yang mungkin tergantung pada jumlah node kuadratur yang diizinkan) dan metrik. Kemudian Anda bisa bertanya apakah metode titik tengah optimal dalam metrik di atas sekumpulan fungsi tersebut (di mana mungkin sekumpulan node yang sama harus digunakan untuk quadrature semua fungsi).
David Ketcheson
1
@ Davidvideteson: Ini akan membutuhkan mendefinisikan satu set fungsi (yang mungkin tergantung pada jumlah node quadrature yang diizinkan) dan metrik. - Mengingat sejauh ini saya gagal menemukan sesuatu yang berguna mengenai hal ini, saya tidak melihat alasan untuk memaksakan pembatasan tersebut. Sebaliknya, dengan pembatasan seperti itu, saya akan mengambil risiko bahwa saya mengecualikan beberapa pekerjaan yang ada (atau bukti mudah) untuk kondisi atau asumsi yang sedikit berbeda. Jika ada cara untuk menangkap skenario yang digambarkan dalam definisi dan sejenisnya dengan referensi yang bekerja atau bukti mudah ada, saya senang tentang itu.
Wrzlprmft

Jawaban:

1

Pertama-tama, saya pikir Anda salah memahami konsep quadrature adaptif. Kuadratur adaptif tidak menyiratkan "menempatkan titik sampel secara interaktif". Seluruh ide di balik quadrature adaptif adalah untuk merancang skema yang akan mengintegrasikan fungsi tertentu ke kesalahan absolut atau relatif (diperkirakan) tertentu dengan evaluasi fungsi sesedikit mungkin.

Komentar kedua: Anda menulis "Jumlah titik pengambilan sampel ditetapkan (karena evaluasi fungsi menjadi mahal), tetapi saya dapat dengan bebas menempatkannya". Saya pikir idenya harus bahwa jumlah titik pengambilan sampel (atau evaluasi fungsi dalam terminologi quadrature) harus sekecil mungkin (yaitu tidak tetap).

Jadi apa ide di balik quadrature adaptif seperti yang diterapkan di QUADPACK misalnya?

  1. Bahan dasar adalah aturan quadrature "bersarang": ini adalah kombinasi dari dua aturan quadrature di mana satu memiliki urutan yang lebih tinggi (atau akurasi) sebagai yang lain. Mengapa? Berdasarkan perbedaan antara aturan-aturan ini, algoritma dapat memperkirakan kesalahan quadrature (tentu saja, algoritma akan menggunakan yang paling akurat sebagai hasil referensi). Contohnya bisa berupa aturan trapesium dengan node dan node. Dalam kasus QUADPACK, aturannya adalah aturan Gauss-Kronrod. Ini adalah aturan kuadratur interpolasi yang menggunakan aturan kuadratur Gauss-Legendre dari pesanan tertentu 2 n + 1 N N 2 N - 12n2n+1Ndan perpanjangan optimal dari aturan ini. Ini berarti bahwa urutan quadrature yang lebih tinggi dapat diperoleh dengan menggunakan kembali node Gauss-Legendre (yaitu evaluasi fungsi yang mahal) dengan bobot yang berbeda dan menambahkan sejumlah node tambahan. Dengan kata lain, aturan orde Gauss-Legendre orde akan mengintegrasikan semua polinomial derajat persis sementara aturan Gauss-Kronrod yang diperluas akan mengintegrasikan beberapa polinomial orde tinggi dengan tepat. Aturan klasik adalah G7K15 (urutan 7 Gauss-Legendre dengan urutan 15 Gauss-Kronrod). Keajaibannya adalah bahwa 7 simpul Gauss-Legendre adalah bagian dari 15 simpul Gauss-Kronrod sehingga dengan 15 evaluasi fungsi, saya memiliki evaluasi quadrature bersama dengan perkiraan kesalahan!N2N1

  2. Bahan selanjutnya adalah strategi "memecah-dan-menaklukkan". Misalkan Anda melepaskan G7K15 ini pada integrand Anda dan Anda melihat kesalahan quadrature yang menurut selera Anda terlalu besar. QUADPACK kemudian akan membagi interval asli dalam dua sub-interval dengan jarak yang sama. Dan kemudian akan mengevaluasi kembali dua subintegral menggunakan aturan dasar, G7K15. Sekarang, algoritma memiliki estimasi kesalahan global (yang semestinya lebih rendah dari yang pertama) tetapi juga dua perkiraan kesalahan lokal. Ini mengambil interval dengan kesalahan terbesar dan membaginya menjadi dua. Diperkirakan dua integral baru dan kesalahan global diperbarui. Dan seterusnya sampai kesalahan global di bawah target yang Anda minta atau jumlah maksimum subdivisi telah dilampaui.

Jadi saya menantang Anda untuk memperbarui kode Anda di atas menggunakan scipy.quadmetode ini. Mungkin dalam kasus integand dengan banyak "struktur halus" Anda mungkin perlu meningkatkan jumlah maksimum subdivisi ( limitopsi). Anda juga bisa bermain dengan epsabsdan / atau epsrelparameter.

Namun, jika Anda hanya memiliki data eksperimental, saya melihat dua kemungkinan.

  1. Jika Anda memiliki kesempatan untuk memilih titik pengukuran, yaitu nilai , saya akan memilihnya secara sama dan lebih disukai sebagai kekuatan sehingga Anda dapat menerapkan aturan trapesium bersarang (dan mendapat keuntungan dari ekstrapolasi Romberg).2t2
  2. Jika Anda tidak memiliki sarana untuk memilih node, yaitu pengukuran datang secara acak, opsi terbaik menurut saya masih adalah aturan trapesium.
GertVdE
sumber
Saya pikir Anda salah memahami konsep quadrature adaptif. - Tulisan Anda sepenuhnya setuju dengan pemahaman saya sebelumnya tentang quadrature adaptif dan ini adalah kecocokan yang jelas untuk bagaimana saya mendefinisikan secara interaktif menempatkan titik pengambilan sampel (apakah itu frasa yang sesuai atau tidak). - Anda menulis [...]. Saya pikir idenya harus bahwa jumlah titik pengambilan sampel [...] harus sekecil mungkin (yaitu tidak tetap). - Jika Anda memiliki kemewahan itu, pasti, tetapi kendala eksperimental mungkin tidak jinak. Misalnya, Anda harus mengukur sesuatu secara bersamaan dengan sejumlah sensor mahal.
Wrzlprmft
Permintaan maaf saya. Saya salah menafsirkan "secara interaktif" dalam pertanyaan Anda. Dalam pengertian saya "secara interaktif" berarti intervensi oleh pengguna bukan oleh suatu algoritma. Saya telah menambahkan paragraf dalam jawaban saya tentang data eksperimen. Pendekatan lain adalah "menyaring" informasi struktur halus, yaitu menerapkan transformasi Fourier dan menghapus frekuensi orde tinggi dengan amplitudo kecil. Apakah itu pilihan?
GertVdE
Jika Anda memiliki kesempatan untuk memilih titik pengukuran [...] - Poin yang sama adalah yang saya butuhkan untuk titik tengah, trapesium polos, dll. Jadi, inilah yang saya lakukan pada tolok ukur saya. Di sini, ekstrapolasi Romberg tidak menghasilkan keuntungan apa pun.
Wrzlprmft
Pendekatan lain adalah "menyaring" informasi struktur yang bagus [...] Apakah itu pilihan? - Dalam contoh saya, saya menganggap struktur halus adalah bagian dari apa yang ingin saya ukur, saya tidak punya cukup banyak sampel untuk menangkapnya sepenuhnya. Adapun kebisingan aktual, tidak ada kendala teknis yang membuat saya tidak bisa memfilter. Namun, integral seluruh domain sudah menjadi filter low-pass utama, jadi saya skeptis bahwa ini dapat ditingkatkan tanpa kebisingan dengan properti spesifik, jinak, dan dikenal.
Wrzlprmft
Apakah ini benar-benar stokastik? Harus ada beberapa turunan yang merupakan pendekatan integral stokastik orde tinggi.
Chris Rackauckas
0

Saya tidak yakin bahwa kode Anda menunjukkan sesuatu yang mendasar tentang berbagai aturan kuadratur dan seberapa baik mereka melawan kebisingan dan struktur halus, dan percaya bahwa jika Anda memilih berbagai struktur denda yang berbeda, Anda akan menemukan sesuatu yang berbeda. Inilah teorema:

Tidak ada metode quadrature yang dapat memberikan kesalahan absolut atau relatif rendah terhadap suatu fungsi dengan variasi total tanpa batas. Dalam sistem floating point dengan unit roundoff , kami memiliki perkiraanμ mana adalah jumlah kuadratur yang bekerja pada implementasi numerik dari .

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

Bukti: Biarkan simpul quadrature menjadi dan bobot kuadratur (non-negatif) menjadi dan menunjukkan aproksimasi titik apung mereka dengan dan . Asumsikan memenuhi mana mana adalah unit roundoff. Kemudian {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)
sehingga Ini mengasumsikan bahwa jumlah dihitung tanpa kesalahan; kalikan dengan untuk menjatuhkan asumsi itu.
|Q^[f^]Q[f]|μi=0n1wi(|xif(xi)|+4|f(xi)|)4μ|f|dx+μ|xf|dx
n

Mutatis mutandis Anda juga dapat menunjukkan bahwa hasilnya memegang aritmatika titik tetap.

pengguna14717
sumber
Terima kasih atas jawabannya. Saya mengalami sedikit kesulitan memahami skenario yang Anda pertimbangkan dan bagaimana kaitannya dengan pertanyaan saya. Apa yang Anda maksud dengan variasi total tanpa batas di floating point? Kecuali saya sangat keliru, semua hasil komputasi saya (kecuali untuk kasus kontrol dengan Romberg dan Gauß-Legendre) jauh dari dipengaruhi oleh ketidakakuratan implementasi aritmatika (floating point atau fixed point). Kebisingan yang saya pertimbangkan juga tidak bersifat numerik, tetapi eksperimental.
Wrzlprmft
@Wrzlprmft: Floating point adalah hasil yang saya bisa buktikan. Saya juga bisa membuktikannya di titik tetap, yang kemudian menunjukkan bahwa hasilnya berlaku untuk data eksperimen. Saya percaya itu benar untuk setiap sumber kesalahan di node quadrature. Saya telah mengedit untuk mengklarifikasi.
user14717
Untuk data eksperimen, hasilnya jauh lebih meyakinkan karena pada umumnya data eksperimen tidak dapat dibedakan dan karenanya total variasi tidak terbatas.
user14717
Maaf, tapi saya masih gagal mengikuti Anda. Hasil Anda tampaknya tentang kesalahan yang dibuat ketika mengimplementasikan quadrature secara numerik, bukan tentang kesalahan quadrature itu sendiri. Masalah saya adalah tentang yang terakhir dan khususnya saya tidak melihat alasan untuk percaya bahwa itu tidak akan bermanifestasi untuk . μ=0
Wrzlprmft
Gagasan utama di sini berasal dari kondisi jumlah evaluasi fungsi. Evaluasi Anda buruk karena mereka berisik.
user14717