我用这个简单的函数,用数值方法来确定函数的梯度。你知道吗
def f_prime((x,y),delta=0.1):
'''Numerically derive the gradient of f(x,y).'''
x = int((x,y)[:1])
y = int((x,y)[1:])
df_dx = (f((x+delta,y))-f((x-delta,y)))/(2*delta)
df_dy = (f((x,y+delta))-f((x,y-delta)))/(2*delta)
return numpy.array((df_dx,df_dy))
这将给出错误反馈:
File "J:\...\.py", line 32, in f_prime
def f_prime((x,y),delta=0.1):
TypeError: int() argument must be a string or a number, not 'tuple'
你知道我是怎么把它变成元组的吗?提前谢谢
您正在切片而不是索引;切片返回子集合,而索引返回项。你知道吗
如果像在代码中那样使用切片索引(x,y)[:1],则会得到一个切片元组。如果您知道元组中有多少个值,则必须指定确切的索引,或者直接将元组解包到变量中(可能应该是这样):
相关问题 更多 >
编程相关推荐