如何计算c#中指定数量的项的求和?

时间:2011-11-09 02:14:01

标签: c# .net math

我想计算c#中指定数量的项的总和,例如

http://i.stack.imgur.com/Ssipn.png

(用我计算的术语数替换100)。

此值等于(1/2)+(1/4)+(1/8)+(1/16)+ ... +(1/2 ^ 100)。

我正在考虑使用一个while循环,它将x = 1-100加起来为1/2 ^ x,并将它们相加,我知道如何计算每个单独的术语,但如何在不使用的情况下对每个术语进行求和明确声明100个变量?

感谢您的支持!

(我不需要整个程序,只需要一个while循环类。)

不,我认为双提供足够的精确度。我正在将其应用于其他算术序列。

4 个答案:

答案 0 :(得分:3)

您可以使用LINQ执行此操作:

int upper = 100;
var items = Enumerable.Range(1, upper);

double total = items.Select(i => 1.0 / Math.Pow(2.0, i)).Sum();

答案 1 :(得分:2)

我知道你说你不需要整个程序,但它太短了,很难不要!

public double doSummation(int maxPower) {
    double sum = 0;
    for (int i = 1; i <= maxPower; i++) {
        sum += Math.pow(2, i * -1); // 2^(-1) + 2^(-2) + 2^(-3) + ... + 2^(-1 * maxPower)
    }
    return sum;
}

然后前100个术语的总和将是:

doSummation(100)

答案 2 :(得分:0)

基于Jonathan的回答,这是我完成的代码(使用w3b.sine进行任意数学运算):

using System;
using W3b.Sine;

namespace summation
{
    public class Program
    {
        static BigNum doSummation(int maxPower)
        {
            BigNum sum = 0;
            for (int i = 1; i <= maxPower; i++)
            {
                sum += Math.Pow(2, i * -1);
            }
            return sum;
        }
        static void Main(string[] args)
        {
          Console.WriteLine(doSummation(100));
        }
    }
}

W3b.Sine需要包含在装配参考中。

答案 3 :(得分:-1)

我认为这就是你要找的东西

 var upperbounds = 100;
    var sum = 0;
    for (int i = 1;i <= upperbounds ; i++ )
    {
      sum += 1/Math.Pow(2, i);
    }