如何在python中做一笔钱

时间:2012-08-28 21:16:33

标签: python function sum

我想知道如何在没有here

之类的循环的情况下在python中表示总和

我们有:

def rosen(x):
    """The Rosenbrock function"""
    return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)

我的功能如下:V(theta) = Sum(i=1->N)[a0*(cos(i*theta)]

提前感谢您的帮助:):))

3 个答案:

答案 0 :(得分:3)

你的公式是:

  

V(theta)= Sum(i = 1-> N)[a0 *(cos(i * theta)]

表示:对a0*(cos(i*theta)范围内的theta范围内的给定值1的所有值N求和,包括def V(theta, N): return sum(a0*(cos(i*theta)) for i in range(1, N + 1))

这在Python中变成了这样的东西:

theta

请注意,您必须将NN + 1传递给该函数。另请注意,我们正在使用N来确保包含range(因为{{1}}会迭代值,直到(但不包括最后一个值)。

答案 1 :(得分:3)

类似的东西:

def V(theta,N):
    return sum(a0*(cos(i*theta) for i in range(1,N+1))
print V(theta,N) 

或者您可以使用lambda

V =lambda theta,N : sum(a0*(cos(i*theta) for i in range(1,N+1))   
print V(theta,N) 

答案 2 :(得分:0)

您显示的示例不使用数学函数,只使用基本的算术运算。这就是为什么它如图所示工作,但math.cos不支持列表,因此不会这样工作。
如果你真的想要没有任何东西,你应该使用numpy。 Numpy的数学函数支持列表(实际上是数组) 通过这种方式,您可以编写如下内容:

from numpy import *
def fun(theta):
    return a0*sum(cos(arange(1,N+1)*theta))

如果你做了很多这样的计算,最好使用numpy。