Bir işlevi tekilliklerle entegre etmek için hangi sayısal kareleme seçilir?


9

Örneğin, sayısal olarak hesaplanması için istiyorum arasında -norm bir etki olup, sıfır içerir, ben Gauss quadrature denedim ve başarısız, entegrasyon için küresel koordinatlar kullanarak birim topu gerçek normalden çok uzak, bunu yapmak için iyi bir yolu var mı? Bu sorun genellikle yeniden açılan köşeleri olan alanlar için oyuncak problemlerini hesaplayan sonlu elemanlarda görülür. Teşekkürler.L2u=1(x2+y2+z2)1/3L2


2
Kökeni entegrasyon etki alanı içindeyse, integralinizi parçalayıp her birini küresel koordinatlara dönüştürmeyi önerebilir miyim?
JM

JM ile aynı fikirdeyim - tekilliklerin yerini ve yapısını önceden biliyorsanız, bu yapısal bilgileri kareleme rutinlerinize yapılan çağrıları akıllıca yazarken, sayısal bir pakete besleyerek ve (a) tekillikleri bulur ve (b) onlarla doğru olanı yapar.

Yanıtlar:


8

Keyfi hassasiyetli kayar nokta hesaplamaları için bir Python modülü olan mpmath ile doğru sonuçlar elde edebilmelisiniz . Belgelerde tekilliklerle entegrasyon örnekleri vardır . Aralığı açıkça ayırmasını söylemeniz gerekecek:

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])

Hassasiyeti artırmanız gerekebilir (örn. mp.dps=30) Ve muhtemelen yavaş olacaktır, ancak oldukça doğru olmalıdır.

Ayrıca quadgk(), 1D'de uyarlanabilir Gauss-Kronrod kareleme kullanan MATLAB'lara yapılan iç içe çağrıları da deneyebilirsiniz .

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.