from math import cos
def diff1(f, x): #approximates first derivative#
h = 10**(-10)
return (f(x+h) - f(x))/h
def newtonFunction(f,x):
return x - f(x)/float(diff1(f,x))
y = cos
x0 = 3
epsilon = .001
print diff1(newtonFunction(y,x0), x0)
这只是代码的一部分,但我想计算diff1(f,x),其中f是newtonFunction但使用传递给NewtonMinimum的参数f。 diff1已经将f和x作为参数,我得到一个错误,说它需要newtonFunction的两个参数。
答案 0 :(得分:0)
我认为你要找的是functools.partial
。
答案 1 :(得分:0)
问题在于f
不是 newtonFunction
,而是newtonFunction(y,x0)
返回的值。在这个例子中,它是一个浮点数,因此是'float' object not callable
。
如果要将函数作为参数传递给另一个函数,则只需使用其名称:
diff1(newtonFunction, x0)
另请注意,您将遇到另一个问题:在diff1
中,您只使用一个参数调用f
,但newtonFunction
需要两个参数。
答案 2 :(得分:0)
在diff1
中,您遗失了*
和f(x+h)
以及f(x)
中的newtonFunction
。您还将y
作为内置函数离开,因此我假设您需要cos
x0
。这是您编辑的代码:
from math import cos
def diff1(f, x): #approximates first derivative#
h = 10**(-10)
return (f*(x+h) - f*(x))/h
def newtonFunction(f,x):
return x - f*(x)/float(diff1(f,x))
y = cos
x0 = 3
epsilon = .001
print diff1(newtonFunction(y(x0),x0), x0)