2017-04-03 5 views
0

tousPython permettent de résoudre compte tenu des conditions

Est-il possible de résoudre le comme suit:

x = np.matrix([[8.3,-20.6],[-20.6,65.8]]) 

y est fonction de P:

y = lambda P: np.matrix([[0.02P,-0.02P], [-0.02P,0.04P]]) 

Je veux trouver la valeur P donnée conditions qui:

P>0, det(x-y)==0; 

Y a-t-il un moyen pratique pour cela?

Merci beaucoup! Shawn

Répondre

1

Si cela ne vous dérange pas d'utiliser un paquet supplémentaire, scipy.optimize a un certain nombre de méthodes qui seraient parfaites. Sinon, vous pouvez implement your own zero finding function.

Si vous voulez aller la route scipy:

1) Définissez votre problème en fonction qui prend votre paramètre inconnu (P) comme premier argument, et retourne la valeur que vous voulez minimiser:

def zerofn(P, x, y): 
    return np.linalg.det(x - y(P)) 

2) Optimisez cette fonction en utilisant scipy. L'exemple utilise ici un simple finder de Newton-Raphson, mais il y a many other options que vous pourriez utiliser pour spécifier des limites de paramètres (par exemple P> 0).

import scipy.optimize as opt 

opt.newton(zerofn, x0=1, args=(x, y)) 

>> 160.25865914054651 

Le résultat de ce chercheur zéro est votre valeur optimisée de P.

+0

Merci beaucoup Oscar! –

+0

Pas de soucis - heureux d'aider! – oscarbranson