【问题标题】:scipy.optimize.newton gives TypeError: 'float' object is not callablescipy.optimize.newton 给出 TypeError: 'float' object is not callable
【发布时间】:2014-11-16 16:20:24
【问题描述】:

我是 python 新手,我正在编写这个简单的代码来查找函数的根源:

from scipy import optimize

x = eval(raw_input())                           #Initial guess
f = eval(raw_input())                           # function to be evaluated
F = eval(raw_input())                          #derivative of function f

round(optimize.newton(f, x, F, tol = 1.0e-9), 4)

但是解释器返回: TypeError: 'float' 对象不可调用

我真的不确定我从这段代码中遗漏了什么。谁能帮帮我..提前谢谢你

【问题讨论】:

  • 您正在评估raw_input,可能会成为f 的浮点数。 newton 期待一个函数。
  • @user2085282,感谢您的澄清

标签: python scipy typeerror newtons-method


【解决方案1】:

optimize.newton 期望引用可调用对象(例如函数)。这并不意味着您将函数作为'x*x' 之类的字符串提供,但您必须先定义一个,例如:

def my_func (x):
    return x*x

然后您可以将my_func 插入optimize.newton(除了其他必需的参数)。

【讨论】:

    【解决方案2】:

    这取决于您为f 输入的内容。如果你输入类似

    lambda x: x ** 2
    

    那么它将被解释为一个函数,例如

    In [83]: f = eval('lambda x: x ** 2')
    
    In [84]: f(5)
    Out[84]: 25
    

    【讨论】:

      猜你喜欢
      • 2022-08-23
      • 2016-03-25
      • 1970-01-01
      • 2017-01-23
      • 2018-03-31
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      相关资源
      最近更新 更多