Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python3中执行Sigma_Python_Python 3.x - Fatal编程技术网

如何在Python3中执行Sigma

如何在Python3中执行Sigma,python,python-3.x,Python,Python 3.x,我试图为一些东西做一个计算器,但是公式使用sigma,我不知道如何在python中做sigma,有操作符吗? 我会在这里放一个链接,上面有公式以供说明:a sigma(∑) 是一个运算符。它使用略微不同的变量多次计算某个表达式,并返回所有这些表达式的总和 例如,在公式中 Python实现将如下所示: # Just guessing some values. You have to search the actual values in the wiki. ballistic_coefficie

我试图为一些东西做一个计算器,但是公式使用sigma,我不知道如何在python中做sigma,有操作符吗? 我会在这里放一个链接,上面有公式以供说明:

a sigma(∑) 是一个运算符。它使用略微不同的变量多次计算某个表达式,并返回所有这些表达式的总和

例如,在公式中

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)

您可能希望查看,并注意精度问题。

在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 a, x: a + 3.14*x*x, [0]+[2,3,5])
reduce()将接受lambda和iterable的参数,并返回lambda指定的一个值。累加器为a,设置为第一个值(0),然后是其后的当前和。iterable中的当前值设置为x并添加到累加器中。返回最终累加器

西格玛右边的公式用λ表示。我们求和的序列用iterable表示。你可以根据需要修改它们

例如,如果我想解决:

∑π*i^2

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

from functools import reduce
result = reduce(lambda a, x: a + x, [0]+list(range(1,3+1)))
print(result)
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

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

def sigma(第一、最后、常数):
总和=0
对于范围内的i(第一个,最后一个+1):
总和+=常数*i
回报金额
#第一:是(n)的第一个值(求和指数)
#last:是(n)的最后一个值
#常数:是您要将其每(n)次乘法与(n)之和相加的数字

我不熟悉那种形式的西格玛符号。难道不应该有一点“I=”吗在∑?@Kevin下,我不确定OP在该页的许多公式中指的是哪一个,但如果是sigma表示法,如果没有提供索引,那么总和将被理解为超过从上下文推断出的某个预期范围。OP:查看Python的
sum
命令。