2017-05-13 3 views
-1

Supposons que j'ai deux fonctions transcendantes f(x, y) = 0 et g(a, b) = 0. A et b dépendent de y, donc si je pouvais résoudre analytiquement la première équation pour y, y = f(x), je pourrais avoir la deuxième fonction ne dépendant que de x et donc la résoudre numériquement.Résolution d'équation numérique et analytique en python ou matlab

Je préfère utiliser python, mais si matlab est capable de gérer cela est ok pour moi. Y at-il un moyen de résoudre des fonctions analytiquement trascendent pour une variable avec python/matlab? Taylor va bien aussi, tant que je peux choisir l'ordre d'approximation.

+0

pas lié python, et plus généralement hors sujet sur Stack Overflow – fferri

+0

En général, non. Dans de nombreux cas spécifiques, oui. Pouvez-vous partager la fonction/famille de fonctions que vous envisagez? –

+0

@fferri oui j'avais pensé à cela, mais c'est en fait un problème difficile à résoudre sans calculatrice. De plus, à la fin, je devrai écrire l'algorithme; donc pour moi c'est aussi un problème de programmation. Vous avez un point de toute façon. – Frank

Répondre

0

J'ai essayé de courir ce par sympy comme ceci:

import sympy 

j, k, m, x, y = sympy.symbols("j k m x y") 
eq = sympy.Eq(k * sympy.tan(y) + j * sympy.tan(sympy.asin(sympy.sin(y)/x)), m) 
eq.simplify() 

qui se votre équation en

Eq(m, j*sin(y)/(x*sqrt(1 - sin(y)**2/x**2)) + k*tan(y)) 

qui, après un peu plus poking, nous donne

k * tan(y) + j * sin(y)/sqrt(x**2 - sin(y)**2) == m 

Nous peut trouver une expression pour x(y) comme

sympy.solve(eq, x) 

qui retourne

[-sqrt(j**2*sin(y)**2/(k*tan(y) - m)**2 + sin(y)**2), 
sqrt(j**2*sin(y)**2/(k*tan(y) - m)**2 + sin(y)**2)] 

mais une solution analytique pour y(x) échoue.