如何在python 3中做一个Sigma

时间:2015-10-29 19:00:45

标签: python python-3.x

我试图为某些东西制作计算器,但公式使用sigma,我不知道如何在python中使用sigma,是否有运算符? 我在这里放了一个链接,上面有一个公式,上面有插图:http://fromthedepths.gamepedia.com/User:Evil4Zerggin/Advanced_cannon

4 个答案:

答案 0 :(得分:1)

在Python中执行此操作的有效方法是使用reduce()。

解决

  

3
  Σi
  i = 1

您可以使用以下内容:

from functools import reduce
result = reduce(lambda a, x: a + x, [0]+list(range(1,3+1)))
print(result)

reduce()将接受一个lambda和一个可迭代的参数,并返回一个由lambda指定的值。累加器为a,设置为第一个值(0),然后设置为该值之后的当前和。可迭代的当前值设置为x并添加到累加器中。返回最终的累加器。

sigma右边的公式由lambda表示。我们求和的序列由iterable表示。您可以根据需要更改它们。

例如,如果我想解决:

  

Σπ* i ^ 2
  我

对于序列I [2、3、5],我可以执行以下操作:

reduce(lambda a, x: a + 3.14*x*x, [0]+[2,3,5])

您可以看到以下两行代码产生相同的结果:

>>> reduce(lambda a, x: a + 3.14*x*x, [0]+[2,3,5])
119.32
>>> (3.14*2*2) + (3.14*3*3) + (3.14*5*5)
119.32

答案 1 :(得分:0)

sigma(Σ)是Summation运算符。它会多次计算某个表达式,变量略有不同,并返回所有这些表达式的 sum

例如,在Ballistic coefficient公式中

enter image description here

Python实现看起来像这样:

# Just guessing some values. You have to search the actual values in the wiki.
ballistic_coefficients = [0.3, 0.5, 0.1, 0.9, 0.1]

total_numerator = 0
total_denominator = 0
for i, coefficient in enumerate(ballistic_coefficients):
    total_numerator += 2**(-i) * coefficient
    total_denominator += 2**(-i)
print('Total:', total_numerator / total_denominator)

您可能需要查看enumerate function,并注意精确度问题。

答案 2 :(得分:0)

最简单的方法是创建一个sigma函数,返回返回的总和,您几乎无法理解,不需要使用库。您只需要了解逻辑即可。

def sigma(first, last, const):
    sum = 0
    for i in range(first, last + 1):
        sum += const * i
    return sum

# first : is the first value of (n) (the index of summation)
# last : is the last value of (n)
# const : is the number that you want to sum its multiplication each (n) times with (n)

答案 3 :(得分:0)

我已经查看了不同程序员和编码员试图为您的查询提供的所有答案,但我无法理解其中任何一个,也许是因为我是一名高中生,根据我的说法,使用 LIST 肯定会减轻一些痛苦编码,所以这里是我认为形成 sigma 函数的最简单方法。

#creating a sigma function
a=int(input("enter a number for sigma  "))
mylst=[]

for i in range(1,a+1):
     mylst.append(i)
     b=sum(mylst)
print(mylst)
print(b)