2016-10-05 2 views
0

Ich habe Probleme, eine sehr einfache Funktion zu optimieren, die ich als Testfall benutze, bevor ich zu etwas Komplexem übergehe. Ich habe verschiedene Optimierungsmethoden ausprobiert, die der Methode eine Grenze geben und sogar die genaue Lösung als erste Schätzung geben.scipy Minimierung/Optimierung der einfachen Funktion

Funktion Ich versuche zu optimieren: f(x) = 1/x - x

Hier ist mein Code:

import scipy 
def testfun(x): return (1/x - x) 

sol = scipy.optimize.minimize(testfun, 1).x 

es eine große Zahl (3,2 E + 08) als Lösung gibt

Bin ich der Verwendung Optimierungsfunktion nicht korrekt?

+0

Was denken Sie, die Antwort sein sollte? Es sieht für mich so aus, als ob diese Funktion bei x = unendlich miminiert wird. –

+0

@VictorChubukov mein Schlechter Ich suche nach Wurzelfindungsmethoden, so dass f (x) = 0. Ich denke, scipy.optimize.newton wird tun, wonach ich suche. Danke – DivideByZero

+0

Ok (Kommentar wurde entfernt, als der ursprüngliche Kommentar bearbeitet wurde) –

Antwort

0

Wie Victor erwähnt, wird die Optimierungsfunktion korrekt funktioniert,

ich f(x) --> 0 zu lösen suchte, die eine Wurzelfindungsmethode anstatt eine Optimierungsroutine erfordert.

zum Beispiel:

scipy.optimize.root(testfun, 1) oder scipy.optimize.Newton(testfun, 1)

Verwandte Themen