用R语言理解圆周率、自然对数和欧拉常数
文章目录
- 4 极限常数
- 圆周率π\piπ
- 自然对数e
- 欧拉常数γ\gammaγ
重读微积分(一):极限
4 极限常数
圆周率π\piπ
历史上很早就产生了极限思想,而割圆术就是这种思想的绝佳体现。
设正N边形边长为aaa,则周长为L=NaL=NaL=Na,而其边长与边数的关系可以表示为
a=2RsinπN→L=2NRsinπNa=2R\sin\frac{\pi}{N}\to L=2NR\sin\frac{\pi}{N} a=2RsinNπ→L=2NRsinNπ
圆可以理解为边数为无穷多的正多边形,即
L=limn→∞2nRsinπn=2πRL=\lim_{n\to\infty}2nR\sin\frac{\pi}{n}=2\pi R L=n→∞lim2nRsinnπ=2πR
由于古人不知道圆周率,所以需要通过不断地测量多边形的边长和周长来逼近,则对于正多边形而言
Π=L2R=NsinπN\Pi=\frac{L}{2R}=N\sin\frac{\pi}{N}Π=2RL=NsinNπ
N = c(3:100) Pi = N*sin(pi/N) plot(N,Pi,type='l',xlab='N',ylab='Pi')由于到了后面,误差变得越来越小,所以用对数来看一下误差的变化
N = c(3:10000) err =log(pi-N*sin(pi/N),10) plot(N,err,type='l',xlab='N',ylab='err')可见割到了正10000边形,也只能得到10−710^{-7}10−7的精度,通过计算可以得到正10000边形算出的圆周率约为3.14159260,所以我们至今也无法知道祖冲之他老人家到底是怎么得到的。
options(digits=15) 10000*sin(pi/10000) [1] 3.14159260191267圆周率的这种定义其实也提供了一个重要极限,即
π=limn→∞NsinπN→limx→0sinxx=1\pi=\lim_{n\to\infty}N\sin\frac{\pi}{N}\to\lim_{x\to0}\frac{\sin x}{x}=1 π=n→∞limNsinNπ→x→0limxsinx=1
自然对数e
很多人喜欢把自然对数和复利计算联系在一起。
假设某银行的年利率为xxx,即存入W元,一年之后本息合计W(1+x)W(1+x)W(1+x);如果一年之后将本息重新存入银行,则再过一年,本息合计为W(1+x)2W(1+x)^2W(1+x)2,重复操作nnn年之后,则其本息之和为W(1+x)nW(1+x)^nW(1+x)n。
假设这家银行可以按月算利率,则每月利率为x12\frac{x}{12}12x,如果按月存取,则每年本息之和为W(1+x12)12W(1+\frac{x}{12})^{12}W(1+12x)12。
假设这家很行可以按照任意时间算利率,若存钱时间为1n\frac{1}{n}n1年,则利率为xn\frac{x}{n}nx,相应地一年的本息之和为W(1+xn)nW(1+\frac{x}{n})^nW(1+nx)n。
那么问题来了,是不是随着nnn逐渐增大,一年的收获会越来越多呢?
为了计算方便,假设x=1x=1x=1,即正常WWW存一年,一年之后本息翻倍为2W。
结果发现
最终这个值趋近于一个常数,这个常数就定义为eee,看来一年最多翻e倍,这个方法没办法发财了。但至少明白了一个著名的极限
e=limn→∞(1+1n)n=2.7182818...e=\lim_{n\to\infty}(1+\frac{1}{n})^n=2.7182818... e=n→∞lim(1+n1)n=2.7182818...
当然,银行不太可能有翻倍这么爽的年利率,设为xxx的话,则有
ex=(limn→∞(1+1n)n)x=limn→∞(1+1n)nx=limm→∞(1+xm)me^x=(\lim_{n\to\infty}(1+\frac{1}{n})^n)^x=\lim_{n\to\infty}(1+\frac{1}{n})^{nx}=\lim_{m\to\infty}(1+\frac{x}{m})^m ex=(n→∞lim(1+n1)n)x=n→∞lim(1+n1)nx=m→∞lim(1+mx)m
很合理。
欧拉常数γ\gammaγ
对eee两侧以eee为底取对数,可得
1=limn→∞nln(1+1n)=limn→∞nln(n+1n)=limn→∞ln(n+1)−lnn1n1=\lim_{n\to\infty}n\ln(1+\frac{1}{n})=\lim_{n\to\infty}n\ln(\frac{n+1}{n})=\lim_{n\to\infty}\frac{\ln(n+1)-\ln n}{\frac{1}{n}} 1=n→∞limnln(1+n1)=n→∞limnln(nn+1)=n→∞limn1ln(n+1)−lnn
根据这个式子,我们可以猜测
γ=∑n=1∞1n−∑n=1∞[ln(n+1)−lnn]=limN→∞∑n=1N1n−lnN\gamma=\sum_{n=1}^\infty\frac{1}{n}-\sum_{n=1}^\infty[\ln(n+1)-\ln n]=\lim_{N\to\infty}\sum_{n=1}^N\frac{1}{n}-\ln N γ=n=1∑∞n1−n=1∑∞[ln(n+1)−lnn]=N→∞limn=1∑Nn1−lnN
是一个常数:
N = c(1:10000) for(i in c(1:0000)){H[i]=sum(1/N[0:i]) } plot(N,gamma,type='l',xlab='N',ylab='gamma') gamma[10000] [1] 0.577265664068198我们猜对了,这个常数即欧拉常数。
其证明过程也不复杂
lnN=∫1N1xdx=∫1N1x+1⌊x⌋−1⌊x⌋dx=∑n=1N1n+∫1N1x−1⌊x⌋dx\begin{aligned} \ln N&=\int^N_1\frac{1}{x}\text dx=\int^N_1\frac{1}{x}+\frac{1}{\lfloor x\rfloor}-\frac{1}{\lfloor x\rfloor}\text dx\\ &=\sum_{n=1}^N\frac{1}{n}+\int^N_1\frac{1}{x}-\frac{1}{\lfloor x\rfloor}\text dx \end{aligned} lnN=∫1Nx1dx=∫1Nx1+⌊x⌋1−⌊x⌋1dx=n=1∑Nn1+∫1Nx1−⌊x⌋1dx
令−γ=∫1N1x−1⌊x⌋dx-\gamma=\int^N_1\frac{1}{x}-\frac{1}{\lfloor x\rfloor}\text dx−γ=∫1Nx1−⌊x⌋1dx,则
γ=∫1Nx−⌊x⌋x⌊x⌋dx<∫1N1⌊x⌋2dx\gamma=\int^N_1\frac{x-\lfloor x\rfloor}{x\lfloor x\rfloor}\text dx<\int^N_1\frac{1}{\lfloor x\rfloor^2}\text dx γ=∫1Nx⌊x⌋x−⌊x⌋dx<∫1N⌊x⌋21dx
则γ\gammaγ收敛。
总结
以上是生活随笔为你收集整理的用R语言理解圆周率、自然对数和欧拉常数的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 如何找到最新的RFC文档
- 下一篇: 动画多个元素过渡 多个组件过渡 以及过渡