J'ai un système d'équations différentielles ordinaires - 7 équations et ~ 30 paramètres régissant leur comportement dans le cadre d'un modèle mathématique de transmission de maladies. Je voudrais trouver les états stables pour les équations Modification dx/dt = rest of the equation
à 0 = equation
chacun des équations en fait un problème d'algèbre simple. Cela pourrait être fait à la main, mais je suis ridiculement mauvais dans ce genre de calcul.
J'ai essayé d'utiliser Mathematica, qui peut gérer des versions plus petites de ce problème ( voir ici ), mais Mathematica s'immobilise sur ce problème. Existe-t-il un moyen plus efficace / efficace d'aborder cela? Un système mathématique symbolique plus efficace? D'autres suggestions?
Quelques mises à jour (21 mars):
- Le but est en effet de les résoudre symboliquement - les réponses numériques sont agréables mais pour le moment le but final est la version symbolique.
- Il y a au moins un équilibre. Je ne me suis pas vraiment assis et je l'ai prouvé , mais par conception, il devrait y en avoir au moins un trivial dans lequel aucun n'est infecté au début. Il n'y a peut-être rien d' autre que cela, mais cela me rendrait aussi content que toute autre chose.
- Vous trouverez ci-dessous l'ensemble réel des équations dont il est question.
En résumé, je recherche des expressions symboliques pour les solutions d'un système de 7 équations quadratiques à 7 variables.
Réponses:
Il semble que les équations que vous traitez soient toutes polynomiales après avoir effacé les dénominateurs. C'est une bonne chose (les fonctions transcendantales sont souvent un peu plus difficiles à gérer algébriquement). Cependant, ce n'est pas une garantie que vos équations ont une solution de forme fermée. C'est un point essentiel que beaucoup de gens ne "comprennent" pas vraiment, même s'ils le savent en théorie, donc il faut le redire: il existe des systèmes assez simples d'équations polynomiales pour lesquels il n'y a aucun moyen de donner des solutions en termes de ( ème) racines, etc. Un exemple célèbre (dans une variable) est x 5 - x + 1 = 0 . Voir aussi cette page wikipedia .n X5- x + 1 = 0
Cela dit, bien sûr, il existe également des systèmes d'équations qui peuvent être résolus, et il vaut la peine de vérifier si votre système en fait partie. Et même si votre système ne peut pas être résolu, il pourrait toujours être possible de trouver une forme pour votre système d'équations qui soit plus simple, dans un certain sens. Par exemple, trouvez une équation n'impliquant que la première variable (même si elle ne peut pas être résolue algébriquement), puis une deuxième équation n'impliquant que la première et la seconde variable, etc. des systèmes polynomiaux; la plus connue est la théorie de base de Groebner, et une théorie concurrente est la théorie des chaînes régulières.
Dans le système d'algèbre informatique Maple (divulgation complète: je travaille pour eux), les deux sont implémentés. La
solve
commande appelle généralement la méthode de base Groebner, je crois, et qui s'arrête rapidement sur mon ordinateur portable. J'ai essayé d'exécuter le calcul des chaînes régulières et cela prend plus de temps que je n'ai de patience, mais ne semble pas exploser en termes de mémoire. Si vous êtes intéressé, la page d'aide de la commande que j'ai utilisée est ici , et voici le code que j'ai utilisé:la source
La manière professionnelle consiste à écrire vos équations dans un langage de modélisation tel que AMPL ou GAMS, et à le résoudre avec un solveur tel que IPOPT.
AMPL est un système commercial, mais une version étudiante gratuite d'AMPL est capable de poser des problèmes avec jusqu'à 300 équations et variables.
Si vous souhaitez simplement résoudre un ou quelques problèmes, vous pouvez le résoudre en ligne librement en utilisant le serveur NEOS pour l'optimisation - soumettez simplement la description AMPL et attendez que la réponse vous soit retournée.
Si vous devez résoudre de tels systèmes à plusieurs reprises dans le cadre d'une étude plus vaste (par exemple, faire varier les paramètres), vous devez télécharger IPOPT (qui est un logiciel sous une licence très libérale).
Edit: Notez que les solutions symboliques compréhensibles sont généralement limitées à des problèmes assez petits - généralement la taille d'une base Groebner croît de manière explosive avec le nombre de variables ou le degré des polynômes, et le temps de traitement encore plus. Ainsi, un temps d'attente d'une heure ou plus avec Mathematica est un signe (mais pas une preuve) que votre solution symbolique serait complètement incompréhensible. De plus, l'évaluation d'une expression aussi longue est susceptible d'être numériquement instable, vous aurez donc besoin d'une grande précision dans l'évaluation pour obtenir des résultats significatifs.
la source
Il est impossible d'écrire toute la solution dans des limites raisonnables. Mais voici quelques équations pour réduire un peu le système:
Bonne chance!
la source
Cela dépend de la structure de vos équations.
Si vous recherchez tous les états stables de votre ensemble d'équations et que vous pouvez les réorganiser comme le dit ErikP en polynômes, vous pouvez utiliser des méthodes de la géométrie algébrique réelle pour calculer toutes les solutions numériques avec une grande précision. Bertini est un tel paquet que je connaisse, mais il y en a d'autres. Je suis allé à une conférence à Notre Dame il y a quelques années où Bertini a été utilisé pour trouver des états stables d'OD à partir de la cinétique chimique; Bertini a été développé à Notre Dame.
Une autre possibilité consiste à utiliser les méthodes proposées dans "Test d'exclusion non lisse pour trouver toutes les solutions d'équations non linéaires" par MD Stuber, V. Kumar et PI Barton, BIT Numerical Mathematics 50 (4), 885-917, DOI: DOI: 10.1007 / s10543-010-0280-6 ; ces méthodes ne nécessitent pas que le système d'équations soit des polynômes. Paul Barton est mon conseiller et Matt Stuber est un de mes collègues; si vous le souhaitez, je peux lui demander le logiciel et vous l'envoyer. L'article utilise des méthodes d'optimisation globale et d'arithmétique d'intervalle (il cite le livre d'ArnoldNeumaier), ainsi que la méthode de Newton. L'avantage de cette méthode est qu'elle doit localiser toutes les solutions; l'inconvénient est que c'est compliqué.
où est un ensemble réalisable défini par des contraintes sur votre problème au lieu d'essayer de le résoudre. À un niveau très grossier, l'utilisation d'un solveur de programmation non linéaire fluide ressemble beaucoup à l'utilisation de la méthode de Newton, avec une sophistication algorithmique supplémentaire pour la robustesse et les performances. IPOPT est un très bon logiciel à cet effet; il existe de nombreux autres solveurs (regardez simplement la liste des solveurs disponibles pour GAMS , AMPL ou NEOS . Si vous choisissez une méthode comme celle-ci, faites attention à quelques mises en garde:S
la source
Je suggérerais de regarder une méthode d'homotopie. Bien qu'il ne soit pas symbolique, il produira toutes les solutions à votre problème. Pour une bibliothèque facile à consulter:
http://homepages.math.uic.edu/~jan/PHCpack/phcpack.html
la source