Integrasi numerik fungsi yang didukung kompak pada segitiga

10

seperti judulnya saya mencoba untuk menghitung integral dari fungsi yang didukung secara kompak (polinomial quintic Wendland) pada segitiga. Perhatikan, bahwa pusat fungsi berada di suatu tempat dalam ruang 3-D. Saya mengintegrasikan fungsi ini pada sembarang segitiga, tetapi kecil ( ). Saat ini saya menggunakan integrasi yang dijelaskan oleh Dunavant, 1985 (p = 19).area<(radius/4)22

Namun tampaknya, aturan kuadratur ini tidak cocok untuk masalah yang didukung secara kompak. Ini didukung oleh fakta bahwa ketika saya mengintegrasikan (jadi fungsi yaitu 1 di dalam lingkaran jari-jari 1) pada bidang yang didiskrit menggunakan segitiga, hasil (normalisasi) saya adalah antara 1,001 dan 0,897.f(r)=[r1]

Jadi pertanyaan saya adalah, apakah ada aturan quadrature khusus untuk masalah seperti ini? Apakah aturan integrasi komposit tingkat rendah berfungsi lebih baik?

Sayangnya rutin ini sangat penting dalam kode saya sehingga ketepatan sangat penting. Di sisi lain saya perlu melakukan integrasi ini "beberapa kali" untuk satu langkah waktu sehingga biaya komputasi tidak boleh terlalu tinggi. Paralelisasi bukan masalah karena saya akan menjalankan integrasi itu sendiri secara serial.

Terima kasih sebelumnya atas jawaban Anda.

EDIT: polinomial Wendland diberikan oleh dengan dan dengan r_0 menjadi vektor sembarang dalam \ mathbb {R} ^ 3α=21W(q)=[q2]αh3(1q2)4(2q+1)α=2116π r0R3q=rr0hr0R3

EDIT2: Jika Δ adalah segitiga dua dimensi maka saya ingin menghitung Δω(r)dr dengan ω(r)=W(rr0h) . Jadi q dalam W tidak akan pernah lebih kecil dari 0. Perhatikan bahwa integral adalah integral permukaan atas permukaan 2-D di R3

EDIT3: Saya punya solusi analitis untuk masalah 1-D (line). Menghitung satu untuk 2-D (segitiga) juga dimungkinkan.

Azrael3000
sumber
Bisakah Anda memberi kami beberapa detail fungsi yang Anda coba integrasikan? Apakah itu hanya polinomial? Atau polinomial piecewise?
Pedro
Diedit seperti yang diminta.
Azrael3000

Jawaban:

4

Karena fungsinya halus dalam , tetapi tidak pada derajat tetap (dalam bidang, yaitu), saya akan menyarankan menggunakan skema adaptif sederhana, misalnya Aturan Trapesium dengan metode Romberg , dalam kedua dimensi.q2

Yaitu, jika segitiga Anda ditentukan oleh simpul , dan , dan Anda memiliki rutin yang terintegrasi sepanjang garis dari ke , Anda bisa melakukan hal berikut (dalam notasi Matlab):y z R 3xyzR3romb(f,a,b)fab

int = romb( @(xi) romb( W , xi , y+(z-y)*(xi-x)./(z-x) ) , x , z );

Di romb, jangan gunakan jumlah poin tetap, tetapi teruskan tabel sampai perbedaan antara dua diagonal berturut-turut di bawah toleransi yang Anda butuhkan. Karena fungsi Anda lancar, ini seharusnya merupakan estimasi kesalahan yang baik.

Jika bagian dari segitiga berada di luar domain , Anda dapat mencoba menyesuaikan batas integrasi dalam kode di atas.W(q)

Ini mungkin bukan cara yang paling efisien secara komputasi untuk menyelesaikan masalah Anda, tetapi adaptasi akan memberi Anda lebih banyak kekuatan daripada aturan tingkat tetap.

Pedro
sumber
Fungsi ini sangat kecil di mana-mana kecuali untuk . Lingkungan saat ini menyebabkan masalah. q=0
Arnold Neumaier
Ah terurai menjadi dua masalah 1-D, bukan ide yang buruk sama sekali. Karena ada satu hal yang belum saya katakan. Saya memiliki solusi analitis dalam 1-D sehingga saya dapat mengganti interior dengan fungsi analitis. Saya akan memberikan suntikan +1
Azrael3000
@ArnoldNeumaier, maaf, saya tidak mengerti bagaimana itu mungkin. Bisakah Anda jelaskan?
Pedro
sehalus fungsi , tetapi adalah fungsi nonsmooth dari , dan integrasi lebih dari , sejauh yang saya mengerti pertanyaannya. Fungsi komposit dengan demikian merupakan fungsi tidak mulus dari . q r r rqqrrr
Arnold Neumaier
1
@Pedro Saya menerapkannya dan bekerja seperti pesona. Kami sebenarnya juga menemukan solusi analitis hari ini. Tetapi ini hanya untuk kasus khusus yang dapat digunakan untuk merekonstruksi kasus umum. Itu berarti kita perlu melakukan beberapa dekomposisi domain. Karena Romberg menyatu dalam sekitar 4 langkah saya berpikir bahwa karena ini akan lebih cepat daripada menggunakan rumus analitis. Dan menurut Wikipedia kita bisa melakukan lebih baik daripada Romberg ketika menggunakan polinomial rasional. Anda akan menemukan nama Anda di surat kabar saya berikutnya :) Ceria.
Azrael3000
2

