如何在C#中实现数学的sigma和pi表示法?

时间:2019-03-14 07:51:26

标签: c# math

Sigma表示法:i从n到m的序列之和。

Pi表示法:i从n到m的序列的乘积。

1 个答案:

答案 0 :(得分:1)

求和符号

Summation Notation可以理解为:

  

在数学中,求和是将任何类型的数字序列相加,称为加数或加数;结果是它们的总和。除数字外,还可以对其他类型的值求和:函数,向量,矩阵,多项式,以及通常定义了表示为“ +”的运算的任何类型的数学对象的元素。

     

[...]

     

通常,序列的元素通过规则的方式根据其在序列中的位置进行定义。对于简单模式,长序列的总和可以用椭圆代替大多数求和。例如,前100个自然数的总和可以写为1 + 2 + 3 + 4 +⋅⋅⋅+ 99 +100。否则,总和使用Σ表示,其中{\ displaystyle \ textstyle \ sum} \ textstyle \ sum是大写希腊字母sigma。例如,前n个自然整数的总和表示为{\ displaystyle \ textstyle \ sum _ {i = 1} ^ {n} i。} {\ displaystyle \ textstyle \ sum _ {i = 1} ^ {n} i。}

当然有多种方法可以实现这一点,但是,最简单,最向前的方法是使用Enumerable Class,如下所示:

// Returns the sum
// for i from n (inclusive) to m (exclusive).
var sum = Enumerable.Range(n, m - n).Sum(i => i);

// Alternative
var sum = 0;
for (int i = n; i < m; i++){ sum += i; }

Pi表示法

  

The Pi symbol, \prod, is a capital letter in the Greek alphabet call “Pi”, and corresponds to “P” in our alphabet. It is used in mathematics to represent the product (think of the starting sound of the word “product”: Pppi = Ppproduct) of a bunch of factors.

这只能以不同的方式解决,因为LINQ没有pi的任何默认算法〜因此,Enumerable.Aggregate是可行的方法:

// Returns the product
// for 'i' from n (inclusive) to m (exclusive).
var product = Enumerable.Range(n, m - n).Aggregate((a, b) => a * b);

// Alternative
var product = 1;
for (int i = n; i < m; i++){ product *= i; }