我想知道如何在没有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)]
提前感谢您的帮助:):))
答案 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
请注意,您必须将N
和N + 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。