Quale quadratura numerica scegliere per integrare una funzione con le singolarità?


9

Ad esempio, vorrei calcolare numericamente la -norm di in alcuni domini che include zero, ho provato la quadratura di Gauss e fallisce, è un po 'lontano dal vero -norm sulla sfera dell'unità usando coordinate sferiche per integrarsi, c'è un buon modo per farlo? Questo problema si riscontra spesso nell'elemento finito che calcola i problemi del giocattolo per domini con angoli rientranti. Grazie.L2u=1(X2+y2+z2)1/3L2


2
Se l'origine è all'interno del dominio di integrazione, posso suggerire di spezzare il tuo integrale e di trasformarlo in coordinate sferiche?
JM il

Sono d'accordo con JM: se conosci in anticipo la posizione e la struttura delle singolarità, stai meglio usando quelle informazioni strutturali nello scrivere le chiamate alle tue routine di quadratura in modo intelligente rispetto a darle in un pacchetto numerico e sperando che (a) trova le singolarità e (b) fa la cosa giusta con loro.

Risposte:


8

Dovresti essere in grado di ottenere risultati accurati con mpmath , un modulo Python per calcoli a virgola mobile di precisione arbitraria. Ci sono esempi di integrazione con le singolarità nella documentazione . Ti consigliamo di dirlo esplicitamente per interrompere l'intervallo:

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

Potrebbe essere necessario aumentare la precisione (ad es. mp.dps=30) E sarà probabilmente lenta, ma dovrebbe essere abbastanza accurata.

Puoi anche provare a nidificare le chiamate a MATLAB quadgk(), che utilizza la quadratura adattativa di Gauss-Kronrod in 1D.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.