【数据结构与算法分析inC-MarkAllen】1-数学基础

news2024/10/5 21:14:15

文章目录

  • 1. 第一章
    • 1.1 进行算法分析目的
    • 1.2 数学知识复习
      • 1.2.1 指数
      • 1.2.2 对数
      • 1.2.3 级数
        • 几何级数
        • 算术级数
      • 1.2.4 模运算
        • 性质
      • 1.2.5 证明方法
        • 归纳法
          • 斐波那契
        • 反证法
    • 1.3 递归简论
    • 练习题

数据结构研究组织大量数据的方法,算法分析是对算法运行时间的评估

1. 第一章

在程序正确运行前提下,保证在大量数据集或者特殊情况下能够运行并得出正确结果

1.1 进行算法分析目的

1.1.1 适应大量数据情况

由于简单选择排序,冒泡排序,插入排序的时间复杂度都是 O ( n 2 ) O(n^2) O(n2) 。只要基于此思想,时间复杂度都不会低,如后例:

N N N 个数中选择第 k k k 大的数

递减排序,取第K大的数

冒泡排序

//对全部数据进行冒泡排序
void Bubble_Sort(int a[],int n){
	bool flag = false;
	for(int i = 1;i <= n;++i){
		for(int j = 1;j <= n-i;++j){
			if(a[j] < a[j+1]){
				swap(a[j],a[j+1]);
				flag = true;
			}
		}
	
	if(flag == false)
		return ;
	}
}

void Select_Sort(int a[],int n){
	for(int i = 1;i <= n;i++){
		int maxIdx = i;
		for(int j = i+1;j <= n;++j){
			if(a[j] > a[maxIdx])
				maxIdx = j;
		}
		if(maxIdx != i)
			swap(a[maxIdx],a[i]);
	}	
}

void KBig(int a[],int n,int k){

	//先排序
	Bubble_Sort(a,n);
	Select_Sort(a,n);

	return a[k];
}
插入排序思想

取前 K K K个数递减排序。再取新数 x i x_i xi ,从第一个数开始比较

  • x i ≥ a i x_i \ge a_i xiai :则将该数插入
  • x i < a k x_i < a_k xi<ak :则不做操作
//从小到大排序
void Direct_InsertSort(ElemType A[], int k){
	int i,j;
    for(i = 2;i <= k;++i){
        if(A[i] > A[i-1]){
            //若待插入元素A[i] > A[i-1] ,从后向前找插入位置
            A[0] = A[i];
            //A为一固定序列,且数据存储已定,所以需要哨兵记录待插入元素      
            for(j = i-1;j >= 0 && A[0] > A[j];--j)
                A[j+1] = A[j];
           	A[j+1] = A[0];
        }
    }
}

int KBig_Insert(int a[],int n,int k){
	///sort(a,k);//将前k个数据降序排序
	Direct_InsertSort(a,k);
	for(int i = k+1;i <= n;++i){
		if(a[i] > a[k]){
			a[0] = a[i];
			for(int j = k;j >= 0 && a[0] > a[j];--j)
				a[j+1] = a[j];
			a[j+1] = a[0];
		}
	}

	return a[k];//处理完全部数据后,第k个数据为所求
}

int main(){
	int n;//输入n省略
	int a = (int *)malloc(sizeof(int)*(n+1));
	for(int i = 1;i <= n;++i){
		//初始化n个数据
		...
	}
	KBig_Insert(a,n,k);

	return 0;
}

1.1.2 边界条件正确

1.2 数学知识复习

1.2.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=XAB

( X A ) B = X A B (X^{A})^B=X^{AB} (XA)B=XAB

X N + X N = 2 X N X^N+X^N=2X^N XN+XN=2XN

1.2.2 对数

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

l o g A B = l o g C B l o g C A ; C > 0 log_AB=\frac{log_CB}{log_CA};C>0 logAB=logCAlogCB;C>0

l o g A B = l o g A + l o g B logAB=logA+logB logAB=logA+logB

l o g A B = l o g A − l o g B log\frac{A}{B}=logA-logB logBA=logAlogB

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

l o g X < X , X > 0 logX<X,X>0 logX<X,X>0

l o g 1 = 0 , l o g 2 = 1 , l o g 1024 = 10 log1=0,log2=1,log1024=10 log1=0,log2=1,log1024=10

1.2.3 级数

几何级数

有是否收敛的区别

