IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构与算法分析——数学基础(为之后的算法分析打基础) -> 正文阅读

[数据结构与算法]数据结构与算法分析——数学基础(为之后的算法分析打基础)


? 参加夏令营做的笔记

个人简介:南京邮电大学,计算机科学与技术,2019级在读本科
兴趣领域:数据结构、计算机图形学、深度学习、图像处理



一、数学知识复习

1.1 指数

① 指数的乘法: X A X B = X A + B X^AX^B=X^{A+B} XAXB=XA+B

② 指数的除法: X A X B = X A ? B \frac{X^A}{X^B}=X^{A-B} XBXA?=XA?B

③ 指数的指数: ( X A ) B = X A B (X^A)^B=X^{AB} (XA)B=XAB

④ 指数的加法: X N + X N = 2 X N ≠ X 2 N X^N+X^N=2X^N≠X^{2N} XN+XN=2XN?=X2N


1.2 对数

● 在计算机科学中,除非有特别的声明,所有的对数都是以 2 为底的。

定义: 当且仅当 l o g X B = A , X A = B log_XB=A,X^A=B logX?B=A,XA=B

定理: l o g A B = l o g C B l o g C A log_AB=\frac{log_CB}{log_CA} logA?B=logC?AlogC?B?

证明: X = l o g A B X = log_AB X=logA?B Y = l o g C B Y = log_CB Y=logC?B Z = l o g C A Z = log_CA Z=logC?A,那么根据 “对数的定义” 可知, A X = B , C Y = B , C Z = A A^X=B,C^Y=B,C^Z=A AX=B,CY=B,CZ=A,显然 ( C Z ) X = A X = B = C Y (C^Z)^X=A^X=B=C^Y (CZ)X=AX=B=CY,故 Z X = Y ZX=Y ZX=Y,这就代表 X = Y Z X=\frac{Y}{Z} X=ZY?,得证。


定理: l o g A B = l o g A + l o g B logAB=logA+logB logAB=logA+logB

证明: X = l o g A B , Y = l o g A , Z = l o g B X=logAB,Y=logA,Z=logB X=logAB,Y=logA,Z=logB,那么根据 “对数的定义” 可知: 2 X = A B , 2 Y = A , 2 Z = B 2^X=AB,2^Y=A,2^Z=B 2X=AB,2Y=A,2Z=B,显然, 2 Y × 2 Z = 2 Y + Z = A B = 2 X 2^Y\times2^Z=2^{Y+Z}=AB=2^X 2Y×2Z=2Y+Z=AB=2X,故 X = Y + Z X=Y+Z X=Y+Z,得证。


● 其他一些有用的公式如下,也可以用类似的方法推导:
??① l o g A / B = l o g A ? l o g B log A/B=logA-logB logA/B=logA?logB

??② l o g ( A B ) = B l o g A log(A^B)=BlogA log(AB)=BlogA

??③ l o g X < X logX<X logX<X (对所有 X>0 成立)

??④ l o g 1 = 0 , l o g 2 = 1 , l o g 1024 = 10 , l o g 1048576 = 20 log1=0,log2=1,log1024=10,log1048576=20 log1=0,log2=1,log1024=10,log1048576=20

虽然这些公式再基础不过了,都是高中所学的。但是对于以后复杂的数学推导,是和上面所用的推导方法类似的。

比如这里再证明一下第 ② 个公式:
??首先,我们需要先证明 <1> X l o g X Y = Y X^{log_{X}Y}=Y XlogX?Y=Y。令 <2> l o g X Y = A log_XY=A logX?Y=A ,则 <3> X A = Y X^A=Y XA=Y,再将 <2> 带入 <3> 可得 Y = X A = X l o g X Y Y=X^A=X^{log_{X}Y} Y=XA=XlogX?Y,即 Y = X l o g X Y Y=X^{log_{X}Y} Y=XlogX?Y (X>0)。
??接着就可以用 <1> 来证明 ② 了。令 <4> X = A B X=A^B X=AB,则 X = ( 2 l o g A ) B X=(2^{logA})^B X=(2logA)B,变换一下 X = 2 ( l o g A × B ) X=2^{(logA\times B)} X=2(logA×B),再变换一下 X = 2 B l o g A X=2^{BlogA} X=2BlogA,两边去对数得 l o g X = B l o g A logX=BlogA logX=BlogA,再把 <4> 代入得 l o g ( A B ) = B l o g A log(A^B)=BlogA log(AB)=BlogA


