这里是编程的新手,它一直在尝试编写简单的代码来实现1D黄金搜索方法,以找到函数的最小化器。似乎找不到我在做什么导致此TypeError
import math
def function(float):
fx = 8*(exp(1-float))+7(log1p(float))
return fx
while (xmax-xmin) > u:
if function(x1) < function(x2):
错误消息:
TypeError Traceback (most recent call last)
<ipython-input-37-a126a69b14a7> in <module>()
---> 12 if function(x1) < function(x2):
<ipython-input-37-a126a69b14a7> in function(float)
1 import math
2 def function(float):
----> 3 fx = 8*(exp(1-float))+7(log1p(float))
TypeError: 'int' object is not callable
答案 0 :(得分:1)
更改此
def function(val):
fx = 8*(math.exp(1-val))+7*(math.log(val)) # added * between 7 and parenthesis
return fx
此外,对变量使用内置名称也是一种不好的做法,因此float
已更改
编辑:
根据@tobiask的评论,您将需要exp
才能像math.exp
一样被调用,而log
将需要math.log
的调用,除非在其他地方定义了log1p
答案 1 :(得分:0)
表达式第二部分中的7后面缺少*
。因此python理解您正在尝试像调用int 7
一样调用print("hello")
(例如,实际上是8*(exp(1-float))+7*(log1p(float))
的函数)。
应为fill
。
希望有帮助!