由等比数列求和

∑ i = 0 N A i = 1 − A N + 1 1 − A , 0 < A < 1 ,当 N → ∞ 时,收敛于 1 1 − A \sum_{i=0}^NA^i=\frac{1-A^{N+1}}{1-A},0<A<1,当 N\rightarrow \infty 时,收敛于 \frac{1}{1-A} i=0NAi=1A1AN+10<A<1,当N时,收敛于1A1
证明:

S = 1 + A + A 2 + ⋯ A S = A + A 2 + A 3 + ⋯ S − A S = 1 ⇒ S = 1 1 − A \begin{aligned} &S=1+A+A^2+\cdots\\ &AS=A+A^2+A^3+\cdots\\ &S-AS=1\Rightarrow S=\frac{1}{1-A} \end{aligned} S=1+A+A2+AS=A+A2+A3+SAS=1S=1A1


∑ i = 1 ∞ i 2 i = 2 \sum_{i=1}^\infty \frac{i}{2^i}=2 i=12ii=2

证明:
S = 1 2 + 2 2 2 + 3 2 3 + ⋯ 2 S = 1 + 2 2 + 2 2 2 + ⋯ 2 S − S = 1 + 1 ⇒ S = 2 \begin{aligned} &S=\frac{1}{2}+\frac{2}{2^2}+\frac{3}{2^3}+\cdots\\ &2S=1+\frac{2}{2}+\frac{2}{2^2}+\cdots\\ &2S-S=1+1\Rightarrow S=2 \end{aligned} S=21+222+233+2S=1+22+222+2SS=1+1S=2

算术级数

可以通过基本公式计算值

∑ i = 1 N i = ( 1 + N ) N 2 ≈ N 2 ∑ i = 1 N i 2 = N ( N + 1 ) ( 2 N + 1 ) 6 ≈ N 3 3 ⋮ ∑ i = 1 n i k = N k + 1 ∣ k + 1 ∣ , k ≠ − 1 对于 k = − 1 , 调和数 H N = ∑ i = 1 N 1 i = l o g e N \begin{aligned} &\sum_{i=1}^N i=\frac{(1+N) N}{2}\approx\frac{N}{2}\\ &\sum_{i=1}^Ni^2=\frac{N(N+1)(2N+1)}{6}\approx\frac{N^3}{3}\\ &\vdots\\ &\sum_{i=1}^ni^k=\frac{N^{k+1}}{\vert k+1\vert},k\neq -1\\ &对于k=-1,调和数H_N=\sum_{i=1}^N\frac{1}{i}=log_eN \end{aligned} i=1Ni=2(1+N)N2Ni=1Ni2=6N(N+1)(2N+1)3N3i=1nik=k+1∣Nk+1,k=1对于k=1,调和数HN=i=1Ni1=logeN

SP:
∑ i = 1 N f ( N ) = N f ( N ) ∑ i = n 0 N f ( i ) = ∑ i = 1 N f ( i ) − ∑ i = n 1 n 0 − 1 f ( i ) \begin{aligned} &\sum_{i=1}^Nf(N)=N f(N)\\ &\sum_{i=n_0}^N f(i)= \sum_{i=1}^{N}f(i)-\sum_{i=n_1}^{n_0-1}f(i) \end{aligned} i=1Nf(N)=Nf(N)i=n0Nf(i)=i=1Nf(i)i=n1n01f(i)

1.2.4 模运算

A与B模N同余,记为 A ≡ B ( m o d N ) A\equiv B(mod\quad N) AB(modN) 如: 81 ≡ 61 ≡ 1 ( m o d 10 ) 81\equiv 61\equiv 1(mod\quad 10) 81611(mod10)

性质

A ≡ B ( m o d N ) ⇒ ( A + C ) ≡ ( B + C ) ( m o d N ) ⇒ A D ≡ B D ( m o d N ) \begin{aligned} A\equiv B(mod N)&\Rightarrow (A+C)\equiv(B+C)(mod\quad N)\\ &\Rightarrow AD\equiv BD(mod\quad N) \end{aligned} AB(modN)(A+C)(B+C)(modN)ADBD(modN)

1.2.5 证明方法

归纳法

  1. 证明基准情形
  2. 归纳假设:假设定力对直到某个有限数k的所有情况都成立,在通过这个假设证明后续值成立。
斐波那契