Untuk tinjauan umum yang baik tentang aturan cubature, lihat "R. Cools, An Encyclopaedia of Cubature Formulas J. Complexity, 19: 445-453, 2003". Menggunakan aturan tetap, dapat memberi Anda keuntungan bahwa beberapa aturan mengintegrasikan polinomial dengan tepat (seperti quadrature Gaussian dalam satu dimensi).

Cools juga merupakan salah satu penulis utama CUBPACK , paket perangkat lunak untuk bilangan numerik.

GertVdE
sumber
Saya pikir masalahnya di sini adalah bahwa fungsinya adalah polinomial dari , tetapi adalah fungsi non-linear dalam koordinat spasial. Fungsi ini halus hingga ke tepi fungsi dasar, tetapi tidak polinomial, kecuali sepanjang sumbu. qqq
Pedro
Ini benar, Pedro.
Azrael3000
ah baiklah kesalahanku. Maaf.
GertVdE
2

Aturan integrasi mengasumsikan bahwa fungsi secara lokal didekati dengan baik oleh polinomial tingkat rendah. Masalah Anda tidak ada hubungannya dengan dukungan yang ringkas. Fungsi basis radial yang didukung secara halus di batas pendukung, dan aturan kuadratur hingga urutan kehalusan dapat digunakan tanpa masalah. (Aturan urutan lebih tinggi tidak membantu; oleh karena itu Anda sebaiknya tidak menggunakan aturan yang mengintegrasikan polinomial derajat 5 dengan tepat.)

Dalam kasus Anda, ketidaktepatan berasal dari fakta bahwa asumsi aproksimasi polinomial yang baik gagal dalam kasus Anda untuk segitiga dekat , bahkan ketika mereka tidak mengandung .r 0r0r0

q q r r r 0 r rW halus sebagai fungsi , tetapi adalah fungsi nonsmooth dari , dengan gradien yang menjadi tak terbatas dalam batas . Integrasi lebih dari , dan fungsi komposit adalah fungsi tidak mulus dari .qqrrr0rr

Jika segitiga tidak mengandung , fungsinya adalah tetapi ini tidak membantu karena turunan yang lebih tinggi tumbuh sangat cepat mendekati , dan kesalahan metode orde tinggi sebanding dengan turunan orde tinggi, maka sangat besar !C i n f r 0r0Cinfr0

Obat sederhana adalah dengan membagi setiap segitiga T menjadi sejumlah N_T subtriangles. Anda dapat mengambil jauh dari , dan mendekati . Anda dapat mengetahui secara offline seberapa besar harus untuk segitiga dengan diameter dan jarak tertentu dari untuk mencapai akurasi yang diinginkan. Selain itu, Anda hanya boleh menggunakan rumus pesanan rendah mendekati .r 0 N T1 r 0 N T r 0 r 0NT=1r0NT1r0NTr0r0

Saat Anda mengintegrasikan lebih dari satu segitiga, tetapi adalah 3-dimensi, segitiga itu tampaknya dalam .R 3r0R3

Obat yang lebih cepat karena itu akan mentabulasikan integral untuk sebagai fungsi dari koordinat segitiga (dinormalisasi dengan memutarnya menjadi plane 2-dimensi sedemikian sehingga satu titik terletak pada sumbu, dan memantulkannya sedemikian rupa sehingga yang kedua) vertex terletak di atasnya). Tabulasi ini harus cukup rinci untuk membuat interpolasi linier atau kuadrat cukup akurat. Tapi Anda bisa menggunakan metode lambat yang diuraikan terlebih dahulu untuk membuat tabel ini.x y xr0=0xyx

Cara lain untuk menghilangkan masalah adalah dengan menggunakan fungsi basis radial yang didukung secara kompak yang merupakan polinomial dalam daripada . Ini halus di mana-mana, dan mudah diintegrasikan. qq2q

Arnold Neumaier
sumber
Saya pikir ada sedikit kesalahpahaman. Saya memperbarui deskripsi pertanyaan saya. Sebagai soal fakta, dalam integral tidak pernah bisa lebih kecil dari 0. Dan belum tentu terkandung dalam segitiga. r 0qr0
Azrael3000
Tambahan baru Anda tidak masuk akal bagi saya. Jika maka harus . Atau apakah Anda mengintegrasikan lebih dari segitiga 2D di ? - Saya tidak berasumsi bahwa ada di dalam segitiga. Saya baru saja menambahkan jawaban saya dengan lebih rinci. r R 3 r 0r0R3rR3r0
Arnold Neumaier
Ya, memang benar bahwa saya mengintegrasikan lebih dari segitiga 2D di . R3
Azrael3000