La résolution des équations non linéaires en python

J'ai 4 non-linéaire des équations à trois inconnues X, Y, et Z que je veux résoudre les. Les équations sont de la forme:

F(m) = X^2 + a(m)Y^2 + b(m)XYcosZ + c(m)XYsinZ

...où a, b et c sont des constantes qui dépendent de chaque valeur de F dans les quatre équations.

Quelle est la meilleure façon de résoudre ce problème?

  • Juste pour info: Il est plus courant d'utiliser x, y, et z pour les variables indépendantes (c'est à dire les personnes connues, dans ce cas), et a, b, c pour les paramètres du modèle que vous essayez de résoudre. Quand j'ai lu votre équation, j'étais sur le point de dire "mais c'est linéaire" (c'est en fonction de a, b et c). Je sais que c'est idiot d'ergoter sur la terminologie, mais comme il est actuellement libellé, beaucoup de gens sont susceptibles de mal lu votre question. (Bon, question claire, cependant. +1)
  • Aussi, il est possible de linéariser cette. Je suis taper une réponse, mais je n'ai pas le temps de la finir à l'instant. Si personne ne répond, dans l'intervalle, je vais finir ma réponse et de le publier dans une heure ou deux (j'espère que quelqu'un d'autre ne me battre pour elle). Bonne chance!
  • Le plus paresseux façon (mais plus facile à mettre en œuvre, je pense) est de précalculer pour n (disons 10) les valeurs de chaque paramètre (donc 1000 combinaisons au total), et de voir quelle combinaison des scores plus proche de zéro, et de zoomer autour de cette zone. Qui devrait fonctionner assez facilement pour la plupart des types d'équations, vous donnent une idée de où chercher, mais il y a plusieurs manières de fantaisie qui permettront de travailler plus rapidement et(/ou) plus précis.
  • scipy.optimize.brute fait exactement ce que vous décrivez: docs.scipy.org/doc/scipy/reference/generated/.... Gardez à l'esprit que vous avez besoin de chercher un 3D de l'espace des paramètres dans ce cas. C'est simple, mais très efficace. Cela dit, si il fonctionne, il fonctionne. Si il y a beaucoup de locaux minimia et les gammes de paramètres sont bien connues, il peut être une bonne approche.
  • Vrai, mais la 3D est encore assez facile, et un autre avantage de la force brutale est que vous obtenez une idée de la errorbars sur votre solution. (Cela dit, dès que vous allez au-delà de la 3D, de la force brute devient désespéré)
  • Pouvez-vous utiliser les sympy solveur pour ce faire?

InformationsquelleAutor user1171835 | 2013-10-23