Eu tenho um sistema de equações diferenciais ordinárias - 7 equações e ~ 30 parâmetros que governam seu comportamento como parte de um modelo matemático de transmissão de doenças. Eu gostaria de encontrar os estados estacionários para essas equações Alterar dx/dt = rest of the equation
a 0 = equation
para cada uma das equações torna um problema de álgebra simples. Isso pode ser feito manualmente, mas sou ridiculamente ruim nesse tipo de computação.
Eu tentei usar o Mathematica, que pode lidar com versões menores desse problema ( veja aqui ), mas o Mathematica está paralisando esse problema. Existe uma maneira mais eficiente / eficaz de abordar isso? Um sistema matemático simbólico mais eficiente? Outras sugestões?
Algumas atualizações (21 de março):
- O objetivo é realmente resolvê-los simbolicamente - as respostas numéricas são boas, mas, no momento, o objetivo final é a versão simbólica.
- Existe pelo menos um equilíbrio. Na verdade, não me sentei e provei isso, mas, por design, ele deveria ter pelo menos um trivial em que nenhum esteja infectado no início. Pode não haver nada além disso, mas isso me faria tão contente quanto qualquer outra coisa.
- Abaixo está o conjunto real de equações em discussão.
Em resumo, estou procurando expressões simbólicas para as soluções de um sistema de 7 equações quadráticas em 7 variáveis.
Respostas:
Parece que as equações com as quais você está lidando são todas polinomiais depois de limpar os denominadores. Isso é bom (as funções transcendentais costumam ser um pouco mais difíceis de lidar algebricamente). No entanto, não é uma garantia de que suas equações tenham uma solução fechada. Este é um ponto essencial que muitas pessoas realmente "não entendem", mesmo que o conheçam em teoria, e vale a pena reafirmar: existem sistemas bastante simples de equações polinomiais para os quais não há como dar as soluções em termos de ( °) raízes, etc. Um exemplo famoso (em uma variável) é x 5 - x + 1 = 0 . Veja também esta página da Wikipedia .n x5- x + 1 = 0
Dito isto, é claro que também existem sistemas de equações que podem ser resolvidos, e vale a pena verificar se o seu sistema é um deles. E mesmo que seu sistema não possa ser resolvido, ainda será possível encontrar uma forma para o seu sistema de equações que seja mais simples, em algum sentido. Por exemplo, encontre uma equação envolvendo apenas a primeira variável (mesmo que não possa ser resolvida algebricamente) e, em seguida, uma segunda equação envolvendo apenas a primeira e a segunda variável, etc. Existem algumas teorias concorrentes sobre como encontrar essas "formas normais" de sistemas polinomiais; a mais conhecida é a teoria das bases de Groebner, e a mais concorrente é a teoria das cadeias regulares.
No sistema de álgebra computacional Maple (divulgação completa: trabalho para eles), ambos são implementados. O
solve
comando normalmente chama o método básico de Groebner, acredito, e que rapidamente trava no meu laptop. Tentei executar o cálculo das cadeias regulares e leva mais tempo do que tenho paciência, mas não parece ser tão ruim quanto a memória. Caso você esteja interessado, a página de ajuda do comando que usei está aqui e aqui está o código que usei:fonte
A maneira profissional é escrever suas equações em uma linguagem de modelagem como AMPL ou GAMS e resolvê-la com um solucionador como o IPOPT.
O AMPL é um sistema comercial, mas uma versão gratuita para estudantes do AMPL é capaz de apresentar problemas com até 300 equações e variáveis.
Se você apenas deseja resolver um ou alguns problemas, pode resolvê-lo on-line livremente usando o servidor NEOS para otimização - basta enviar a descrição da AMPL e aguardar a resposta ser devolvida a você.
Se você precisar resolver esses sistemas repetidamente como parte de um estudo maior (por exemplo, variando os parâmetros), faça o download do IPOPT (que é um software sob uma licença muito liberal).
Edit: Observe que as soluções simbólicas que são compreensíveis geralmente são restritas a problemas muito pequenos - geralmente o tamanho de uma base Groebner cresce explosivamente com o número de variáveis ou o grau dos polinômios e o tempo para o processamento ainda mais. Portanto, um tempo de espera de uma hora ou mais com o Mathematica é um sinal (embora não seja uma prova) de que sua solução simbólica seria completamente incompreensível. Além disso, a avaliação de uma expressão tão longa provavelmente será numericamente instável; portanto, você precisará de alta precisão na avaliação para obter resultados significativos.
fonte
Escrever a solução inteira é impossível dentro da razão. Mas aqui estão algumas equações para reduzir um pouco o sistema:
Boa sorte!
fonte
Depende da estrutura de suas equações.
Se você está procurando todos os estados estacionários do seu conjunto de equações e pode reorganizá-los como o ErikP diz em polinômios, pode usar métodos da geometria algébrica real para calcular todas as soluções numéricas com alta precisão. Bertini é um desses pacotes que eu conheço, mas existem outros. Fui a uma conferência em Notre Dame há alguns anos atrás, onde Bertini era usado para encontrar estados estáveis de EDOs a partir da cinética química; Bertini foi desenvolvido em Notre Dame.
Outra possibilidade é usar os métodos propostos no "Teste de exclusão não suave para encontrar todas as soluções de equações não lineares" por MD Stuber, V. Kumar e PI Barton, BIT Numerical Mathematics 50 (4), 885-917, DOI: DOI: 10.1007 / s10543-010-0280-6 ; esses métodos não exigem que o sistema de equações seja polinômio. Paul Barton é meu conselheiro e Matt Stuber é meu colega; se quiser, posso pedir o software e enviar para você. O artigo utiliza métodos de otimização global e aritmética de intervalos (cita o livro de ArnoldNeumaier), bem como o método de Newton. A vantagem deste método é que ele deve localizar todas as soluções; a desvantagem é que é complicado.
fonte
Eu sugeriria olhar para um método de homotopia. Embora não seja simbólico, produzirá todas as soluções do seu problema. Para uma biblioteca fácil, confira:
http://homepages.math.uic.edu/~jan/PHCpack/phcpack.html
fonte