如何将给定的级数表达式简化为代数表达式?

时间:2019-02-12 20:24:32

标签: big-o

我需要将给定的级数表达式简化为代数表达式,而无需求和。

然后我必须用大O表示法表达代数表达式的表现。

我主要对第一部分感到困惑。我不太确定如何将系列表达式解释为代数表达式。一个解释会很好!谢谢。

算法:

for ( j = 0; j < n; j++ )

{

 for ( k = j; k < n; k++ )

 {



 }

}
will result in a number of iterations of given by the expression:

 = n + (n-1) + (n-2) + (n-3) + ........ + (n - n)

1 个答案:

答案 0 :(得分:0)

对于j=0,有nk值。 对于j=1,有n-1k值。 对于j=2,有n-2k值。 ... 对于j=n-2,有n-(n-2)k值。 对于j=n-1,有n-(n-1)k值。

因此,内部循环将具有:

n + (n-1) + ... + (n-(n-2)) + (n-(n-1))

迭代。

尽管数学家使用了许多技术,但是并没有将表达式转换为封闭形式(即,转换为具有固定操作数+的代数表达式的通用方法), -*/(表示此数字不取决于参数n)。

因此,您基本上必须事先了解一些知名的转换,并尽其所能将它们结合起来。

在上面的示例中,我们可以做的是将表达式重写为:

sum_{j=0}{n-1} (n - j)

然后像这样操作它:

sum_{j=0}^{n-1} (n - j) = Σ(n-j)                     ; 0 ≤ j ≤ n-1
                        = Σn - Σj                    ; regroup
                        = n*n - (n-1)n/2             ; see below
                        = n(n+1)/2                   ; n is common factor

在这里,众所周知的公式是我用来替换Σj的公式,您会在许多地方找到它的解释。第一次替换Σn = n*n是微不足道的,因为我们将n自身添加了n次。