1.3 级数

● 在复习级数之前,可能大家对高中所学习的 “等差数列、等比数列” 所有遗忘了。

比如,你还记得 “等比数列的通项公式”、“等比数列的求和公式” 吗?

● 等差数列:是常见数列的一种,如果一个数列从第二项起,每一项与它的前一项的差等于同一个常数,这个数列就叫做等差数列,而这个常数叫做等差数列的公差,公差常用字母 d d d 表示。例如:1,3,5,7,9……(2n-1)。等差数列 a n {a_n} an? 的通项公式为: a n = a 1 + ( n ? 1 ) d a_n=a_1+(n-1)d an?=a1?+(n?1)d。前 n n n 项和公式为: S n = n a 1 + n ( n ? 1 ) d / 2 S_n=na_1+n(n-1)d/2 Sn?=na1?+n(n?1)d/2 S n = n ( a 1 + a n ) / 2 S_n=n(a_1+a_n)/2 Sn?=n(a1?+an?)/2。注意:以上都是整数。

● 等比数列:是指从第二项起,每一项与它的前一项的比值等于同一个常数的一种数列。这个常数叫做等比数列的公比,公比通常用字母 q q q 表示 ( q ≠ 0 ) (q≠0) (q?=0),等比数列 a 1 ≠ 0 a_1≠ 0 a1??=0。其中 a n {a_n} an? 中的每一项均不为 0 0 0。注: q = 1 q=1 q=1 时, a n a_n an? 为常数列。等比数列 a n {a_n} an? 的通项公式为: a n = a 1 q n ? 1 a_n=a_1q^{n-1} an?=a1?qn?1。前 n n n 项和公式为: S n = a 1 1 ? q n 1 ? q S_n=a_1\frac{1-q^n}{1-q} Sn?=a1?1?q1?qn?

● 对于等比数列的求和公式还记得是怎么推导的吗?

◆ 证明:假设 S n = a 1 + a 1 q + a 1 q 2 + . . . + a 1 q n ? 1 S_n=a_1+a_1q+a_1q^2+...+a_1q^n-1 Sn?=a1?+a1?q+a1?q2+...+a1?qn?1,那么 q S n = a 1 q + a 1 q 2 + a 1 q 3 + . . . + a 1 q n qS_n=a_1q+a_1q^2+a_1q^3+...+a_1q^n qSn?=a1?q+a1?q2+a1?q3+...+a1?qn,后者减去前者可得 ( q ? 1 ) S n = a 1 q n ? a 1 (q-1)S_n=a_1q^n-a1 (q?1)Sn?=a1?qn?a1,变换一下可得: S n = a 1 1 ? q n 1 ? q S_n=a_1\frac{1-q^n}{1-q} Sn?=a1?1?q1?qn?


几何级数公式:

● 关于级数,最容易记忆的公式: ∑ i = 0 N 2 i = 2 N + 1 ? 1 \sum_{i=0}^N2^i=2^{N+1}-1 i=0N?2i=2N+1?1 ∑ i = 0 N A i = A N + 1 ? 1 A ? 1 \sum_{i=0}^{N}A^i=\frac{A^{N+1}-1}{A-1} i=0N?Ai=A?1AN+1?1?。在第二个公式中,如果 0 < A < 1,则 ∑ i = 0 N A i ≤ 1 1 ? A \sum_{i=0}^{N}A^i ≤ \frac{1}{1-A} i=0N?Ai1?A1?,当 N N N 趋于 ∞ ∞ 时,该和趋向于 1 1 ? A \frac{1}{1-A} 1?A1?,这些公式是基本的 “几何级数” 的公式。


如何推导关于 ∑ i = 0 ∞ A i ( 0 < A < 1 ) \sum_{i=0}^{∞}A^i(0<A<1) i=0?Ai(0A1) 的求和公式:

