Pessoas da Ciência da Computação:
Originalmente, eu postei essa pergunta no Math Stack Exchange e alguém comentou que eu poderia obter respostas "muito melhores" aqui:
Eu sou um novato em métodos numéricos e Matlab. Estou tentando avaliar a seguinte soma de duas integrais triplas (obviamente pode ser escrita de maneira mais simples, mas você ainda não pode avaliar simbolicamente (?)). Estou tendo problemas para obter o para trabalhar aqui, então eu relutantemente o dividi em pedaços aqui: quero encontrar a soma de
e
Onde
e
EDIT (2 de março de 2013): Alguém respondeu que o Mathematica fazia as integrais simbolicamente. Eu apenas tentei fazer isso (com versões simplificadas das integrais) e o Mathematica só conseguiu fazer as duas externas da primeira e parou na segunda. Gostaria muito de receber alguma ajuda. Aqui está o que eu fiz .:
Eu tentei avaliar
via
Integre [r1 ^ 3 / r2 ^ 3 * t ^ 2 * Exp (-t ^ 2), {t, 0, r2 - r1}, {r1, 1, r2}, {r2, 1, 2}]
e Mathematica retorna (tive problemas com o aqui porque o resultado é longo. Eu quebrei em duas equações. se alguém souber uma boa maneira de exibir isso, por favor me diga):
Então eu tentei avaliar
usando
Integre [(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}]
agora mesmo, e o Mathematica não retornou uma resposta após cerca de meia hora (mas estou tendo problemas de rede de computadores no momento e eles podem ser os culpados).
[FIM DE EDIÇÃO DE 2 DE MARÇO]
Sei que o Matlab é um bom software, mas ouvi dizer que as integrais triplas numéricas são difíceis de executar com precisão, e os matemáticos devem ser céticos, portanto, quero uma maneira de verificar a precisão dessa resposta. As integrais fornecem o valor esperado de um determinado experimento (se alguém quiser, posso editar esta pergunta para descrever o experimento): implementei o experimento no Matlab usando números gerados aleatoriamente, um milhão de vezes e calculei a média dos resultados. Repeti esse processo quatro vezes. Aqui estão os resultados (peço desculpas se usei a palavra "julgamento" incorretamente):
Teste 1:
Teste 2:
Teste 3:
Teste 4:
Teste 5:
Embora cada teste tenha usado um milhão de amostras, os valores da simulação concordam apenas no primeiro dígito significativo. Eles não estão próximos o suficiente um do outro para eu determinar se a integral tripla numérica é precisa.
Então, alguém pode me dizer se posso confiar no resultado do "triplequad" aqui e sob que circunstâncias alguém pode confiar nele em geral?
Uma sugestão que recebi no Math Stack Exchange foi tentar outro software como Mathematica, Octave, Maple e SciPy. Esse é um bom conselho? As pessoas realmente fazem trabalho numérico no Mathematica e Maple? O Octave é uma espécie de clone do Matlab, então posso assumir que ele usa os mesmos algoritmos de integração? Eu nunca ouvi falar do SciPy antes e gostaria de ter alguma opinião sobre isso.
UPDATE: Alguém do Math Stack Exchange fez isso no Maple e conseguiu. Isso é concordância com três números significativos. Esse é um bom sinal.
Além disso, eu gostaria de receber sugestões sobre como inserir expressões longas e com várias linhas no no Stack Exchange. Você pode usar o ambiente "alinhado" aqui? Eu tentei e não consegui fazê-lo funcionar.
Respostas:
Antes de tudo, não é o software (ou pelo menos não deveria) que determina a qualidade da solução de um problema, é a qualidade e a adequação do algoritmo aplicado. Você deve verificar qual algoritmo está sendo usado pelo triplequad no Matlab (eu acho que ele usa uma quadratura gaussiana adaptável aninhada). E você deve verificar quais são as tolerâncias solicitadas (tolerância absoluta e relativa necessária). As chances são de que, por padrão, ele solicite apenas10- 8 precisão relativa.
A resposta que vem do Maple é provavelmente feita pela Computer Algebra e talvez encontre uma solução fechada que foi avaliada usando um ponto flutuante de precisão dupla. Isso tem a vantagem de que você não está aproximando a integral por um somatório finito (e, portanto, introduzindo erros de aproximação), mas o Computer Algebra System encontrará uma expressão para a integral que poderá ser avaliada. Obviamente, deve-se tomar cuidado ao avaliar esta expressão (para arredondamento).
Se você quiser fazer isso com o SciPy, também precisará recorrer à quadratura gaussiana adaptável aninhada usando as rotinas subjacentes do Quadpack (Piessens et al.). No Octave, você terá a mesma abordagem. E não ficaria muito surpreso se o Matlab também usar o Quadpack como mecanismo de quadratura (já que é a referência).
fonte
infolevel[`evalf/int`] := 4
. Tem certeza de que a Mape não consegue encontrar uma solução fechada? A integral não parece ser muito complicada. Você poderia tornar sua folha de bordo pública em algum lugar?