2017-06-07 4 views
0

Je travaille sur CVXOPT en utilisant un problème de programmation qudratique. Pour créer une matrice G, j'ai besoin de différencier l'équation et de calculer les valeurs.Pour la différenciation j'ai utilisé la fonction Sympy.mpmath et lambda comme indiqué ci-dessous.Je reçois la sortie au format mpf.S'il vous plaît me suggérer un moyen de convertir mpf en format float python qui prend en charge CVXOPT. ThankyouConvertir mpf de mpmath en float python pour supporter cvxopt

dg1 = np.array([sp.mpmath.diff(lambda x1,x2,x3,x4,x5:0.75*x2/x4,(0.3,1.45,5,1.1,0.25),ft[i]) for i in range(n)])     
>>>array([mpf('0.0'), mpf('0.68181818181818177'), mpf('0.0'), 
    mpf('-0.89876033057851223'), mpf('0.0')], dtype=object) 
+0

si nous utilisons sympy.mpmath.nstr(), je reçois la sortie sous forme de chaîne comme indiqué ci-dessous: '[0.0 , 0.681818, 0.0, -0.89876, 0.0] ' – Manasaveena

Répondre

0

Enveloppez votre sp.mpmath.diff appel avec float(...):

dg1 = np.array([float(sp.mpmath.diff(lambda x1,x2,x3,x4,x5:0.75*x2/x4, 
            (0.3,1.45,5,1.1,0.25),ft[i])) for i in range(n)]) 

>>>array([0.  , 0.68181818, 0.  , -0.89876033, 0.  ]) 
+0

Merci tant Dekin, son fonctionnement. – Manasaveena

+0

Super! Je suis vraiment heureux de vous avoir aidé, et j'apprécierais que vous indiquiez ma réponse comme acceptée. – dekin