Gens des sciences informatiques:
J'ai initialement posté cette question sur Math Stack Exchange et quelqu'un a commenté que je pourrais obtenir des réponses "bien meilleures" ici:
Je suis novice en méthodes numériques et en Matlab. J'essaie d'évaluer la somme suivante de deux triples intégrales (elle peut évidemment être écrite plus simplement, mais vous ne pouvez toujours pas l'évaluer symboliquement (?)). J'ai du mal à faire fonctionner le ici, donc je l'ai divisé à contrecœur en morceaux ici: je veux trouver la somme de
et
où
et
EDIT (2 mars 2013): Quelqu'un a répondu qu'il avait demandé à Mathematica de faire symboliquement les intégrales. J'ai juste essayé de le faire (avec des versions simplifiées des intégrales) et Mathematica ne pouvait que faire les deux externes du premier, et a calé sur le second. J'apprécierais de l'aide. Voici ce que j'ai fait.:
J'ai essayé d'évaluer
Intégrer [r1 ^ 3 / r2 ^ 3 * t ^ 2 * Exp (-t ^ 2), {t, 0, r2 - r1}, {r1, 1, r2}, {r2, 1, 2}]
et Mathematica revient (j'ai eu des problèmes avec le ici parce que le résultat est long. Je l'ai divisé en deux équations. Si quelqu'un connaît un bon moyen d'afficher cela, dites-le moi):
Ensuite, j'ai essayé d'évaluer
en utilisant
Intégrer [(r1 + r2 - t) ^ 4 * (t ^ 2 + 2 * t * (r1 + r2) - 3 * (r2 - r1) ^ 2) ^ 2 * Exp [-t ^ 2] / r1 ^ 3 / r2 ^ 3, {r2, 1, 2}, {r1, 1, r2}, {t, r2-r1, r2 + r1}]
juste maintenant, et Mathematica n'a pas retourné de réponse après environ une demi-heure (mais j'ai des problèmes de réseau informatique en ce moment, et ils peuvent être à blâmer).
[FIN DE LA MODIFICATION DU 2 MARS]
J'ai utilisé la commande "triplequad" de Matlab, sans options supplémentaires. J'ai géré les limites variables de l'intégration au moyen de fonctions heaviside, car je ne connaissais pas d'autre moyen de le faire. Matlab m'a donné .
Je sais que Matlab est un bon logiciel, mais j'ai entendu dire que les intégrales triples numériques sont difficiles à faire avec précision et que les mathématiciens sont censés être sceptiques, donc je veux un moyen de vérifier l'exactitude de cette réponse. Les intégrales donnent la valeur attendue d'une certaine expérience (si quelqu'un le souhaite, je peux éditer cette question pour décrire l'expérience): J'ai implémenté l'expérience dans Matlab en utilisant des nombres générés de manière appropriée et aléatoire, un million de fois, et en moyenne les résultats. J'ai répété ce processus quatre fois. Voici les résultats (je m'excuse si j'ai mal utilisé le mot «procès»):
Essai 1:
Essai 2:
Essai 3:
Essai 4:
Essai 5:
Bien que chaque essai ait utilisé un million d'échantillons, les valeurs de simulation ne concordent que dans le premier chiffre significatif. Ils ne sont pas assez proches les uns des autres pour que je puisse déterminer si la triple intégrale numérique est exacte.
Alors, quelqu'un peut-il me dire si je peux faire confiance au résultat de "triplequad" ici, et dans quelles circonstances peut-on lui faire confiance en général?
Une suggestion que j'ai eue à Math Stack Exchange était d'essayer d'autres logiciels comme Mathematica, Octave, Maple et SciPy. Est-ce un bon conseil? Est-ce que les gens font du travail numérique dans Mathematica et Maple? Octave est une sorte de clone Matlab, alors puis-je supposer qu'il utilise les mêmes algorithmes d'intégration? Je n'ai même jamais entendu parler de SciPy auparavant et j'aimerais avoir des opinions à ce sujet.
MISE À JOUR: Quelqu'un de Math Stack Exchange l'a fait dans Maple et a obtenu . Cela correspond à trois chiffres importants. C'est un bon signe.
En outre, j'apprécierais des suggestions sur la façon d'entrer une expression longue et multiligne dans dans Stack Exchange. Pouvez-vous utiliser l'environnement "aligné" ici? J'ai essayé et je n'ai pas réussi à le faire fonctionner.
Réponses:
Tout d'abord, ce n'est pas le logiciel (ou du moins il ne devrait pas l'être) qui détermine la qualité de la solution à un problème, c'est la qualité et la pertinence de l'algorithme qui est appliqué. Vous devriez vérifier quel algorithme est utilisé par triplequad dans Matlab (je suppose qu'il utilise une quadrature gaussienne adaptative imbriquée). Et vous devez vérifier quelles sont les tolérances demandées (tolérance absolue et relative requise). Il y a de fortes chances que, par défaut, il ne demande qu'une précision relative de .dix- 8
La réponse provenant de Maple est probablement faite par Computer Algebra et peut-être pourrait-elle trouver une solution fermée qui a ensuite été évaluée à l'aide de virgule flottante double précision. Cela présente l'avantage de ne pas approximer l'intégrale par une sommation finie (et donc d'introduire des erreurs d'approximation), mais le système d'algèbre informatique trouvera une expression pour l'intégrale qui peut ensuite être évaluée. Bien sûr, il faut être prudent lors de l'évaluation de cette expression (pour l'arrondi).
Si vous souhaitez le faire avec SciPy, vous devrez également recourir à la quadrature gaussienne adaptative imbriquée à l'aide des routines Quadpack sous-jacentes (Piessens et al.). Dans Octave, vous aurez la même approche. Et je ne serais pas trop surpris si Matlab utilise également Quadpack comme moteur en quadrature (car c'est la référence).
la source
infolevel[`evalf/int`] := 4
. Êtes-vous sûr que Mape ne trouve pas de solution fermée? L'intégrale ne semble pas trop compliquée. Pourriez-vous rendre votre feuille d'érable publique quelque part?