Comment puis-je approximer une intégrale incorrecte?

13

J'ai une fonction f(x,y,z) telle que
R3f(x,y,z)dV
est finie, et je veux approximer cette intégrale.

Je connais les règles de quadrature et les approximations de Monte Carlo des intégrales, mais je vois quelques difficultés à les mettre en œuvre dans un domaine infini. Dans le cas de Monte Carlo, comment procéder pour échantillonner une région infinie (surtout si les régions qui contribuent le plus significativement à l'intégrale sont inconnues)? Dans le cas de la quadrature, comment trouver les points optimaux? Dois-je simplement fixer une région arbitrairement grande centrée autour de l'origine et appliquer des règles de quadrature clairsemées? Comment puis-je approximer cette intégrale?

Paul
la source

Réponses:

20

Dans une dimension, vous pouvez mapper votre intervalle infini à un intervalle fini en utilisant l'intégration par substitution, par exemple

abf(x)dx=u1(a)u1(b)f(u(t))u(t)dt

est une fonction qui va à l'infini dans une plage finie, par exemple tan ( x ) :u(x)tan(x)

F(X)X=2-π/2π/2F(bronzer(t))1cos(2t)+1t

Vous pouvez ensuite utiliser n'importe quelle routine de quadrature numérique régulière pour l'intégrale finie modifiée.

La substitution de plusieurs variables est un peu plus délicate, mais elle est assez bien décrite ici .

Pedro
la source
C'est très intéressant ... Je n'ai même jamais envisagé la possibilité de substitution! Mais le choix de la fonction t -il un effet sur la précision de l'approximation? u(t)
Paul
@Paul: Oui, certainement! La fonction doit être aussi lisse que possible de manière à maintenir f ( u ( t ) ) aussi lisse que possible, permettant ainsi une intégration plus précise. u(t)f(u(t))
Pedro
C'est vrai, mais ce à quoi je pensais était la vitesse à laquelle u (t) converge vers l'infini? Cela affecte-t-il également la précision?
Paul
1
@Paul: Je ne sais pas si je comprends bien votre question, mais la fonction doit finir à l'infini à un moment ou à un autre. S'il prend son temps, puis augmente rapidement, cela introduira de grands gradients dans , ce qui rend son intégration plus difficile et pourrait donc affecter la précision. f(u(t))
Pedro
1
Votre dérivée pour la tangente était fausse; Je l'ai corrigé.
JM
11

La façon standard de le faire est d'extraire de l'expression pour un préfacteur exponentiel, de le transformer en e - x 2 , puis d'utiliser des règles de quadrature gaussiennes (ou Gauss Kronrod) avec ceci comme poids. Sif(x)ex2 est lisse, cela donne généralement d'excellents résultats.f

Dans , la même chose fonctionne avec le poids e - | x | 2R3e|x|2 , et des formules de cubature appropriées peuvent être trouvées, par exemple, dans le livre d'Engels, quadrature numérique et cubature.

Les formules en ligne sont sur http://nines.cs.kuleuven.be/ecf/

Arnold Neumaier
la source
2
Cela fonctionne bien si votre intégrale est à peu près exp (-x ^ 2). Si votre intégrale est approximativement normale, mais centrée loin de l'origine, cette approche peut mal fonctionner.
John D. Cook
1
@ JohnD.Cook: C'est pourquoi j'ai écrit `` extraire un préfacteur exponentiel, le transformer en '', ce qui implique généralement une transformation linéaire, combinant une translation déplaçant le centre vers l'origine, et des rotations et des échelles pour faire le le niveau est approximativement sphérique. La fonction elle-même peut être assez loin de la normale. ex2
Arnold Neumaier
7

Pour la quadrature unidimensionnelle, vous pouvez consulter le livre sur Quadpack (un vieil or mais toujours très pertinent en quadrature unidimensionnelle) et les techniques utilisées dans l'algorithme QAGI, un intégrateur automatique pour une plage infinie.

Une autre technique est la formule de quadrature exponentielle double, bien mise en œuvre pour un intervalle infini par Ooura .

Pour la cubature, vous pouvez consulter l' Encyclopédie des formules de cubature de Ronald Cools.

GertVdE
la source
2
Notez que la quadrature exponentielle double est essentiellement une méthode de substitution; vous faites une substitution qui transforme votre intégrale de gamme infinie en une autre intégrale de gamme infinie dont le taux de décroissance est, bien, double exponentielle ...
JM
1
@JM Correct. Et vous le faites pour tirer le meilleur parti de la formule de sommation d'Euler-Mclaurin pour la règle trapézoïdale, tout comme la transformation IMT et la transformation TANH. Un bel article sur l'histoire du DE écrit par l'un des pères fondateurs peut être trouvé ici
GertVdE
6

f(x)f~(x)f~f

f(x)f~(x)=ex2p(x)p(x)f(x)ex2f~(x)dx

Wolfgang Bangerth
la source
4

Si vous souhaitez utiliser l'intégration de Monte Carlo, vous pouvez commencer par utiliser l' échantillonnage d'importance avec un échantillonneur qui se rapproche approximativement de votre intégrande. Plus votre échantillonneur correspond mieux à votre intégrale, moins il y a de variance dans vos estimations intégrales. Peu importe que votre domaine soit infini tant que votre échantillonneur a le même domaine.

John D. Cook
la source