我可以看到至少有兩個問題:您已將參數順序混合到f
,並且您沒有給f
訪問t
。像這樣的東西應該工作:
import math
from scipy.optimize import fsolve
class Fred(object):
M0 = 5.0
n = 5
def f(self, x, t):
return (x - math.sin(x) -self.M0 - self.n*t)
def test(self, t):
return fsolve(self.f, 1, args=(t))
[注意,我是懶惰和取得M0
和n
類成員]這給
:
>>> fred = Fred()
>>> fred.test(10)
array([ 54.25204733])
>>> import numpy
>>> [fred.f(x, 10) for x in numpy.linspace(54, 55, 10)]
[-0.44121095114838482, -0.24158955381855662, -0.049951288133726734,
0.13271070588400136, 0.30551399241764443, 0.46769772292130796,
0.61863201965219616, 0.75782574394219182, 0.88493255340251409,
0.99975517335862207]
來源
2012-05-18 12:45:49
DSM
你能給我們一個完整的例子,包括這個「不起作用」嗎? – robert
我不認爲我以前見過'f(x,self)',第一個參數會得到這個實例,不管你怎麼稱呼它。 – DSM
它是從scipy.optimize的fsolve優化 – Saybia