Ma situation.
J'ai une fonction d'une variable complexe définie par une intégrale compliquée. Ce qui m'intéresse, c'est la valeur de cette fonction sur l'axe imaginaire. J'ai un accès numérique à cette fonction sur le ruban suivant: z = ( x , y ) ∈ ( - ∞ , ∞ ) × [ - 1 , 1 ] . Formellement, l'expression intégrale est divergente en dehors de ce domaine, et j'ai donc besoin d'une continuation analytique. Pour résumer ma situation en image,
Voici ce que je sais sur sur ce ruban à partir des chiffres:
Il est simultanément symétrique par rapport aux axes imaginaire et réel.
Elle se désintègre à zéro à .
Il explose près de . Ce pourrait être un pôle ou un point de branchement, je ne sais pas. Je soupçonne que la nature de cette singularité (et peut-être toutes les autres singularités isolées de la suite analytique) dépend du paramétrage spécifique ξ de cette fonction (voir l'intégrale ci-dessous pour plus de détails)
En fait, il ressemble beaucoup à un ou un 1 / ( 1 + z 2 ) 2 n lorsqu'il est tracé. Voici un tracé de la partie réelle:
Ma question est, étant donné la quantité d'informations dont je dispose sur la fonction (accès numérique total à celle-ci sur ce ruban), y a-t-il un moyen pour moi de calculer numériquement une approximation de cette fonction le long de l'axe imaginaire? J'utilise Mathematica au fait.
La raison pour laquelle je m'intéresse aux valeurs le long de l'axe imaginaire est que j'ai besoin d'évaluer la transformée de Fourier suivante de cette fonction:
Ce que j'ai essayé.
J'ai en fait essayé de calculer l'intégrale hautement oscillatoire ultime, l'éq. (1). Évaluer l'éq. (1) pour une seule valeur de 't' prend quelques heures à calculer. J'ai déjà effectué quelques-unes de ces intégrales et les résultats ont du sens, mais je voudrais une approche alternative.
J'ai essayé l'intégration symbolique en vain. J'ai essayé de masser l'intégrande sous une forme plus digeste pour Mathematica, mais mes tentatives n'ont pas réussi.
L'intégrale fautive.
L'intégrale qui m'intéresse est la suivante:
la source
Réponses:
Remarque: je suis quelque peu inquiet à ce stade que les valeurs intégrales que Mathematica me donne soient fausses. Je pensais que cela fonctionnait parce qu'il donnait un résultat raisonnable en peu de temps, mais il se peut que la méthode qu'il essaie d'utiliser soit boguée ou que j'ai fait quelque chose de mal. Il se peut donc que le code ci-dessous ne fonctionne pas du tout, je ne sais pas, désolé.
Note 2: Cela m'a dérangé, j'ai donc écrit une autre version ( code ici , désolé pour la qualité du code) en utilisant Julia et GSL, et il évalue
g
en 2 secondes la même réponse que Mathematica donne ci-dessous. Je pense donc que le code est probablement correct.Mon expérience passée avec l'intégration numérique me porte à croire que les méthodes mathématiques les plus sophistiquées peuvent parfois être spectaculairement utiles, mais aussi que l'évaluation des transformées de Fourier numériques et l'intégration des fonctions rationnelles et algébriques sont le pain et le beurre des algorithmes d'intégration numérique, donc on peut souvent progressez facilement en choisissant soigneusement les algorithmes et en jouant avec leurs paramètres. C'est généralement l'option la plus facile s'il est difficile de voir comment faire fonctionner correctement la technique mathématique.
Résultat:
J'ai fait en sorte que Mathematica ne passe aucun temps à prétraiter symboliquement les intégrandes, car dans ce cas, il n'aurait de toute façon pas pu trouver quoi que ce soit d'utile à ce sujet. Je lui ai également dit d'utiliser spécifiquement une méthode de quadrature oscillatoire pour la seconde intégrale.
Je suppose que pourquoi manipuler au hasard les stratégies d'intégration (voir NIntegrateIntegrationStrategies ) fonctionne du tout, c'est que parfois Mathematica peut accidentellement choisir une mauvaise stratégie automatiquement, tuant les performances, alors que tout ce que je lui demande de faire est au moins un peu significatif même s'il n'est pas optimal. Vous pouvez également envisager d'obtenir de l'aide sur /mathematica/ , ils pourraient en savoir plus sur les composants internes de Mathematica là-bas.
la source
g[t,e0]