● 令 S S S 表示和,则此时 S = 1 + A + A 2 + A 3 + . . . S=1+A+A^2+A^3+... S=1+A+A2+A3+...,显然 A S = A + A 2 + A 3 + A 4 + . . . AS=A+A^2+A^3+A^4+... AS=A+A2+A3+A4+...,将两式错位相减(这种运算只能对收敛级数进行),等号右边所有项均消掉,只留下 1 : S ? A S = 1 S-AS=1 S?AS=1于是乎: S = 1 1 ? A S=\frac{1}{1-A} S=1?A1?

● 可以用相同的方法求 ∑ i = 1 ∞ i 2 i ( 0 < A < 1 ) \sum_{i=1}^{∞}\frac{i}{2^i}(0<A<1) i=1?2ii?(0A1),它是一个经常出现的和: S = 1 2 + 2 2 2 + 3 2 3 + 4 2 4 + . . . S=\frac{1}{2}+\frac{2}{2^2}+\frac{3}{2^3}+\frac{4}{2^4}+... S=21?+222?+233?+244?+...对其乘以一个2得: 2 S = 1 + 2 2 + 3 2 2 + 4 2 3 + . . . 2S=1+\frac{2}{2}+\frac{3}{2^2}+\frac{4}{2^3}+... 2S=1+22?+223?+234?+...错位相减得: S = 1 + 1 2 + 1 2 2 + 1 2 3 + 1 2 4 + . . . S=1+\frac{1}{2}+\frac{1}{2^2}+\frac{1}{2^3}+\frac{1}{2^4}+... S=1+21?+221?+231?+241?+...显然 S = 2 S=2 S=2

● 分析中另一种常用类型的级数是算术级数。任何这样的级数都可以通过基本公式计算其值: ∑ i = 1 N i = N ( N + 1 ) 2 ≈ N 2 2 \sum_{i=1}^{N}i=\frac{N(N+1)}{2}≈\frac{N^2}{2} i=1N?i=2N(N+1)?2N2?例如,为求出和 2 + 5 + 8 + . . . + ( 3 k ? 1 ) 2+5+8+...+(3k-1) 2+5+8+...+(3k?1),就可以将其改写为 3 ( 1 + 2 + 3 + . . . + k ) ? ( 1 + 1 + 1 + . . . + 1 ) 3(1+2+3+...+k)-(1+1+1+...+1) 3(1+2+3+...+k)?(1+1+1+...+1),注:后面的括号有 k k k 1 1 1

● 两个不常见但需要知道的公式: ∑ i = 1 N i 2 = N ( N + 1 ) ( 2 N + 1 ) 6 ≈ N 3 3 \sum_{i=1}^{N}i^2=\frac{N(N+1)(2N+1)}{6}≈\frac{N^3}{3} i=1N?i2=6N(N+1)(2N+1)?3N3? ∑ i = 1 N i k = N k + 1 ∣ k + 1 ∣ , k ≠ ? 1 \sum_{i=1}^{N}i^k=\frac{N^{k+1}}{|k+1|},k≠-1 i=1N?ik=k+1Nk+1?,k?=?1

● 当 k = ? 1 k=-1 k=?1 时,后面一个公式就不成立。此时我们需要下面的公式,这个公式再计算机科学中使用的远比在其他数学科目中的要多。数 H N H_N HN? 叫作调和数,其和叫作调和和。下面近似式中的误差趋向于 γ ≈ 0.57721566 γ≈0.57721566 γ0.57721566,这个值称为 欧拉常数(Euler’s constant) H N = ∑ i = 1 N 1 i ≈ l o g e N H_N=\sum_{i=1}^N\frac{1}{i}≈log_eN HN?=i=1N?i1?loge?N


1.4 模运算

● 如果 N 能整除 A 或者 B,那么就说 A 与 B 模 N 同余(congrument),记为 A ≡ B ( m o d ? N ) A ≡ B(mod \,N) AB(modN)。例如, 71 ≡ 51 ≡ 1 ( m o d ? 10 ) 71≡51≡1(mod\,10) 71511(mod10)

