big-o - 如何将给定的级数表达式简化为代数表达式?
问题描述
我需要将给定的级数表达式简化为代数表达式,而不需要求和。
然后我必须用 Big O Notation 来表达代数表达式的表现。
我主要对第一部分感到困惑。我不太清楚如何将级数表达式解释为代数表达式。一个解释会很棒!谢谢。
算法:
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)
解决方案
因为j=0
有 的n
值k
。因为j=1
有 的n-1
值k
。因为j=2
有 的n-2
值k
。...因为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
时间。
推荐阅读
- dns - google.com 的 DNS 请求在不同的时间返回不同的 a_record,即使名称服务器每次都相同
- python-3.x - 如何在函数中使用 calendar.leapdays() 来返回给定列表中有多少闰年?
- linux - 如何启动将启动另一个 bash 文件的 bash 脚本?
- google-apps-script - 检查范围内的空白单元格
- ruby-on-rails - Ruby on Rails 关联对象
- c++ - 快速的 2D 线条绘制
- forms - 羊驼表单添加按钮到文本字段
- php - 来自两个数组的对象数组
- reactjs - Context.Provider 在页面之间路由时重新渲染到初始状态
- c# - 取消所有正在运行的任务