记得高中的时候数学能力还是很突出的,但到了大学,高数好像离十里越来越远。过去这么长时间,已经有了定论:十里的数学知识已还给老师!这还真是让人崩溃,现在无处不数学,当然为了研究算法也得把高数给拾回来,所以有了本篇数学知识的复习。
此篇应该会一直补充,十里会边学习边丰富文章内容,一方面根据需求复习数学的基础知识,另一方面锻炼整理能力。
虽然部分知识很简单,也在这里一并整理上,主要参考:《数据结构与算法分析——C语言描述》
指数
XAXB=XA+BXAXB=XA−B(XA)B=XABXN+XN=2XN≠X2N2N+2N=2N+1
对数
除了特殊说明,所有的对数均以2为底数。
logAB=logCBlogCAlogAB=logA+logBlogAB=logA−logBlog(AB)=BlogAlogX<X(对所有的X>0成立。)
级数
几何级数
公式
N∑i=0Ai=AN+1−1A−1(1)
分两种情况讨论:
-
A=1
此时,有:
N∑i=0AiA=1−−→N∑i=01=N(2)
-
A≠1
公式 1 证明:
S=1+A+A2+A3+A4+⋯+AN
AS=A×S+1−1, 有:
AS=1+A+A2+A3+A4+⋯+AN+AN+1−1∴(A−1)S=AS−S=AN+1−1∴S=AN+1−1A−1
那么可得:
N∑i=0Ai=AN+1−1A−1
特别的,当 A=2 时,有:
N∑i=02i=2N+1−1
另外当 0<A<1 时,由 1 公式还可以得到公式 3:
N∑i=0Ai≤11−A(3)
公式 3 表示了 N→∞ 值趋近于 11−A 简单证明过程如下:
S=1+A+A2+A3+A4+…AS=A+A2+A3+A4+…∵0<A<1∴S−AS≤1∴N∑i=0Ai=S≤11−A
算术级数
另一种常用类型的级数是算术级数,任何如下公式 4 的级数都可以通过基本公式计算值。
N∑i=1i=N(N+1)2≈N22(4)
比如,1+5+9+13+⋯+(4N−3) 有:
∑i=1N4N−3=N(2N−1)(5)
公式 5 计算过程依赖于公式 2 和 4:
∑i=1N4N−3=1+5+9+13+⋯+(4N−3)=4(1+2+3+⋯+N)−3(1+1+1+⋯+1)=4N(N+1)2−3N=N(2N−1)
平方和公式
不太常见的还有平方和公式,又叫四角锥数或金字塔数,如公式 6:
N∑i=1i2=N(N+1)(2N+1)6(6)
这里简单说一下恒等式方法证明公式 6 的过程:
已知 (N+1)3=N3+3N2+3N+1,那么可得:
(N+1)3−N3=3N2+3N+1N3−(N−1)3=3(N−1)2+3(N−1)+1(N−1)3−(N−2)3=3(N−2)2+3(N−2)+1 ⋮23−13=3×12+3×1+1
恒等式左右相加可得:
(n+1)3−1=3(12+22+32+⋯+N2)+3(1+2+3+⋯+N)+N↓12+22+32+⋯+N2i=(N+1)3−3N(N+1)2−N−13
最终整理可得:
N∑i+1i2=1+22+32+⋯+N2=N(N+1)(2N+1)6
其它证明方法可参考:平方和公式
平方和公式是冯哈伯公式(Faulhaber’s formula2)的一个特例,可知有如下有近似估计公式:
N∑i=1ik≈Nk+1|k+1|, k≠−1
可以看到上述公式的条件为 k≠−1,k=−1 时公式 6 是不成立的,这时需要用到一个据说在计算机领域经常用到的公式:
HN=N∑i=11i≈logeN
HN 叫做调和数,上述近似式的误差趋近于 γ≈0.57721566,这个数值称为欧拉常数(Euler’s constant)
代数运算
N∑i=1f(N)=Nf(N)N∑i=n0f(i)=N∑i=1f(i)−n0−1∑i=1f(i)
证明方法
数据结构及算法分析中针对结论常用的的证明方法有归纳法和反证法。
归纳法
归纳法有两个标准的部分:
- 证明基准情形:确定定理对于某些值的正确性;
- 归纳假设
以公式 6 为例进行说明,归纳法证明如下。
对于基准情形,定理当 N=1 时代入数可知成立;对于归纳假设,假设公式 6 对于 1≤k≤N 成立,在此情况下,只需证明 N+1 时公式同样成立即可。
如果 N≥1, 易得:
N+1∑i=1i2=N∑i=1i2+(N+1)2
代入公式 6:
N+1∑i=1i2=N(N+1)(2N+1)6+(N+1)2=(N+1)(N+2)(2N+3)6=(N+1)[(N+1)+1][2(N+1)+1]6
可以看到, N+1 时符合,定理得证。
反证法
通过证明定理不成立,然后证明该假设导致某个已知的性质不成立,从而说明愿假设是错误的。
v1.5.2