{ F 0 = 1 , F 1 = 1 F i = F i − 1 + F i − 2 , i ≥ 2 \begin{cases} &F_0=1,F_1=1\\ &F_i=F_{i-1}+F_{i-2},i\ge 2 \end{cases} {F0=1,F1=1Fi=Fi1+Fi2,i2

证明: F k + 1 < ( 5 3 ) k + 1 F_{k+1}< \left(\frac{5}{3}\right)^{k+1} Fk+1<(35)k+1 证明:
当 k = 0 时, F 1 = 1 < 5 3 ,则在 k = 0 时成立 假设 k = m − 1 时,有 F m < ( 5 3 ) m 成立 则当 k = m 时, F m + 1 < ( 5 3 ) m + ( 5 3 ) m − 1 < ( 3 5 ) ( 5 3 ) m + 1 + ( 3 5 ) 2 ( 5 3 ) m + 1 < ( 3 5 + 9 25 ) ( 5 3 ) m + 1 = 24 25 ( 5 3 ) m + 1 < ( 5 3 ) m + 1 \begin{aligned} &当k=0时,F_1=1<\frac{5}{3},则在k=0时成立\\ &假设k=m-1时,有F_{m}< \left(\frac{5}{3}\right)^{m}成立\\ &则当k=m时,F_{m+1}< \left(\frac{5}{3}\right)^{m}+\left(\frac{5}{3}\right)^{m-1}<\left(\frac{3}{5}\right)\left(\frac{5}{3}\right)^{m+1}+\left(\frac{3}{5}\right)^2\left(\frac{5}{3}\right)^{m+1}\\ &<\left(\frac{3}{5}+\frac{9}{25}\right)\left(\frac{5}{3}\right)^{m+1}=\frac{24}{25}\left(\frac{5}{3}\right)^{m+1}<\left(\frac{5}{3}\right)^{m+1} \end{aligned} k=0时,F1=1<35,则在k=0时成立假设k=m1时,有Fm<(35)m成立则当k=m时,Fm+1<(35)m+(35)m1<(53)(35)m+1+(53)2(35)m+1<(53+259)(35)m+1=2524(35)m+1<(35)m+1

反证法

1.3 递归简论

四条基本法则

  • 基准情形:某些基准情形,无需递归就能解出
  • 不断推进:每次递归调用,必须向基准情形推进(不能出现循环定义)
  • 设计法则:假设所有递归调用都能运行
  • 合成效益法则:不同递归调用做不同的工作
void printOut(unsigned int N){
	if(N >= 10)
		printOut(N/10);
	// printDight(n)表示将单个数字输出到显示终端
	printDigit(N-(N/10)*10);//printDigit(N%10);	
}
  • 取模运算耗费很大?

练习题

1.3 只使用处理IO的 PrintDigit 函数,编写一个可以输出任意实数的函数

由于实数用计算机表示会存在舍入误差(RoundUp),所以在输出前,需按照舍入策略进行舍入。

  • 事前指定小数点后保留 DecPlaces

  • 舍入策略为四舍五入

    小数点后第 DecPlace+1 位加 0.5 × 1 0 − D e c P l a c e s 0.5\times 10^{-DecPlaces} 0.5×10DecPlaces

# include<iostream>

using namespace std;

//四舍五入
double RoundUp(double N,int DecPlaces){
    int i;
    double AmountToAdd = 0.5;

    //小数点后移 DecPlaces 位
    for(i = 0;i < DecPlaces;++i)
        AmountToAdd /= 10;

    return N+AmountToAdd;
}

//输出小数部分
void PrintFractionPart(double FractionPart,int DecPlaces){
    int i,ADigit;

    for(i = 0;i < DecPlaces;++i){
        FractionPart *= 10;//小数点后第一位移到个位
        ADigit = (int)FractionPart;//输出个位,即小数点后第一位
        cout << ADigit;
        FractionPart = FractionPart - ADigit;//递归输出后续小数部分
    }
}

void PrintReal(double N,int DecPlaces){
    int IntPart;
    double FractionPart;

    if(N < 0){
        putchar('-');
        N = -N;
    }

    N = RoundUp(N,DecPlaces);//四舍五入

    IntPart = (int)N;
    FractionPart = N-IntPart;//获取小数部分
    cout << IntPart;
    if(DecPlaces > 0)
        putchar('.');

    PrintFractionPart(FractionPart,DecPlaces);
}

int main(){
    cout << "输入需要输出的实数:";
    double N;
    cin >> N;
    cout << "输入小数点后位数:";
    int DecPlaces;//精度
    cin >> DecPlaces;

    PrintReal(N,DecPlaces);

    return 0;
}

1.4 语言提供 #include filename 的语句,用于读入 filename ,并将它插入到 include 语句处

  • 文件本身还可以包含 #include 语句
    • 不能 include 自身(self-referential)

思路:

  1. 逐行检测源代码,是否存在 #include SomeFile

  2. 检查 list 中,是否有文件名 SomeFile

    • 有,则 continue
    • 无:
      • 调用 ProcessFile(SomeFile); ,将文件内容插入当前位置;
      • SomeFilelist

    list 列表,维护由 ProcessFile 处理过的文件,避免重复调用

# include<iostream>
# include<cstdio>
#include<algorithm>
#include<vector>

using namespace std;

int main(int argc, char const *argv[]){
    /* code */
    FILE *fp = fopen("source.txt", "w+");

    fputs("#include <filename1>\n", fp);
    fputs("#include <filename1>\n", fp);
    fputs("#include <filename2>\n", fp);
    fputs("#include <filename3>\n", fp);
    fputs("#include <filename3>\n", fp);
    fputs("\n", fp);
    fputs("int main(){\n", fp);
    fputs(" cout << 'Hello' <<endl;\n", fp);
    fputs(" return 0;\n", fp);
    fputs("};\n", fp);
    rewind(fp);

    vector<string> list;

    char str[1024];
    char st[1024];
    string tmp;
    while(fgets(str, 1024, fp) && !feof(fp)){
        
        tmp = str;
        //去除空格
        tmp.erase(remove_if(tmp.begin(), tmp.end(), [](char c) {
                        return (c == ' ');
                    }), tmp.end());//网上找的,之后再说
        if('#' == str[0]){
            string filename = tmp.substr(tmp.find('<')+1,tmp.find('>')-tmp.find('<')-1);//str.substr(beginIdx,len)
            vector<string>::iterator idx = find(list.begin(),list.end(),filename);
            if(list.end() == idx){
                cout << str;
                // cout << filename << endl;
                list.push_back(filename);
                //ProcessFile(filename);查找filename文件,将其插入当前位置
                FILE *fo = fopen((filename+".txt").data(), "r");
                while(fgets(st, 1024, fo)){
                    string stt = st;
                    cout << stt;
                }
                cout << endl;
            }else{
                continue;
            }
        }else{
            cout << str;
        }
    }
    
    fclose(fp);

    return 0;
}

在这里插入图片描述

在这里插入图片描述

1.5 证明公式

l o g 2 X < X log_2X<X log2X<X 对所有 X > 0 X>0 X>0 成立
证明:

l o g X logX logX X X X
( 0 , 1 ] (0,1] (0,1] ≤ 0 \le 0 0 > 0 >0 >0
( 1 , 2 ] (1,2] (1,2] ≤ 1 \le 1 1>1
( 2 , 4 ] (2,4] (2,4] ≤ 2 \le 2 2 > 2 >2 >2
( p , 2 p ] (p,2p] (p,2p] ≤ p \le p p > p >p >p

对于 l o g Y = l o g ( 2 × Y 2 ) = 1 + l o g Y 2 < 1 + Y 2 ≤ Y 2 + Y 2 = Y ⇒ l o g 2 Y < Y \begin{aligned} &对于logY=log(2\times \frac{Y}{2})=1+log\frac{Y}{2}<1+\frac{Y}{2}\le \frac{Y}{2}+\frac{Y}{2}=Y\Rightarrow log_2Y<Y \end{aligned} 对于logY=log(2×2Y)=1+log2Y<1+2Y2Y+2Y=Ylog2Y<Y

1.6 级数求和

∑ i = 0 ∞ 1 4 i \sum_{i=0}^{\infty}\limits \frac{1}{4^i} i=04i1
S = ∑ i = 0 ∞ 1 4 i = 1 + 1 4 + 1 4 2 + ⋯   , 4 S = ∑ i = 0 ∞ 4 4 i = 4 + 1 + 4 4 2 + ⋯ = 4 + 1 + 1 4 + ⋯ 3 S = 4 S − S = 4 ⇒ S = 4 3 \begin{aligned} &S=\sum_{i=0}^{\infty}\limits \frac{1}{4^i}=1+\frac{1}{4}+\frac{1}{4^2}+\cdots, 4S=\sum_{i=0}^{\infty}\limits \frac{4}{4^i}=4+1+\frac{4}{4^2}+\cdots=4+1+\frac{1}{4}+\cdots\\ &3S=4S-S=4\Rightarrow S=\frac{4}{3} \end{aligned} S=i=04i1=1+41+421+,4S=i=04i4=4+1+424+=4+1+41+3S=4SS=4S=34


∑ i = 0 ∞ i 4 i \sum_{i=0}^{\infty}\limits \frac{i}{4^i} i=04ii
S = ∑ i = 0 ∞ i 4 i = 1 4 + 2 4 2 + 3 4 3 + ⋯   , 4 S = ∑ i = 0 ∞ i 4 i = 1 + 2 4 + 3 4 2 + ⋯ 3 S = 1 + 1 4 + 1 4 2 + ⋯ = 4 3 ⇒ S = 4 9 \begin{aligned} &S=\sum_{i=0}^{\infty}\limits \frac{i}{4^i}=\frac{1}{4}+\frac{2}{4^2}+\frac{3}{4^3}+\cdots,4S=\sum_{i=0}^{\infty}\limits \frac{i}{4^i}=1+\frac{2}{4}+\frac{3}{4^2}+\cdots\\ &3S=1+\frac{1}{4}+\frac{1}{4^2}+\cdots=\frac{4}{3}\Rightarrow S=\frac{4}{9} \end{aligned} S=i=04ii=41+422+433+,4S=i=04ii=1+42+423+3S=1+41+421+=34S=94


∑ i = 0 ∞ i 2 4 i \sum_{i=0}^{\infty}\limits \frac{i^2}{4^i} i=04ii2
S = ∑ i = 0 ∞ i 2 4 i = 1 4 + 4 4 2 + 9 4 3 + ⋯   , 4 S = 1 + 1 + 9 4 2 + ⋯ 3 S = 1 + 3 4 + 5 4 2 + ⋯ + 2 i + 1 4 i + ⋯ = ∑ i = 0 ∞ 1 4 i + 2 ∑ i = 0 ∞ i 4 2 = 4 3 + 8 9 = 20 9 \begin{aligned} &S=\sum_{i=0}^{\infty}\limits \frac{i^2}{4^i}=\frac{1}{4}+\frac{4}{4^2}+\frac{9}{4^3}+\cdots,4S=1+1+\frac{9}{4^2}+\cdots\\ &3S=1+\frac{3}{4}+\frac{5}{4^2}+\cdots+\frac{2i+1}{4^i}+\cdots=\sum_{i=0}^{\infty}\limits\frac{1}{4^i}+2\sum_{i=0}^{\infty}\frac{i}{4^2}=\frac{4}{3}+\frac{8}{9}=\frac{20}{9} \end{aligned} S=i=04ii2=41+424+439+,4S=1+1+429+3S=1+43+425++4i2i+1+=i=04i1+2i=042i=34+98=920
d. 太复杂,思路就是上述解法不断迭代

1.7 估计 ∑ i = ⌊ N 2 ⌋ N 1 i \sum_{i=\lfloor\frac{N}{2}\rfloor}^N\limits\frac{1}{i} i=2NNi1

S = ∑ i = 1 N − ∑ 1 i = ⌊ N 2 ⌋ − 1 1 i = l n N − l n N 2 ≈ l n 2 S=\sum_{i=1}^N-\sum_1^{i=\lfloor\frac{N}{2}\rfloor-1}\limits\frac{1}{i}=lnN-ln\frac{N}{2}\approx ln2 S=i=1N1i=2N1i1=lnNln2Nln2

1.8 2 100 ( m o d 5 ) 2^{100}\left(mod\quad5\right) 2100(mod5)
2 1 ( m o d 5 ) = 2 , 2 2 ( m o d 5 ) = 4 , 2 3 ( m o d 5 ) = 3 , 2 4 ( m o d 5 ) = 1 , 2 5 ( m o d 5 ) = 2 2 100 ( m o d 5 ) = ( 2 4 ) 25 ( m o d 5 ) = 1 \begin{aligned} &2^1\left(mod\quad5\right)=2,\quad2^2\left(mod\quad5\right)=4, \quad 2^3\left(mod\quad5\right)=3,\quad2^4\left(mod\quad5\right)=1,\quad 2^5\left(mod\quad5\right)=2\\ &2^{100}\left(mod\quad 5\right)=\left(2^{4}\right)^{25}\left(mod\quad 5\right)=1 \end{aligned} 21(mod5)=2,22(mod5)=4,23(mod5)=3,24(mod5)=1,25(mod5)=22100(mod5)=(24)25(mod5)=1

1.9 令 F i F_i Fi 为斐波那契数,证明

F 0 = 1 , F 1 = 1 , F 2 = 2 , F m = F m − 1 + F m − 2 F_0=1,F_1=1,F_2=2,F_m=F_{m-1}+F_{m-2} F0=1,F1=1,F2=2,Fm=Fm1+Fm2

∑ i = 1 N − 2 F i = F N − 2 \sum_{i=1}^{N-2}\limits F_i=F_N-2 i=1N2Fi=FN2
归纳法:
N = 3 时, F 1 = 1 , F 3 − 2 = 1 = F 1 , 等式成立 假设 N = m 时,有 ∑ i = 1 m − 2 F i = F m − 2 当 N = m + 1 时, ∑ i = 1 m − 1 F i = F m − 1 + ∑ i = 1 m − 2 F i = F m − 1 + F m − 2 = F m + 1 − 2 , 等式成立 \begin{aligned} &N=3时,F_1=1,F_3-2=1=F_1,等式成立\\ &假设N=m时,有\sum_{i=1}^{m-2}\limits F_i=F_m-2\\ &当N=m+1时,\sum_{i=1}^{m-1}\limits F_i=F_{m-1}+\sum_{i=1}^{m-2}F_i=F_{m-1}+F_m-2=F_{m+1}-2,等式成立 \end{aligned} N=3时,F1=1F32=1=F1,等式成立假设N=m时,有i=1m2Fi=Fm2N=m+1时,i=1m1Fi=Fm1+i=1m2Fi=Fm1+Fm2=Fm+12,等式成立


F N < ϕ N , 其中 ϕ = 1 + 5 2 F_N<\phi^N,其中\phi=\frac{1+\sqrt{5}}{2} FN<ϕN,其中ϕ=21+5
ϕ 2 = 1 + 5 + 2 5 4 = 3 + 5 2 = 1 + ϕ ⇒ 1 = 1 ϕ + 1 ϕ 2 当 N = 1 时, F 1 = 1 , ϕ > F 1 假设,当 N < k , 有 F N < ϕ N 成立, 当 N = k + 1 时, F k + 1 = F k + F k − 1 < ϕ k + ϕ k − 1 = ϕ k + 1 ( 1 ϕ + 1 ϕ 2 ) = ϕ k + 1 等式成立 \begin{aligned} &\phi^2=\frac{1+5+2\sqrt{5}}{4}=\frac{3+\sqrt{5}}{2}=1+\phi\Rightarrow 1=\frac{1}{\phi}+\frac{1}{\phi^2}\\ &当N=1时,F_1=1,\phi>F_1\\ &假设,当N<k,有F_N<\phi^N成立,\\ &当N=k+1时,F_{k+1}=F_{k}+F_{k-1}<\phi^{k}+\phi^{k-1}=\phi^{k+1}\left(\frac{1}{\phi}+\frac{1}{\phi^2}\right)=\phi^{k+1}\\ &等式成立 \end{aligned} ϕ2=41+5+25 =23+5 =1+ϕ1=ϕ1+ϕ21N=1时,F1=1,ϕ>F1假设,当N<k,FN<ϕN成立,N=k+1时,Fk+1=Fk+Fk1<ϕk+ϕk1=ϕk+1(ϕ1+ϕ21)=ϕk+1等式成立
1.10 证明公式

∑ i = 1 N ( 2 i − 1 ) = N 2 \sum_{i=1}^{N}\limits(2i-1)=N^2 i=1N(2i1)=N2
∑ i = 1 N ( 2 i − 1 ) = 2 ∑ i = 1 N i − ∑ i = 1 N 1 = N ( N + 1 ) − N = N 2 \begin{aligned} &\sum_{i=1}^{N}\limits(2i-1)=2\sum_{i=1}^{N}\limits i-\sum_{i=1}^{N}\limits1=N(N+1)-N=N^2 \end{aligned} i=1N(2i1)=2i=1Nii=1N1=N(N+1)N=N2


∑ i = 1 N i 3 = ( ∑ i = 1 N i ) 2 \sum_{i=1}^{N}\limits i^3=\left(\sum_{i=1}^N\limits i\right)^2 i=1Ni3=(i=1Ni)2
归纳法证明:
N = 1 时,等式成立 假设 N = N 时,有等式 ∑ i = 1 N i 3 = ( ∑ i = 1 N i ) 2 成立 ∑ i = 1 N + 1 i 3 = ( N + 1 ) 3 + ∑ i = 1 N i 3 = ( N + 1 ) 3 + N 2 ( N + 1 ) 2 4 = [ ( N + 1 ) ( N + 2 ) 2 ] 2 = [ ∑ i = 1 N + 1 i ] 2 可知 N = N + 1 时,等式成立,故上述等式成立 \begin{aligned} &N=1时,等式成立\\ &假设N=N时,有等式\sum_{i=1}^{N}\limits i^3=\left(\sum_{i=1}^N\limits i\right)^2 成立\\ &\sum_{i=1}^{N+1}i^3=(N+1)^3+\sum_{i=1}^Ni^{3}=(N+1)^3+\frac{N^2(N+1)^2}{4}=\left[\frac{(N+1)(N+2)}{2}\right]^2=\left[\sum_{i=1}^{N+1}i\right]^2\\ &可知N=N+1时,等式成立,故上述等式成立 \end{aligned} N=1时,等式成立假设N=N时,有等式i=1Ni3=(i=1Ni)2成立i=1N+1i3=(N+1)3+i=1Ni3=(N+1)3+4N2(N+1)2=[2(N+1)(N+2)]2=[i=1N+1i]2可知N=N+1时,等式成立,故上述等式成立

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CRM系统和ERP管理系统二者有何区别?

我们常提到的企业管理系统有CRM系统和ERP管理系统&#xff0c;那么二者有何区别呢&#xff1f; 一、目的。 CRM客户关系管理系统主要的目的是已客户关系的建立、发展以及维护。ERP系统主要强调的业务目的是未来提高整个业务的生产力。 二、重点。 …

回顾|伍鸣博士出席《华人之光-世界瞩目的华人 Web3 项目》圆桌论坛

*本文节选自Foresight News《华人之光——世界瞩目的华人 Web3 项目》的圆桌论坛由 Foresight Ventures 与 Foresight News 联合主办的「FORESIGHT 2023 」年度峰会上&#xff0c;在《华人之光——世界瞩目的华人 Web3 项目》的圆桌论坛中&#xff0c;Conflux Co-Founder 伍鸣、…

LiveData数据倒灌?你真的用对了吗?源码解析

文章目录livedata/lifecycleandroidx-lifecycle基本使用uml-关键角色关系观察者模式关键源码分析livedata基本使用源码分析还是从observe开始livedata变化通知观察者viewmodel源码分析FAQlifecycle用到的设计模式lifecycle是如何监听aty生命周期的一些废弃和原因为什么废弃注解…

理解RESTful架构

越来越多的人开始意识到&#xff0c;网站即软件&#xff0c;而且是一种新型的软件。 这种"互联网软件"采用客户端/服务器模式&#xff0c;建立在分布式体系上&#xff0c;通过互联网通信&#xff0c;具有高延时&#xff08;high latency&#xff09;、高并发等特点。…

【华为机试真题详解JAVA实现】—配置文件恢复

目录 一、题目描述 二、解题代码 一、题目描述 有6条配置命令,它们执行的结果分别是: 命 令执 行resetreset whatreset boardboard faultboard addwhere to add<

Flash Linux to eMMC

实验目的&#xff1a;从eMMC启动Linux系统 Step1:确定eMMC被挂在哪个设备 哪个设备含有boot0分区和boot1分区&#xff0c;就是eMMC。实验中是位于mmcblk1上。 rootam64xx-evm:~# ls -l /dev/mmcblk* brw-rw---- 1 root disk 179, 0 Feb 27 13:25 /dev/mmcblk0 brw-rw---- …

实验三、图像复原

1. 实验目的 (1) 理解退化模型。 (2) 掌握常用的图像复原方法。 2. 实验内容 (1) 模拟噪声的行为和影响的能力是图像复原的核心。 示例 1 &#xff1a;使用 imnoise 添加噪声。 J imnoise(I,gaussian) 将方差为 0.01 的零均值高斯白噪声添加到灰度图像 I。 J imnoise(I,g…

简单的做一个学校毕业啊项目

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

2023年14界蓝桥杯省赛题解

2023年14界蓝桥杯省赛题解 蒟蒻笔者大二&#xff0c;第一次省赛。总结一下&#xff1a;“300块没了&#xff0c;退钱&#xff01;” A、日期统计 问题描述 小蓝现在有一个长度为 100 的数组&#xff0c;数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如…

【Spring专题】「技术原理」从源码角度去深入分析关于Spring的异常处理ExceptionHandler的实现原理

ExceptionHandler的作用 ExceptionHandler是Spring框架提供的一个注解&#xff0c;用于处理应用程序中的异常。当应用程序中发生异常时&#xff0c;ExceptionHandler将优先地拦截异常并处理它&#xff0c;然后将处理结果返回到前端。该注解可用于类级别和方法级别&#xff0c;…

ONNX转NCNN记录

【pytorch 转 onnx】pytorch-onnx 【onnx 转 ncnn】onnx-ncnn 【ncnn 加载模型】ncnn-load 一、python安装依赖项 pip install onnxruntime onnx opencv-python 二、创建模型并训练&#xff0c;加载模型参数并输出onnx #### pytorch 转 onnx import torch import torch.onnx…

小白学Pytorch系列- -torch.distributions API Distributions (1)

小白学Pytorch系列- -torch.distributions API Distributions (1) 分布包包含可参数化的概率分布和抽样函数。这允许构造用于优化的随机计算图和随机梯度估计器。这个包通常遵循TensorFlow分发包的设计。 不可能通过随机样本直接反向传播。但是&#xff0c;有两种主要方法可以…

【华为机试真题详解JAVA实现】—矩阵乘法

目录 一、题目描述 二、解题代码 一、题目描述 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的 矩阵的大小不超过100*100 输入描述: 第一行包含一个正整数x,代表第一个矩阵的行数 第二行…

APP测试弱网测试

1、为什么要做弱网测试 当前APP网络环境比较复杂&#xff0c;网络制式有2G、3G、4G网络&#xff0c;还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异&#xff0c;都会对用户使用app造成一定影响。 另外&#xff0c;当前app使用场景多变&#xff0c;如进地铁、上公交、…

【Linux】进程理解与学习Ⅳ-进程地址空间

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅&#x1f339;相关文章推荐&#xff1a;【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习Ⅰ-进程概念浅谈Linux下的shell--BASH【Linux】进程理解与学习…

跟姥爷深度学习1 浅用tensorflow做个天气预测

一、前言 最近人工智能、深度学习又火了&#xff0c;我感觉还是有必要研究一下。三年前浅学了一下原理没深入研究框架&#xff0c;三年后感觉各种框架都成熟了&#xff0c;现成的教程也丰富了&#xff0c;所以我继续边学边写。原教程链接&#xff1a; 第一章&#xff1a;tens…

Linux- 系统随你玩之--玩出花活的命令浏览器下

文章目录1、背景2、常规操作2.1、测试相关2.1.1、修改 HTML 请求标头2.1.2、 模拟不同浏览器发出2.1.3、重定向2.2、 下载相关操作2.2.1、 后台下载2.2.2、设置下载重试次数2.2.3、过滤指定格式下载2.2.4、限制总下载文件大小2.2.5、匿名FTP下载2.2.6、FTP认证下载2.2.7、利用代…

(链表专题) 725. 分隔链表 ——【Leetcode每日一题】

725. 分隔链表 给你一个头结点为 head 的单链表和一个整数 k &#xff0c;请你设计一个算法将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等&#xff1a;任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。 这 k 个部分应该按照在链表中出现的顺…

亚马逊 CodeWhisperer: 个人免费的类似GitHubCopilot能代码补全的 AI 编程助手

1、官网 AI Code Generator - Amazon CodeWhisperer - AWS 官方扩展安装教程 2、安装VSCode 下载安装VSCode 3、VSCode安装CodeWhisperer插件 安装VSCode插件 - AWS Toolkit主侧栏&#xff0c;点击AWS &#xff0c;展开CodeWhisperer&#xff0c;点击Start 在下拉菜单中点…

【100个 Unity实用技能】 | C# 中关于补位的写法 PadLeft,PadRight 函数

Unity 小科普 老规矩&#xff0c;先介绍一下 Unity 的科普小知识&#xff1a; Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…