● 如同等号一样,若 A ≡ B ( m o d ? N ) A ≡ B(mod \,N) AB(modN),则有加法性质 A + C ≡ B + C ( m o d ? N ) A+C≡B+C(mod \, N) A+CB+C(modN) 以及乘法性质 A D ≡ B D ( m o d ? N ) AD≡BD(mod \, N) ADBD(modN)。这个都易证明。还有一个指数性质 A C ≡ B C ( m o d ? N ) A^C≡B^C(mod \, N) ACBC(modN)

◆ 要证明 “指数性质”,则要证明 “ A C ( m o d ? N ) ≡ A ( m o d ? N ) A^C(mod \, N) ≡ A (mod \, N) AC(modN)A(modN)”,则首先要证明 A × A ( m o d N ) = A A×A(modN)=A A×A(modN)=A,但是我经过我的努力,未成功,等学到后面再试试吧。


1.5 证明方法

● 证明数据结构分析中的结论,最常用的两个方法是:归纳法反证法。其中证明一个定理不成立的最好方法是举出一个反例。

归纳法证明:【由归纳法进行的证明有两个标准的部分】
基准情形(base case):确定定理对于某个(某些)小的(通常是退化的)值的正确性(这一步几乎总是简单的)。
归纳假设(inductive hypothesis):假设定理对直到某个有限数 k k k 的所有情况都是成立的。然后使用这个假设证明定理对于下一个值 (通常是 k + 1 k+1 k+1) 也是成立的。至此定理得证(在 k k k 有限的情形下)。

例如,证明斐波拉契数列 F 0 = 1 , F 1 = 1 , F 2 = 2 , F 3 = 3 , F 4 = 5 , . . . , F i = F i ? 1 + F i ? 2 F_0=1,F_1=1,F_2=2,F_3=3,F_4=5,...,F_i=F_{i-1}+F_{i-2} F0?=1,F1?=1,F2?=2,F3?=3,F4?=5,...,Fi?=Fi?1?+Fi?2?,对于 i ≥ 1 i≥1 i1满足 F i ≤ ( 5 3 ) i F_i≤(\frac{5}{3})^i Fi?(35?)i

??证明:首先验证定理对基准情形成立。容易验证 F 1 = 1 < 5 3 F_1=1<\frac{5}{3} F1?=1<35? F 2 = 2 < 25 9 F_2=2<\frac{25}{9} F2?=2<925?

??然后假设定理对于 i = 1 , 2 , . . . , k i=1,2,...,k i=1,2,...,k 成立,这就是归纳假设。为了证明定理,我们需要证明 F k + 1 < ( 5 3 ) k + 1 F_{k+1}<(\frac{5}{3})^{k+1} Fk+1?<(35?)k+1,根据定义可得: F k + 1 = F k + F k ? 1 F_{k+1}=F_k+F_{k-1} Fk+1?=Fk?+Fk?1?那么将归纳假设用于等号右边,可得: F k + 1 < ( 5 3 ) k + ( 5 3 ) k ? 1 = 3 5 ( 5 3 ) k + 1 + 9 25 ( 5 3 ) k + 1 = 24 25 ( 5 3 ) k + 1 < ( 5 3 ) k + 1 F_{k+1}<(\frac{5}{3})^k+(\frac{5}{3})^{k-1}=\frac{3}{5}(\frac{5}{3})^{k+1}+\frac{9}{25}(\frac{5}{3})^{k+1}=\frac{24}{25}(\frac{5}{3})^{k+1}<(\frac{5}{3})^{k+1} Fk+1?<(35?)k+(35?)k?1=53?(35?)k+1+259?(35?)k+1=2524?(35?)k+1<(35?)k+1得证。


● 再证明一个例子:“如果 N ≥ 1 N≥1 N1,则 ∑ i = 1 N i 2 = N ( N + 1 ) ( 2 N + 1 ) 6 \sum_{i=1}^Ni^2=\frac{N(N+1)(2N+1)}{6} i=1N?i2=6N(N+1)(2N+1)?

