考虑Dixon&价格函数here。
如何在Python中编写此函数?
我试过
def dixonprice(v): # v is a input vector
v2 = v.pop(0) # since we need the sum from the second element onwards
return (v[0]-1)**2 + sum(*(2*(x**2)-) for x in v2)
但是我无法完成它,因为我不知道如何在总和中写入i(即索引)。另外,我需要在实际元素之前的元素(x _ {i-1})。通常我们使用sum()
来总结所有元素,但在这里我被卡住了。
修改
我不知道如何在这里使用Mathjax,但我遗漏的表达应该是sum_from_i=2_to_n = i*(2*(x_i)**2-x_(i-1))**2
答案 0 :(得分:1)
我可以这样做。请注意求和中的i+1
和range(1,...)
,因为Python系列是零索引的。
#UNTESTED
def dixonprice(x):
return (x[0]-1)**2 + sum((i+1)*(2*x[i]**2-x[i-1])**2 for i in range(1, len(x)))
答案 1 :(得分:0)
这样的事情应该有效:
def dix(v):
first = (v[0]-1)**2
summ = 0
for i in range(2,len(v)):
partial = i*(2*v[i-1]**2 - v[i-2])**2
summ += partial
return first + summ
由于Python是0索引的,因此需要进行一些修改。