Gente de Ciencias Computacionales:
Me Iniciado esta cuestión en Matemáticas Pila de cambio y alguien comento que yo podría conseguir "mucho mejor" respuestas aquí:
Soy un novato en métodos numéricos y Matlab. Estoy tratando de evaluar la siguiente suma de dos integrales triples (obviamente, se puede escribir de manera más simple, pero aún así no se puede evaluar simbólicamente (?)). Tengo problemas para hacer que el funcione aquí, así que de mala gana lo partí en pedazos aquí: quiero encontrar la suma de
y
dónde
y
EDITAR (2 de marzo de 2013): Alguien respondió que consiguió que Mathematica hiciera las integrales simbólicamente. Solo intenté hacer esto (con versiones simplificadas de las integrales) y Mathematica solo pudo hacer los dos exteriores del primero, y me detuve en el segundo. Agradecería algo de ayuda. Aquí esta lo que hice.:
Intenté evaluar
Integrar [r1 ^ 3 / r2 ^ 3 * t ^ 2 * Exp (-t ^ 2), {t, 0, r2 - r1}, {r1, 1, r2}, {r2, 1, 2}]
y Mathematica regresa (Tuve problemas con aquí porque el resultado es largo. Lo dividí en dos ecuaciones. Si alguien sabe una buena manera de mostrar esto, dígame):
Entonces traté de evaluar
utilizando
Integrar [(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}]
justo ahora, y Mathematica no ha devuelto una respuesta después de aproximadamente media hora (pero estoy teniendo problemas de red informática en este momento, y pueden ser los culpables).
[FIN DE LA EDICIÓN DEL 2 DE MARZO]
Utilicé el comando "triplequad" de Matlab, sin opciones adicionales. Manejé los límites variables de integración por medio de funciones de cabecera, porque no conocía otra forma de hacerlo. Matlab me dio .
Sé que Matlab es un buen software, pero he oído que las integrales triples numéricas son difíciles de hacer con precisión, y se supone que los matemáticos son escépticos, por lo que quiero alguna forma de verificar la precisión de esta respuesta. Las integrales dan el valor esperado de un determinado experimento (si alguien quiere, puedo editar esta pregunta para describir el experimento): implementé el experimento en Matlab usando números generados al azar de manera apropiada, un millón de veces, y promedié los resultados. Repetí este proceso cuatro veces. Aquí están los resultados (pido disculpas si he usado la palabra "prueba" de forma incorrecta):
Prueba 1:
Prueba 2:
Prueba 3:
Prueba 4:
Prueba 5:
Aunque cada ensayo utilizó un millón de muestras, los valores de simulación solo coinciden en el primer dígito significativo. No están lo suficientemente cerca el uno del otro para determinar si la triple integral numérica es precisa.
Entonces, ¿alguien puede decirme si puedo confiar en el resultado de "triplequad" aquí, y bajo qué circunstancias uno puede confiar en él en general?
Una sugerencia que recibí en Math Stack Exchange fue probar otro software como Mathematica, Octave, Maple y SciPy. ¿Es este un buen consejo? ¿La gente realmente hace trabajo numérico en Mathematica y Maple? Octave es una especie de clon de Matlab, ¿puedo asumir que usa los mismos algoritmos de integración? Ni siquiera he oído hablar de SciPy antes y agradecería cualquier opinión al respecto.
ACTUALIZACIÓN: Alguien de Math Stack Exchange lo hizo en Maple y obtuvo . Eso está de acuerdo con tres cifras significativas. Eso es un buen signo.
Además, agradecería sugerencias sobre cómo ingresar expresiones largas de varias líneas en en Stack Exchange. ¿Puedes usar el entorno "alineado" aquí? Lo intenté y no pude hacerlo funcionar.
Respuestas:
En primer lugar, no es el software (o al menos no debería serlo) el que determina la calidad de la solución a un problema, es la calidad y la idoneidad del algoritmo que se aplica. Debería verificar qué algoritmo está utilizando triplequad en Matlab (supongo que usa una cuadratura gaussiana adaptativa anidada). Y debe verificar cuáles son las tolerancias solicitadas (tolerancia absoluta y relativa requerida). Lo más probable es que, por defecto, solo pida una precisión relativa de .10−8
La respuesta que proviene de Maple probablemente la realiza Computer Algebra y tal vez podría encontrar una solución cerrada que luego se evaluó utilizando coma flotante de doble precisión. Esto tiene la ventaja de que no está aproximando la integral mediante una suma finita (y, por lo tanto, está introduciendo errores de aproximación), pero el Sistema de Álgebra Computarizada encontrará una expresión para la integral que luego se puede evaluar. Por supuesto, se debe tener cuidado al evaluar esta expresión (para redondear).
Si desea hacer esto con SciPy, también deberá recurrir a la cuadratura gaussiana adaptativa anidada utilizando las rutinas subyacentes Quadpack (Piessens et al.). En Octave, tendrás el mismo enfoque. Y no me sorprendería demasiado si Matlab también usa Quadpack como motor de cuadratura (ya que es la referencia).
fuente
infolevel[`evalf/int`] := 4
. ¿Estás seguro de que Mape no puede encontrar una solución cerrada? La integral no parece ser demasiado complicada. ¿Podría hacer pública su hoja de arce en alguna parte?