??证明:用数学归纳法证明。对于基准情形,容易看到,当 N = 1 N=1 N=1 的时候定理成立。对于归纳假设,我们设定定理对 1 ≤ k ≤ N 1≤k≤N 1kN 成立。接着在该假设下证明定理对于 N + 1 N+1 N+1 也是成立的。我们有 ∑ i = 1 N + 1 i 2 = ∑ i = 1 N i 2 + ( N + 1 ) 2 \sum_{i=1}^{N+1}i^2=\sum_{i=1}^{N}i^2+(N+1)^2 i=1N+1?i2=i=1N?i2+(N+1)2应用归纳假设,我们得到
∑ i = 1 N + 1 i 2 = N ( N + 1 ) ( 2 N + 1 ) 6 + ( N + 1 ) 2 = ( N + 1 ) N ( 2 N + 1 ) + 6 N + 6 6 = ( N + 1 ) 2 N 2 + 7 N + 6 6 = ( N + 1 ) ( N + 2 ) ( 2 N + 3 ) 6 \begin{aligned} \sum_{i=1}^{N+1}i^2 &= \frac{N(N+1)(2N+1)}{6}+(N+1)^2 \\ &= (N+1)\frac{N(2N+1)+6N+6}{6} \\ &= (N+1)\frac{2N^2+7N+6}{6} \\ &=(N+1) \frac{(N+2)(2N+3)}{6} \end{aligned} i=1N+1?i2?=6N(N+1)(2N+1)?+(N+1)2=(N+1)6N(2N+1)+6N+6?=(N+1)62N2+7N+6?=(N+1)6(N+2)(2N+3)??因此 ∑ i = 1 N + 1 i 2 = ( N + 1 ) [ ( N + 1 ) + 1 ] [ 2 ( N + 1 ) + 1 ] 6 \sum_{i=1}^{N+1}i^2=\frac{(N+1)[(N+1)+1][2(N+1)+1]}{6} i=1N+1?i2=6(N+1)[(N+1)+1][2(N+1)+1]?得证。

反证法证明: 通过假设定理不成立,然后证明假设导致某个已知的性质不成立,从而说明原假设是错误的。

◆ 一个典型的例子:证明存在无穷多个素数。

??证明:首先假设定理不成立:即只有有穷多个素数→即存在个最大的素数 P k P_k Pk?。令 P 1 , P 2 , . . . , P k P_1,P_2,...,P_k P1?,P2?,...,Pk? 是依序排列的所有素数并考虑 N = P 1 × P 2 × P 3 × . . . × P 4 + 1 N=P_1\times P_2\times P_3\times...\times P_4+1 N=P1?×P2?×P3?×...×P4?+1??显然, N N N 是比 P k P_k Pk? 更大的数,根据假设可知 “ N N N 不是素数,它是一个偶数”。可是 P 1 , P 2 , . . . , P k P_1,P_2,...,P_k P1?,P2?,...,Pk? 都不能整除 N N N,因为除得的结果总有余数 1 1 1。因为每一个整数要么是素数,要么是素数的乘积,这就产生了一个矛盾。
??因此, P k P_k Pk? 是最大的素数的原假设是不成立,这就意味着定理成立。



二、递归简论

● 关于递归,有几个重要但可能会被搞混的地方。
??① 虽然我们定义一个函数用的是这个函数本身,但是我们并没有用函数本身定义该函数的一个特定的实例。换句话说,就是通过使用 F ( 3 ) F(3) F(3) 来得到 F ( 3 ) F(3) F(3) 的值才是循环的。通过使用 F ( 4 ) F(4) F(4) 得到 F ( 5 ) F(5) F(5) 的值不是循环的,除非 F ( 4 ) F(4) F(4) 的求值又用到了 F ( 5 ) F(5) F(5) 的计算。
??② 第二个重要的问题:“如何做?” 和 “为什么要这样?”。这将在后面学习。

● 递归的前两个基本法则:
??1、基准情形(base case):必须有某些基准的情形,它们不用递归就能求解。
??2、不断推进(making progress):对于那些需要递归求解的情形,递归调用必须能够朝着基准情形的方向推进。

● 递归例子(打印输出数):设我们有一个正整数 N N N,并希望把它打印出来。我们的例子程序的名字为 P r i n t O u t ( N ) PrintOut(N) PrintOut(N)。程序如下:

void PrintOut(unsigned int N) {
	if ( N>= 10 ) {
		PrintOut( N / 10 );
	}
	printf("%d", N % 10);
}

