Computational Science Personen:
Ich habe diese Frage ursprünglich bei Math Stack Exchange gepostet und jemand sagte, dass ich hier möglicherweise "viel bessere" Antworten bekomme:
Ich bin ein Anfänger in numerischen Methoden und Matlab. Ich versuche, die folgende Summe von zwei Dreifachintegralen zu bewerten (es kann offensichtlich einfacher geschrieben werden, aber Sie können es immer noch nicht symbolisch bewerten (?)). Ich habe Probleme, das zum zu bringen, deshalb habe ich es hier widerwillig in Stücke zerbrochen: Ich möchte die Summe von finden
und
wo
und
BEARBEITEN (2. März 2013): Jemand antwortete, dass Mathematica die Integrale symbolisch ausführen soll. Ich habe gerade versucht, dies zu tun (mit vereinfachten Versionen der Integrale), und Mathematica konnte nur die beiden äußeren der ersten ausführen und kam bei der zweiten ins Stocken. Ich würde mich über Hilfe freuen. Folgendes habe ich getan:
Ich habe versucht zu bewerten
Integriere [r1 ^ 3 / r2 ^ 3 * t ^ 2 * Exp (-t ^ 2), {t, 0, r2 - r1}, {r1, 1, r2}, {r2, 1, 2}]
und Mathematica kehrt zurück (Ich hatte Probleme mit hier, weil das Ergebnis lang ist. Ich habe es in zwei Gleichungen aufgeteilt. Wenn jemand eine gute Möglichkeit kennt, dies anzuzeigen, sag es mir bitte):
Dann habe ich versucht zu bewerten
mit
Integriere [(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}]
Gerade jetzt, und Mathematica hat nach ungefähr einer halben Stunde keine Antwort zurückgegeben (aber ich habe im Moment Probleme mit dem Computernetzwerk und sie können schuld sein).
[ENDE DES 2. MÄRZES]
Ich habe den Matlab-Befehl "triplequad" ohne zusätzliche Optionen verwendet. Die variablen Integrationsgrenzen habe ich mit Hilfe von heaviside-Funktionen behandelt, weil ich keine andere Möglichkeit dazu kannte. Matlab hat mir .
Ich weiß, dass Matlab eine gute Software ist, aber ich habe gehört, dass es schwierig ist, numerische Dreifachintegrale genau zu machen, und Mathematiker sollten skeptisch sein. Deshalb möchte ich einen Weg finden, um die Richtigkeit dieser Antwort zu überprüfen. Die Integrale geben den erwarteten Wert eines bestimmten Experiments an (wenn jemand möchte, kann ich diese Frage bearbeiten, um das Experiment zu beschreiben): Ich habe das Experiment in Matlab mit entsprechend zufällig generierten Zahlen millionenfach implementiert und die Ergebnisse gemittelt. Ich habe diesen Vorgang viermal wiederholt. Hier sind die Ergebnisse (ich entschuldige mich, wenn ich das Wort "Studie" falsch verwendet habe):
Versuch 1:
Versuch 2:
Versuch 3:
Versuch 4:
Versuch 5:
Obwohl für jeden Versuch eine Million Proben verwendet wurden, stimmen die Simulationswerte nur in der ersten signifikanten Stelle überein. Sie sind nicht nahe genug beieinander, um zu bestimmen, ob das numerische Dreifachintegral korrekt ist.
Kann mir also jemand sagen, ob ich dem Ergebnis von "Triplequad" hier vertrauen kann und unter welchen Umständen man ihm überhaupt vertrauen kann?
Ein Vorschlag, den ich bei Math Stack Exchange erhalten habe, war, andere Software wie Mathematica, Octave, Maple und SciPy auszuprobieren. Ist das ein guter Rat? Arbeiten Menschen in Mathematica und Maple tatsächlich numerisch? Octave ist eine Art Matlab-Klon. Kann ich also davon ausgehen, dass er dieselben Integrationsalgorithmen verwendet? Ich habe noch nie von SciPy gehört und würde mich über jede Meinung dazu freuen.
UPDATE: Jemand von Math Stack Exchange hat es in Maple gemacht und . Das ist Übereinstimmung mit drei bedeutenden Figuren. Das ist ein gutes Zeichen.
Ich würde mich auch über Vorschläge freuen, wie Sie einen langen, mehrzeiligen Ausdruck in in Stack Exchange eingeben können . Können Sie hier die "ausgerichtete" Umgebung verwenden? Ich habe es versucht und konnte es nicht zum Laufen bringen.
Antworten:
Erstens ist es nicht die Software (oder sollte es zumindest nicht sein), die die Qualität der Lösung eines Problems bestimmt, sondern die Qualität und Angemessenheit des angewendeten Algorithmus. Sie sollten überprüfen, welcher Algorithmus von TripleQuad in Matlab verwendet wird (ich denke, er verwendet eine verschachtelte adaptive Gaußsche Quadratur). Und Sie sollten überprüfen, welche Toleranzen angefordert werden (erforderliche absolute und relative Toleranz). Möglicherweise wird standardmäßig nur eine relative Genauigkeit von angefordert.10- 8
Die Antwort von Maple stammt wahrscheinlich aus der Computer-Algebra, und möglicherweise wurde eine geschlossene Lösung gefunden, die dann unter Verwendung von Gleitkommazahlen mit doppelter Genauigkeit bewertet wurde. Dies hat den Vorteil, dass Sie das Integral nicht durch eine endliche Summation approximieren (und daher Approximationsfehler einführen), sondern das Computer-Algebra-System einen Ausdruck für das Integral findet, der dann ausgewertet werden kann. Bei der Bewertung dieses Ausdrucks ist natürlich Vorsicht geboten (Abrundung).
Wenn Sie dies mit SciPy tun möchten, müssen Sie auch unter Verwendung der zugrunde liegenden Quadpack-Routinen (Piessens et al.) Auf verschachtelte adaptive Gaußsche Quadratur zurückgreifen. In Octave haben Sie den gleichen Ansatz. Und es würde mich nicht überraschen, wenn Matlab Quadpack auch als Quadrature Engine verwendet (da es die Referenz ist).
quelle
infolevel[`evalf/int`] := 4
. Sind Sie sicher, dass Mape keine geschlossene Lösung finden kann? Das Integral scheint nicht zu kompliziert zu sein. Könnten Sie Ihr Ahornblatt irgendwo veröffentlichen?