Come trovo il massimo di una funzione in Python? Potrei provare a hackerare una funzione derivata e trovare lo zero di quello, ma c'è un metodo in numpy
(o altra libreria) che può farlo per me?Trovare il massimo di una funzione
risposta
È possibile utilizzare scipy.optimize.fmin
sul negativo della propria funzione.
def f(x): return -2 * x**2 + 4 * x
max_x = scipy.optimize.fmin(lambda x: -f(x), 0)
# array([ 1.])
Ma tieni presente che devi davvero prestare attenzione ai problemi di analisi numerica qui. Spesso è una bandiera rossa di errore imminente quando qualcuno dice "come può una biblioteca risolvere questo per me?" Assicurati che * tu * capisca veramente cosa sta facendo la funzione della libreria. Questo è vero anche se hai fatto lavori numerici per molto tempo. Recentemente ho sofferto di un [problema simile] (http://stackoverflow.com/questions/10038543/tracking-down-the-assumptions-made-by-scipys-ttest-ind-function) con 'scipy.stats'. – ely
Mi dispiace per la domanda non correlata, ma perché c'è zero nell'espressione lambda? – user1700890
Lo zero non fa parte del 'lambda'. Un 'lambda' non può restituire implicitamente una' tupla' restituendo una sequenza di valori separati da virgole, come può fare una normale funzione Python. In questo caso, la virgola fa parte dell'elenco degli argomenti a 'scipy.optimize.fmin', quindi l'intero primo argomento è' lambda x: -f (x) 'e l'intero secondo argomento è' 0'. – ely
Si potrebbe provare SymPy. SymPy potrebbe essere in grado di fornire la derivata simbolicamente, trovare i suoi zeri e così via.
Se la funzione è risolvibile in modo analitico, provare SymPy. Userò l'esempio di EMS sopra.
In [1]: from sympy import *
In [2]: x = Symbol('x', real=True)
In [3]: f = -2 * x**2 + 4*x
In [4]: fprime = f.diff(x)
In [5]: fprime
Out[5]: -4*x + 4
In [6]: solve(fprime, x) # solve fprime = 0 with respect to x
Out[6]: [1]
Naturalmente, sarà ancora bisogno di controllare che 1 è un Maximizer e non un punto di minimo di f
In [7]: f.diff(x).diff(x) < 0
Out[7]: True
Penso scipy.optimize.minimize_scalar
e scipy.optimize.minimize
sono i modi preferiti ora, che vi darà l'accesso alla gamma di tecniche, ad es
solution = scipy.optimize.minimize_scalar(lambda x: -f(x), bounds=[0,1], method='bounded')
per una singola funzione variabile che deve essere compreso tra 0 e 1.
massimo di una funzione con parametri.
import scipy.optimize as opt
def get_function_max(f, *args):
"""
>>> round(get_function_max(lambda x, *a: 3.0-2.0*(x**2)), 2)
3.0
>>> round(get_function_max(lambda x, *a: 3.0-2.0*(x**2)-2.0*x), 2)
3.5
>>> round(get_function_max(lambda x, *a: a[0]-a[1]*(x**2)-a[1]*x, 3.0, 2.0), 2)
3.5
"""
def func(x, *arg):
return -f(x, *arg)
return f(opt.fmin(func, 0, args=args, disp=False)[0], *args)
- 1. Come trovare il massimo e il minimo di una funzione usando Maxima?
- 2. Come trovare il numero massimo
- 3. Trovare il valore massimo massimo di scrollTop su un div?
- 4. Trovare il massimo comun divisore di una matrice in MATLAB
- 5. Funzione C++ per trovare il valore massimo in una matrice di doppi?
- 6. come trovare il massimo in una colonna dati datetime?
- 7. Trovare il valore minimo del cluster massimo?
- 8. Come trovare il conteggio massimo usando mysql?
- 9. JS come trovare il massimo comune divisore
- 10. Trovare il valore massimo e minimo di ogni colonna e poi trovare il valore massimo e minimo di ogni riga
- 11. Parametri funzione numero massimo
- 12. Regex: come trovare il valore intero massimo di un pattern?
- 13. modo Modello di trovare valore massimo consentito
- 14. Come trovare il valore massimo del set di variabili
- 15. Trovare il minimo e il massimo in python
- 16. Il modo migliore per trovare il massimo e il minimo di due valori
- 17. jQuery - trovare non una funzione?
- 18. Algoritmo per trovare il valore minimo di una funzione
- 19. Come trovare il tipo di una funzione in Elm repl
- 20. Trovare l'elemento di una matrice di Ruby con il valore massimo per un particolare attributo
- 21. script di shell: trovare il valore massimo in una sequenza di numeri interi senza ordinare
- 22. intrinseci SSE3: Come trovare il massimo di una vasta gamma di carri
- 23. Trovare le proprietà di una funzione reale
- 24. Trovare il massimo controllo superiore (z-ordine) in un pannello
- 25. Posso utilizzare l'algoritmo ungherese per trovare il costo massimo?
- 26. MongooseJS - Come trovare l'elemento con il valore massimo?
- 27. Trovare il valore massimo assoluto preservando + o - simbolo
- 28. Esiste un codice a una riga per trovare il valore massimo in una matrice?
- 29. Python: Trovare il min, valore massimo in una lista di tuple
- 30. Come trovare il valore massimo nella coppia RDD?
Cerca nella sezione aurea. http://en.wikipedia.org/wiki/Golden_section_search – wberry
@EMS è generalmente quello che faccio, ma non sono sempre su SO. Devi dare un po 'di tempo alle persone: P –
Scusa, non volevo sembrare perspicace. Molte cose non sono accettate, quindi in genere scrivo un promemoria come ~ 1 giorno dopo, prima di dimenticare che ho persino risposto a quella domanda specifica. – ely