:我们并没有高效地编写程序。我们应该避免使用 m o d mod mod 操作,因为它的耗费是很大的,实质上它是 “ N % 10 = N ? ? N / 10 ? ? 10 N\%10=N-?N/10?*10 N%10=N??N/10??10” 。


递归和归纳:我们使用归纳法对上述数字递归打印程序基于严格的证明:

??证明:首先,如果 N N N 只有一位数字,那么程序显然是正确的,因为它只调用一次 p r i n t f printf printf。然后,假设 P r i n t O u t PrintOut PrintOut 对所有 k k k 位或位数更少的数均能正常工作。 k + 1 k+1 k+1 位的数字可以通过其前 k k k 位数字和后面的最低一位数字来表示。前 k k k 位数字形成的数恰好是 ? N / 10 ? ?N/10? ?N/10?归纳假设它能够被正确地打印出来,而最后一位数字是 N ? m o d ? 10 N\, mod \, 10 Nmod10,因此该程序能够正确打印出任意 k + 1 k+1 k+1 位数。于是得证。

◆ 这个证明看起来好像很 “没必要”,但是它的思想很重要它阐述的是在设计递归程序时,同一个问题所有的较小实例均可以被假设运行正确,递归程序只需要把这些较小问题的解结合起来而形成现行问题的解即可。其数学根据就是归纳法

递归的第三个法则:设计法则(design rule)。假设所有的递归调用都能运行。这是一条重要的法则,因为它意味着,当设计递归程序时一般设计递归程序时一般没有必要知道簿记管理的细节,不必试图追踪大量的递归调用。追踪实际的递归调用序列常常是非常困难的。

??递归最主要问题是隐含的簿记开销。虽然这些开销几乎总是合理的(因为递归程序不仅简化了算法设计,而且也有助于给出更加简洁的代码),但是递归绝不应该作为简单 f o r for for 循环的代替物。后面将会更仔细地讨论递归涉及的系统开销。

● 当编写递归的例程,关键是要牢记递归的四条基本法则:
??1、基准情形。必须有某些基准的情形,它们不用递归就能求解。
??2、不断推进。对于那些需要递归求解的情形,递归调用必须能够朝着产生基准情形的方向推进。
??3、设计法则。假设所有的递归调用都能运行。
??4、合成效益法则(compound interest rule)。在求解一个问题的同一实例,切勿在不同的递归调用中做重复性的工作。

◆ 第四条细则的正确性将在后面进行证明。现在只要记住就行。



三、练手习题

3.1 请问 2 100 ( m o d ? 5 ) 2^{100}(mod \, 5) 2100(mod5) 是多少?

◆ 解:因为 2 4 ≡ 1 ( m o d ? 5 ) 2^4≡1(mod\, 5) 241(mod5),故 2 100 ≡ ( 2 4 ) 25 ≡ 1 25 ( m o d ? 5 ) = 1 2^{100}≡(2^4)^{25}≡1^{25}(mod \, 5)=1 2100(24)25125(mod5)=1

??为什么要像上面那样分解呢?看一下这种解法就知道原因了: 2 5 ( m o d ? 5 ) ≡ 2 ( m o d ? 5 ) 2^5(mod\, 5)≡2(mod\, 5) 25(mod5)2(mod5),故 2 100 ≡ ( 2 5 ) 20 ≡ 2 20 ( m o d ? 5 ) = 1 2^{100}≡(2^5)^{20}≡2^{20}(mod \, 5)=1 2100(25)20220(mod5)=1

??这里用到了模运算的指数性质


3.2 请估计 ∑ i = ? N / 2 ? N 1 i \sum_{i=?N/2?}^N\frac{1}{i} i=?N/2?N?i1? 的大小?

◆ 解:使用积分的思想。 ∑ i = ? N / 2 ? N 1 i = ∑ i = 1 N 1 i ? ∑ i = 1 ? N / 2 ? ? 1 1 i ≈ ∑ i = 1 N 1 i ? ∑ i = 1 N / 2 1 i ≈ l n N ? l n ( N / 2 ) = l n 2 \sum_{i=?N/2?}^N\frac{1}{i}=\sum_{i=1}^N\frac{1}{i}-\sum_{i=1}^{?N/2?-1}\frac{1}{i}≈\sum_{i=1}^N\frac{1}{i}-\sum_{i=1}^{N/2}\frac{1}{i}≈lnN-ln(N/2)=ln2 i=?N/2?N?i1?=i=1N?i1??i=1?N/2??1?i1?i=1N?i1??i=1N/2?i1?lnN?ln(N/2)=ln2
???这里用到了调和数公式。


