一、和式的基本概念
∑ k ∈ K c a k = c ∑ k ∈ K a k ( 分 配 律 ) \sum_{k \in K} ca_k = c \sum_{k \in K} a_k (分配律) k∈K∑cak=ck∈K∑ak(分配律)
∑ k ∈ K ( a k + b k ) = ∑ k ∈ K a k + ∑ k ∈ K b k ( 结 合 律 ) \sum_{k \in K} (a_k + b_k) = \sum_{k \in K} a_k + \sum_{k \in K} b_k (结合律) k∈K∑(ak+bk)=k∈K∑ak+k∈K∑bk(结合律)
∑ k ∈ K a k = ∑ p ( k ) ∈ K a p ( k ) ( 交 换 律 ) \sum_{k \in K} a_k = \sum_{p(k) \in K} a_{p(k)} (交换律) k∈K∑ak=p(k)∈K∑ap(k)(交换律)
二、扰动法
把某一项分出去或者加一项的运算叫扰动法,如果后面的和式可以构成用
s
n
s_n
sn 表示的形式,就可以简化和式,利用扰动法,我们常常可以用封闭形式来计算一个和式。
对
于
s
n
=
∑
0
≤
k
≤
n
a
k
对于s_n = \sum_{0 \leq k \leq n} a_k
对于sn=0≤k≤n∑ak
利用扰动法可以写成:
s
n
+
a
n
+
1
=
∑
0
≤
k
≤
n
+
1
a
k
=
a
0
+
∑
1
≤
k
≤
n
+
1
a
k
=
a
0
+
∑
1
≤
k
+
1
≤
n
+
1
a
k
+
1
=
a
0
+
∑
0
≤
k
≤
n
a
k
+
1
s_n + a_{n+1} = \sum_{0 \leq k \leq n + 1} a_k \\ = a_0 + \sum_{1 \leq k \leq n + 1} a_k \\ = a_0 + \sum_{1 \leq k + 1 \leq n + 1} a_{k + 1} \\ = a_0 + \sum_{0 \leq k \leq n} a_{k + 1}
sn+an+1=0≤k≤n+1∑ak=a0+1≤k≤n+1∑ak=a0+1≤k+1≤n+1∑ak+1=a0+0≤k≤n∑ak+1
现在我们可以对最后的那个和式进行处理,并尝试用sn将它表示出来。如果取得成功,我们就得到一个方程,它的解就是我们所求的和式。
例如,用这个方法可以求一般的几何级数的和
s
n
=
∑
0
≤
k
≤
n
a
x
k
s_n = \sum_{0 \leq k \leq n} ax^{k}
sn=0≤k≤n∑axk
利用扰动法可以写成
s
n
+
a
x
x
+
1
=
a
x
0
+
∑
0
≤
k
≤
n
a
x
k
+
1
=
a
x
0
+
x
∗
s
n
s_n + ax^{x + 1} = ax^0 + \sum_{0 \leq k \leq n} ax^{k + 1} \\=ax^0 + x*s_n
sn+axx+1=ax0+0≤k≤n∑axk+1=ax0+x∗sn
由这个可以得到
s
n
=
a
−
a
x
n
+
1
1
−
x
,
x
≠
1
s_n = \frac{a - ax^{n + 1}}{1 - x}, x \neq 1
sn=1−xa−axn+1,x=1
三、多重和式
∑
j
∑
k
表
示
先
对
k
求
和
再
对
j
求
和
\sum_{j}\sum_{k}表示先对k求和再对j求和
j∑k∑表示先对k求和再对j求和
∑ 1 ≤ j , k ≤ n a j b k = ∑ 1 ≤ j ≤ n a j ∑ 1 ≤ k ≤ n b k = ∑ 1 ≤ k ≤ n b k ∑ 1 ≤ j ≤ n a j \sum_{1 \leq j,k \leq n}a_jb_k = \sum_{1 \leq j \leq n} a_j \sum_{1 \leq k \leq n} b_k = \sum_{1 \leq k \leq n} b_k \sum_{1 \leq j \leq n} a_j 1≤j,k≤n∑ajbk=1≤j≤n∑aj1≤k≤n∑bk=1≤k≤n∑bk1≤j≤n∑aj
艾弗森约定 :[条件] ,满足条件为 1 1 1,否则为 0 0 0
在和式计算中有时需要用艾弗森约定将和式的下标转换成另外一种比较简单计算的形式
下面给出几个比较简单的转换区间
[
1
≤
j
,
k
≤
n
]
=
[
1
≤
j
≤
n
]
[
1
≤
k
≤
n
]
[1 \leq j,k \leq n] = [1 \leq j \leq n][1 \leq k \leq n]
[1≤j,k≤n]=[1≤j≤n][1≤k≤n]
[ 1 ≤ j ≤ n ] [ j ≤ k ≤ n ] = [ 1 ≤ j ≤ k ≤ n ] = [ 1 ≤ k ≤ n ] [ 1 ≤ j ≤ k ] [1 \leq j \leq n][j \leq k \leq n] = [1 \leq j \leq k \leq n] = [1 \leq k \leq n] [1 \leq j \leq k] [1≤j≤n][j≤k≤n]=[1≤j≤k≤n]=[1≤k≤n][1≤j≤k]
比如利用上面的,下面的和式就可以写成:
∑
j
=
1
n
∑
k
=
j
n
a
j
,
k
=
∑
1
≤
j
≤
k
≤
n
a
j
,
k
=
∑
k
=
1
n
∑
j
=
1
k
a
j
,
k
\sum_{j = 1}^{n}\sum_{k = j}^{n} a_{j, k} = \sum_{1 \leq j \leq k \leq n} a_{j, k} = \sum_{k = 1} ^ n \sum_{j = 1} ^ k a_{j, k}
j=1∑nk=j∑naj,k=1≤j≤k≤n∑aj,k=k=1∑nj=1∑kaj,k
举个例子,例如
n
2
n^2
n2个乘积
a
j
a
k
a_ja_k
ajak 组成的阵列
[
a
1
a
1
a
1
a
2
a
1
a
3
.
.
.
a
1
a
n
a
2
a
1
a
2
a
2
a
2
a
3
.
.
.
a
2
a
n
a
3
a
1
a
3
a
2
a
3
a
3
.
.
.
a
3
a
n
⋮
⋮
⋮
⋱
⋮
a
n
a
1
a
n
a
2
a
n
a
3
.
.
.
a
n
a
n
]
(3)
\left[ \begin{matrix} a_1a_1 & a_1a_2 & a_1a_3 & ... & a_1a_n \\ a_2a_1 & a_2a_2 & a_2a_3 & ... & a_2a_n \\ a_3a_1 & a_3a_2 & a_3a_3 & ... & a_3a_n \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_na_1 & a_na_2 & a_na_3 & ... & a_na_n \end{matrix} \right] \tag{3}
⎣⎢⎢⎢⎢⎢⎡a1a1a2a1a3a1⋮ana1a1a2a2a2a3a2⋮ana2a1a3a2a3a3a3⋮ana3.........⋱...a1ana2ana3an⋮anan⎦⎥⎥⎥⎥⎥⎤(3)
比如我们对主对角线以及主对角线的上边部分求和
可
以
令
s
=
∑
1
≤
j
≤
k
≤
n
a
j
a
k
可以令s = \sum_{1 \leq j \leq k \leq n} a_ja_k
可以令s=1≤j≤k≤n∑ajak
可以知道上半部分值的和下半部分值的和其实是一样的, 所以
s
=
∑
1
≤
j
≤
k
≤
n
a
j
a
k
=
∑
1
≤
k
≤
j
≤
n
a
k
a
j
s = \sum_{1 \leq j \leq k \leq n} a_ja_k = \sum_{1 \leq k \leq j \leq n} a_ka_j
s=1≤j≤k≤n∑ajak=1≤k≤j≤n∑akaj
你会发现这两个和式子除了
k
k
k 和
j
j
j 调换,其他的没有任何区别
又因为
[
1
≤
j
≤
k
≤
n
]
+
[
1
≤
k
≤
j
≤
n
]
=
[
1
≤
j
,
k
≤
n
]
+
[
1
≤
j
=
k
≤
n
]
[1 \leq j \leq k \leq n] + [1 \leq k \leq j \leq n] =[1 \leq j, k \leq n] + [1 \leq j = k \leq n]
[1≤j≤k≤n]+[1≤k≤j≤n]=[1≤j,k≤n]+[1≤j=k≤n]
所以
2
s
=
∑
1
≤
j
,
k
≤
n
a
j
a
k
+
∑
1
≤
j
=
k
≤
n
a
j
a
k
=
(
∑
j
=
1
n
a
j
)
(
∑
k
=
1
n
a
k
)
+
∑
1
≤
j
=
k
≤
n
a
j
a
k
=
(
∑
j
=
1
n
a
j
)
2
+
∑
j
=
1
n
a
k
2
2s = \sum_{1 \leq j, k \leq n} a_ja_k + \sum_{1 \leq j = k \leq n} a_ja_k \\=(\sum_{j = 1}^na_j)(\sum_{k = 1}^na_k) + \sum_{1 \leq j = k \leq n} a_ja_k \\=(\sum_{j = 1}^na_j)^2 + \sum_{j = 1}^na_k^2
2s=1≤j,k≤n∑ajak+1≤j=k≤n∑ajak=(j=1∑naj)(k=1∑nak)+1≤j=k≤n∑ajak=(j=1∑naj)2+j=1∑nak2
你会发现后面两个一个是
1
−
n
1-n
1−n 的和,一个是
1
−
n
1-n
1−n 的平方和,可以直接得到答案,会使得运算的时间复杂度降低很多
而且除 2 2 2 就可以得到 s s s 的答案
然后自己可以尝试下面的和式
s
=
∑
1
≤
j
<
k
≤
n
(
a
k
−
a
j
)
(
b
k
−
b
j
)
s = \sum_{1 \leq j < k \leq n} (a_k - a_j)(b_k - b_j)
s=1≤j<k≤n∑(ak−aj)(bk−bj)
最后应该可以划成
s
=
n
∑
1
≤
k
≤
n
a
k
b
k
−
(
∑
k
=
1
n
a
k
)
(
∑
k
=
1
n
b
k
)
s = n\sum_{1 \leq k \leq n} a_kb_k - (\sum_{k = 1}^na_k)(\sum_{k = 1}^nb_k)
s=n1≤k≤n∑akbk−(k=1∑nak)(k=1∑nbk)
这样就可以从两层 for 循环得到答案变成一层
同时还有一个概念
用 Hn 表示
1
+
1
2
+
1
3
+
.
.
.
+
1
n
1 + {1\over 2} + {1\over 3} +... + {1\over n}
1+21+31+...+n1 的值,有
∑
0
≤
k
<
n
H
k
=
n
H
k
−
n
\sum_{0 \leq k < n} H_k = nH_k - n
0≤k<n∑Hk=nHk−n