迪克森& Python中的价格函数 - 将列表元素与索引号

时间:2017-06-29 17:06:33

标签: python list function sum

考虑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

2 个答案:

答案 0 :(得分:1)

我可以这样做。请注意求和中的i+1range(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索引的,因此需要进行一些修改。