3.3 请求 ∑ i = 0 ∞ 1 4 i \sum_{i=0}^∞\frac{1}{4^i} i=0?4i1? ∑ i = 0 ∞ i 4 i \sum_{i=0}^∞\frac{i}{4^i} i=0?4ii? ∑ i = 0 ∞ i 2 4 i \sum_{i=0}^∞\frac{i^2}{4^i} i=0?4ii2? 的和?

◆ 解:对于 ∑ i = 0 ∞ 1 4 i \sum_{i=0}^∞\frac{1}{4^i} i=0?4i1? 这个好求,等比数列求和: ∑ i = 0 ∞ 1 4 i = 4 3 \sum_{i=0}^∞\frac{1}{4^i}=\frac{4}{3} i=0?4i1?=34????对于 ∑ i = 0 ∞ i 4 i \sum_{i=0}^∞\frac{i}{4^i} i=0?4ii? 这个也好求,用错位相减法: ∑ i = 0 ∞ i 4 i = 4 9 \sum_{i=0}^∞\frac{i}{4^i}=\frac{4}{9} i=0?4ii?=94????而 ∑ i = 0 ∞ i 2 4 i \sum_{i=0}^∞\frac{i^2}{4^i} i=0?4ii2? 这个就要拆开来看,假设: S = ∑ i = 0 ∞ i 2 4 i = 1 4 + 4 4 2 + 9 4 3 + 16 4 4 + . . . S=\sum_{i=0}^∞\frac{i^2}{4^i}=\frac{1}{4}+\frac{4}{4^2}+\frac{9}{4^3}+\frac{16}{4^4}+... S=i=0?4ii2?=41?+424?+439?+4416?+...???则有: 4 S = 4 ∑ i = 0 ∞ i 2 4 i = 1 + 4 4 + 9 4 2 + 16 4 3 + 25 4 4 + . . . 4S=4\sum_{i=0}^∞\frac{i^2}{4^i}=1+\frac{4}{4}+\frac{9}{4^2}+\frac{16}{4^3}+\frac{25}{4^4}+... 4S=4i=0?4ii2?=1+44?+429?+4316?+4425?+...???错位相减可得 3 S = 1 + 3 4 + 5 4 2 + 7 4 3 + 9 4 4 + . . . = 2 × ( 1 4 + 2 4 2 + 3 4 3 + 4 4 4 + . . . ) + ( 1 + 1 4 + 1 4 2 + 1 4 3 + 1 4 4 + . . . ) = 2 × ∑ i = 0 ∞ i 4 i + ∑ i = 0 ∞ 1 4 i = 2 × 4 9 + 4 3 = 20 9 \begin{aligned}3S &=1+\frac{3}{4}+\frac{5}{4^2}+\frac{7}{4^3}+\frac{9}{4^4}+...\\ &=2\times(\frac{1}{4}+\frac{2}{4^2}+\frac{3}{4^3}+\frac{4}{4^4}+...) + (1+\frac{1}{4}+\frac{1}{4^2}+\frac{1}{4^3}+\frac{1}{4^4}+...) \\ &=2\times \sum_{i=0}^∞\frac{i}{4^i} + \sum_{i=0}^∞\frac{1}{4^i} \\ &=2\times \frac{4}{9} + \frac{4}{3} \\ &= \frac{20}{9} \end{aligned} 3S?=1+43?+425?+437?+449?+...=2×(41?+422?+433?+444?+...)+(1+41?+421?+431?+441?+...)=2×i=0?4ii?+i=0?4i1?=2×94?+34?=920?????故 ∑ i = 0 ∞ i 2 4 i = 20 27 \sum_{i=0}^∞\frac{i^2}{4^i}=\frac{20}{27} i=0?4ii2?=2720?



四、补充说明

● 若有写得不对的地方,或有疑问,欢迎评论交流。


?? ??

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:03:35  更:2022-07-03 11:06:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:26:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码