Apa quadrature numerik untuk memilih untuk mengintegrasikan fungsi dengan singularitas?

9

Sebagai contoh, saya ingin numerik menghitung -norm dari u = 1L.2 di beberapa domain yang meliputi nol, saya mencoba Gauss quadrature dan gagal, itu agak jauh dari nyataL2-norm pada unit bola menggunakan koordinat bola untuk mengintegrasikan, adalah adakah cara yang baik untuk melakukan ini? Masalah ini sering terlihat dalam elemen hingga menghitung masalah mainan untuk domain dengan sudut masuk kembali. Terima kasih.kamu=1(x2+y2+z2)1/3L.2

Shuhao Cao
sumber
2
Jika asal dalam domain integrasi, bolehkah saya menyarankan memecah integral Anda dan kemudian mengubah masing-masing ke koordinat bola?
JM
Saya setuju dengan JM - jika Anda tahu lokasi dan struktur singularitas sebelumnya, Anda lebih baik menggunakan informasi struktural itu dalam menulis panggilan ke rutinitas quadrature Anda secara cerdas vs. memasukkannya ke paket numerik dan berharap bahwa (a) ia menemukan singularitas dan (b) melakukan hal yang benar dengan mereka.

Jawaban:

8

Anda harus bisa mendapatkan hasil yang akurat dengan mpmath , modul Python untuk perhitungan floating-point presisi-sewenang-wenang. Ada beberapa contoh integrasi dengan singularitas dalam dokumentasi . Anda ingin mengatakannya secara eksplisit untuk memecah interval:

from mpmath import *
f = lambda x,y,z: 1./(x**2+y**2+z**2)**1./3
quad(f,[-1,0,1],[-1,0,1],[-1,0,1])

Anda mungkin perlu meningkatkan presisi (mis. mp.dps=30) Dan kemungkinan akan lambat, tetapi harus cukup akurat.

Anda juga dapat mencoba panggilan bersarang ke MATLAB quadgk(), yang menggunakan quadrature Gauss-Kronrod adaptif dalam 1D.

David Ketcheson
sumber