我想找到一個函數f(x)的局部最大值,其中x可以在兩個固定值之間的範圍,因爲如果x傾向於f(x)將傾向於+ inf + INF。我一直在嘗試使用scipy.optimize.fmin_l_bfgs_b
和scipy.optimize.fmin_tnc
(來自scipy.ref指南)等算法,但我無法弄清楚如何正確設置邊界。 (我知道,它一定是一些愚蠢的東西,但對Python來說我是個不錯的選擇)。舉個簡單的例子:找到在Python中的界限函數的最大值
>>>import scipy.optimize as opt
>>>import scipy
>>>from numpy import *
>>>def f (x): return x**(1/2.0)
>>>max_x = opt.fmin_l_bfgs_b(lambda x: -f(x), [0,0], bounds=([0,0],[9,0])) #I want x to range between 0 and 9 and fmax be 3
雖然輸出很奇怪,但我什麼也沒得到!甚至沒有錯誤!我錯過了什麼?
是什麼'>>> max_x'說? –
請注意,根據文檔,max_x將是一個三元組......第三個元素也將提供一些關於進度的信息 –
嘗試牛頓的多次函數導數的方法來找到函數的臨界點。其中一個關鍵點應該是最大的。這假定該功能足夠好。 –