Örneğin kullanılarak, scipy
sitesindeki fmin
(Nelder-Mead algoritmasının uygulanması içerir), bu deneyin:
: Aşağıdaki çıkışı sağlayan
import numpy as np
from scipy.optimize import fmin
import math
def f(x):
exp = (math.pow(x[0], 2) + math.pow(x[1], 2)) * -1
return math.exp(exp) * math.cos(x[0] * x[1]) * math.sin(x[0] * x[1])
fmin(f,np.array([0,0]))
akılda
Optimization terminated successfully.
Current function value: -0.161198
Iterations: 60
Function evaluations: 113
array([ 0.62665701, -0.62663095])
saklayın o:
1)ileişlevinizi bir diziyi kabul eden bir işleve dönüştürmeniz gerekir (yukarıdaki örnekte nasıl yapılacağını gösterdim);
2) fmin
kullanımlar, kendi çiftleri, tekrarlanan bir algoritma çoğu gibi, bu nedenle, bir başlangıç noktası temin gerekir (bizim örneğimizde, l) (0,0)
sağladı. Farklı minima/maxima elde etmek için farklı başlangıç noktaları sağlayabilirsiniz.
Gerçekten bu işlevle sınırlı mısınız? Ya da keyfi bir işlev için bunu yapmak ister misiniz? Sadece bu işlevse, farklılaşarak göreceli ekstrema bulabilirsiniz. – mgilson
Muhtemelen buraya bir göz atmalısınız: http://docs.scipy.org/doc/scipy/reference/optimize.html –
Yakın tahminler mi yoksa tam kayan nokta mı istiyorsunuz? – Shashank