使用多个参数调用optimize.newton函数会抛出“float object not callable”错误

时间:2013-12-13 12:22:23

标签: python scipy

我是scipy的新手,以下代码似乎不起作用:

from scipy import optimize

def f(x, y):
    return x * x - 3 + y


def main():
   x0 = 0.1
    y = 1
    res = optimize.newton(f(x0,y), x0)
    print (res)

我收到的错误是:

 File "C:\Python27\lib\site-packages\scipy\optimize\zeros.py", line 144, in newton
    q0 = func(*((p0,) + args))
TypeError: 'float' object is not callable

1 个答案:

答案 0 :(得分:7)

您需要提供一个函数作为optimize.newton的第一个参数。独立参数的猜测x0作为第二个参数提供,您可以使用args提供常量参数:

def f(x, y):
    return x * x - 3 + y

def main():
    x0 = .1
    y = 1
    res = optimize.newton(f, x0, args=(y,))