用Python理解极限,看了这个就不会挂高数了
文章目录
- 1 状态变化
- 2 极限语言
- 3 序列与函数
- 4 极限常数
- 圆周率 π \pi π
- 自然对数e
- 欧拉常数 γ \gamma γ
- 5 洛必达法则
1 状态变化
若将数学整体划分为三类,则可概括为代数、几何与分析。对于前两者,我们很早就建立了直观的概念,对于空间结构及其性质的研究,即为几何;以数为核心的研究领域,即为代数。
而分析
则具备更多的非数学的内涵,误导性很强,初学者若望文生义,则更倾向于将“分析”理解为一门数学技巧,而非数学领域。
初学数学分析时,是将其等同为微积分的,而微积分的理论基础建立在极限之上。所以,极限可作为分析学的根基,为此,需要去理解极限的本质,而极限本身则是一个动态的过程,例如下面这个重要极限
lim x → 0 s i n ( x ) x = 1 \lim_{x\to 0}\frac{sin(x)}{x}=1 x→0limxsin(x)=1
对于上式,表示当x趋于0的时候,这个分式等于1,需要注意,这里是等于号,而非约等。当我们以初等的观念去理解这个等式的时候,会自动附加一些特殊的约定:
- x → 0 x\to0 x→0即 x = 0 x=0 x=0
- 0是有阶数的,对于 0 m 0 n \frac{0^m}{0^n} 0n0m,当 m > n m>n m>n时,值为0, m < n m<n m<n时,值为无穷大, m = n m=n m=n时,值为常数。
- sin 0 \sin0 sin0和 0 0 0具有相同的阶数,且二者相等。
通过这三个约定,可以很方便地去计算一切涉及到 sin 0 \sin0 sin0和 0 0 0的比值问题。但这种理解并不自然,随着接触的极限表达式越来越多,需要更多的约定来促使极限理论趋于完整。
如以一种动态的眼光去审视这个重要极限,可能理解会发生变化。考虑到画图的方便,对上式稍作改动,
lim x → ∞ x sin 1 x = 1 \lim_{x\to\infty}x\sin\frac{1}{x}=1 x→∞limxsinx1=1
则令
y = x sin 1 x y=x\sin\frac1 x y=xsinx1
则随着 x x x不断变大, y y y将不断地趋近于1,如图所示
其python代码为
#导入数学计算和绘图包,后面所有代码都需要导入,但不在
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,100) #定义x为1到100的数组,即1,2...99
y = x*np.sin(1/x)
plt.plot(x,y) #绘制y对x的变化关系
plt.show() #将图像显示在屏幕上
这个趋势表明,极限是一种动态过程,相应地分析是建立在状态变化上的一种动态的数学。
一旦建立了这种动态的思维,就会发现原本安定本分的数学世界也发生了微妙的变化,例如,我们又将如何理解1
这个整数。
例如无限循环小数0.999...=1
这个反直觉的等式是否严格。在初等的观点看来,可以很容易得到 10 × 0.999... = 9.999... → ( 10 − 1 ) ∗ 0.999... = 9 → 0.999... = 1 10 \times 0.999...=9.999...\to (10-1)*0.999...=9\to0.999...=1 10×0.999...=9.999...→(10−1)∗0.999...=9→0.999...=1。
进而敏锐地发现,若用一种不厌其烦的方式去求解分式 1 1 \frac{1}{1} 11,会更加自然地得到0.999...
但无论如何,0.999...=1
是反直觉的,反来自于初等数学的直觉。换句话说,初等数学的直觉存在矛盾,我们需要一个更加严格的有关极限的定义和表示,尤其需要建立一种可以称之为相等的映射关系。
2 极限语言
初学数学分析,很多人都对 ε − N \varepsilon-N ε−N深恶痛绝,更妙的是,不理解这种表达方式,对做题似乎影响不大。大部分人通过加深对上面的那三个约定(以及更多约定)的记忆来完成解题,从而避免了加深对数学对象的理解。
但 ε − N \varepsilon-N ε−N语言并不难理解,回想初次接触无穷这个概念的时候,最常用到的案例就是论证自然数的个数,即无论你举出一个多么大的自然数,我都能举出一个更大的数,所以自然数是无穷的。
相应地,现有一数列 { x n } \{x_n\} {xn},随着n越来越大,若 x n x_n xn也趋于无穷大,则可用相同的方式来表述:无论你举出一个多么大的数 E E E,我都可以找到一个 n n n,使得 x n > E x_n>E xn>E。但和自然数不同,这个数列未必单调,也未必发散,所以需要另加上一句对于所有m>n
,有 x m > E x_m>E xm>E。这样就能确保我们的这个数列 x n > E x_n>E xn>E是发散的了。
至此,无穷极限已经获得了一个规范的定义:假定对于任意大的 E > 0 E>0 E>0,都存在正整数 N N N,使得一切 n > N n>N n>N,不等式 ∣ x n ∣ > E |x_n|>E ∣xn∣>E成立,则称序列 x n {x_n} xn的极限是 ∞ \infty ∞,记作 lim n → ∞ x n = ∞ \lim_{n\to\infty}x_n=\infty limn→∞xn=∞。
有穷极限亦然,对于数列 { x n } \{x_n\} {xn},如果当 n → ∞ n\to\infty n→∞时, x n = a x_n=a xn=a,则对于所有更大的 n n n,都使得 x n x_n xn更接近 a a a。 ε \varepsilon ε就是对这种更接近
的一种描述,由此而得到了对有穷极限的定义:
假定对于任意小的 ε \varepsilon ε,都存在正整数 N N N,使得对于一切的 n > N n>N n>N,不等式
∣ x n − a ∣ < ε |x_n-a|<\varepsilon ∣xn−a∣<ε
则称序列 { x n } \{x_n\} {xn}以 a a a为极限,或者收敛于 a a a,记为 lim n → ∞ x n = a \lim_{n\to\infty}x_n=a limn→∞xn=a。
在这种极限观点下,回头再看上文所列举的两个式子,可能会显得更加严谨。首先,对于重要极限 lim x → ∞ x s i n ( 1 x ) = 1 \lim_{x\to\infty}xsin(\frac{1}{x})=1 limx→∞xsin(x1)=1,假设 ε = 0.01 \varepsilon=0.01 ε=0.01,那么选取 N = 10 N=10 N=10,
x = np.arange(10,100)
y = 1-x*np.sin(1/x)
plt.plot(x,y)
plt.show()
其图像为
可见,当 x > N x>N x>N时, ∣ x sin ( 1 x ) − 1 ∣ < ε |x\sin(\frac{1}{x})-1|<\varepsilon ∣xsin(x1)−1∣<ε。由于 ε \varepsilon ε可任意选取,故可以继续减小 ε \varepsilon ε的值,但无论 ε \varepsilon ε小到什么程度,我们都可以找到一个 N N N,使之满足极限的定义式。
对于0.999...
,我们可以构造一个数列 y = 1 − 0. 1 x y=1-0.1^x y=1−0.1x,当 x → ∞ x\to\infty x→∞时, y → 0 y\to0 y→0,也就是说,对于任意小的一个 ε \varepsilon ε,我们总能找到一个 N N N,使得 x > n x>n x>n时, 0. 1 x < ε 0.1^x<\varepsilon 0.1x<ε。
3 序列与函数
数列和函数都是一种映射关系,区别在于,序列是定义域为正整数的特殊函数。而微积分中主要研究的名为函数的映射,都定义在实数域上。从而在函数的定义域中,随便抽选出一个区间 [ a , b ] [a,b] [a,b],只要 a ≠ b a\not =b a=b,则区间中的元素个数就是无穷多个。
极限在 ε − N \varepsilon-N ε−N意义上重新定义了相等,从而意味着每一个实数都包含了无穷多种初等的表示,即 1 = 0.999...0 = 0.999...1 = 0.999... n , n 1=0.999...0=0.999...1=0.999...n,n 1=0.999...0=0.999...1=0.999...n,n为任意长度的数串,中间的无穷多位,导致末位信息在变得毫无意义,或者更确切地说,根本不存在最后一位。
如果异想天开地希望建立整数与实数的对应关系,例如将整数环映射到区间 [ − 1 , 1 ] [-1,1] [−1,1]内,这个区间也将变得十分密集,对于区间 [ a , b ] [a,b] [a,b],也同样只要 a ≠ b a\not =b a=b,则区间内存在无穷多个元素。
在实数区间 [ − 1 , 1 ] [-1,1] [−1,1]里,当 x → 0 x\to\ 0 x→ 0时, y ( x ) = y 0 y(x)=y_0 y(x)=y0,则对任意小的 ε > 0 \varepsilon>0 ε>0,都存在一个实数 δ \delta δ,使得区间 [ − δ , δ ] [-\delta,\delta] [−δ,δ]内的 x x x满足 ∣ y 0 − y ( x ) ∣ < ε |y_0-y(x)|<\varepsilon ∣y0−y(x)∣<ε。由于整数环和 [ − 1 , 1 ] [-1,1] [−1,1]区间存在某种映射,所以对于任意小的一个 δ \delta δ,都可以在整数映射的区间 [ − 1 , 1 ] [-1,1] [−1,1]中找到无穷多个 δ ′ < δ \delta'<\delta δ′<δ,从而在区间 [ − δ ′ , δ ′ ] [-\delta',\delta'] [−δ′,δ′]内存在同样的极限。
当然,通过整数除以正无穷得到 [ − 1 , 1 ] [-1,1] [−1,1]的一个子区间,似乎在技术上是不可实现的,因为目前来说 ∞ \infty ∞是没法做分母的,表达式 n ∞ \frac{n}{\infty} ∞n在 n ≠ ∞ n\not= \infty n=∞时,其值为0,否则为不定式。
但是,如以一种更动态的眼光去看待整数映射的 [ − 1 , 1 ] [-1,1] [−1,1]。对于任意小的一个 δ \delta δ,都可以在整数环中找到一个 N N N,从而在序列 − 1 , − ( N − 1 ) N , . . . − 1 N , 0 , 1 N . . . 1 -1,\frac{-(N-1)}{N},...\frac{-1}{N},0,\frac{1}{N}...1 −1,N−(N−1),...N−1,0,N1...1中找到 δ ′ < δ \delta'<\delta δ′<δ,其中 δ ′ = N δ ′ N \delta'=\frac{N_{\delta'}}{N} δ′=NNδ′,使得区间整数映射区间的子区间 [ − δ ′ , δ ′ ] [-\delta',\delta'] [−δ′,δ′]内,满足 ∣ y 0 − y ( x ) ∣ < ε |y_0-y(x)|<\varepsilon ∣y0−y(x)∣<ε。
如果跳出数学抽象,那么这里的 δ \delta δ和 δ ′ \delta' δ′都是具备现实意义的。对于没怎么接触过编程的人来说,第一眼看到我们上面所画出的图,必然会想当然地认为,这张图是连续的。然而,这只不过是不到100个点的一种拟合。即便真的用无穷多个点画出一条曲线,但屏幕也只能像素的形式进行显示,这个曲线仍旧是有分立的点连接而成的,只不过这些个分立的点足够稠密,以至于可以骗过我们的眼睛。
所以,可以认为 δ \delta δ是人眼的一种分辨极限,当两个点的距离小于 δ \delta δ时,便无法区分这两个点是否分离。那么,当我们画图的时候,只要确保两个点的距离 δ ′ < δ \delta'<\delta δ′<δ,就会自然地在我们的眼中形成连续的图像。也就是说,如果我们的区间长度为 L L L,那么只要选取 L δ ′ \frac{L}{\delta'} δ′L个点来画图,我们的视觉就会欺骗我们。
4 极限常数
圆周率 π \pi π
历史上很早就产生了极限思想,而割圆术就是这种思想的绝佳体现。
设正N边形边长为 a a a,则周长为 L = N a L=Na L=Na,而其边长与边数的关系可以表示为
a = 2 R sin π N → L = 2 N R sin π N a=2R\sin\frac{\pi}{N}\to L=2NR\sin\frac{\pi}{N} a=2RsinNπ→L=2NRsinNπ
圆可以理解为边数为无穷多的正多边形,即
L = lim n → ∞ 2 n R sin π n = 2 π R L=\lim_{n\to\infty}2nR\sin\frac{\pi}{n}=2\pi R L=n→∞lim2nRsinnπ=2πR
由于古人不知道圆周率,所以需要通过不断地测量多边形的边长和周长来逼近,则对于正多边形而言
Π = L 2 R = N sin π N \Pi=\frac{L}{2R}=N\sin\frac{\pi}{N} Π=2RL=NsinNπ
N = np.arange(3,100)
Pi = N*np.sin(np.pi/N)
plt.plot(N,Pi)
plt.show()
由于到了后面,误差变得越来越小,所以用对数来看一下误差的变化
N = np.arange(3,1e4)
err = np.log10(np.pi-N*np.sin(np.pi/N))
plt.plot(N,err)
plt.show()
可见割到了正10000边形,也只能得到 1 0 − 7 10^{-7} 10−7的精度,通过计算可以得到正10000边形算出的圆周率约为3.14159260
,所以我们至今也无法知道祖冲之他老人家到底是怎么得到的。
>>> 10000*np.sin(np.pi/10000)
3.141592601912665
圆周率的这种定义其实也提供了一个重要极限,即
π = lim N → ∞ N sin π N → lim x → 0 sin x x = 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
很多人喜欢把自然对数和复利计算联系在一起。
假设某银行的年利率为 x x x,即存入W元,一年之后本息合计 W ( 1 + x ) W(1+x) W(1+x);如果一年之后将本息重新存入银行,则再过一年,本息合计为 W ( 1 + x ) 2 W(1+x)^2 W(1+x)2,重复操作 n n n年之后,则其本息之和为 W ( 1 + x ) n W(1+x)^n W(1+x)n。
假设这家银行可以按月算利率,则每月利率为 x 12 \frac{x}{12} 12x,如果按月存取,则每年本息之和为 W ( 1 + x 12 ) 12 W(1+\frac{x}{12})^{12} W(1+12x)12。
假设这家很行可以按照任意时间算利率,若每次存钱 1 n \frac{1}{n} n1年,则利率为 x n \frac{x}{n} nx,相应一年的本息之和为 W ( 1 + x n ) n W(1+\frac{x}{n})^n W(1+nx)n。
问题来了,是不是随着 n n n逐渐增大,一年的收获会越来越多呢?
为了计算方便,假设 x = 1 x=1 x=1,即正常 W W W存一年,一年之后本息翻倍为2W。
结果发现
x = np.arange(1,100)
E = (1+1/x)**x
plt.plot(x,E)
plt.show()
最终这个值趋近于一个常数,这个常数就定义为 e e e,看来一年最多翻e倍,这个方法没办法发财了。但至少明白了一个著名的极限
e = lim n → ∞ ( 1 + 1 n ) n = 2.7182818... e=\lim_{n\to\infty}(1+\frac{1}{n})^n=2.7182818... e=n→∞lim(1+n1)n=2.7182818...
当然,银行不太可能有翻倍这么爽的年利率,设为 x x x的话,则有
e x = ( lim n → ∞ ( 1 + 1 n ) n ) x = lim n → ∞ ( 1 + 1 n ) n x = lim m → ∞ ( 1 + x m ) m e^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 γ
对 e e e两侧以 e e e为底取对数,可得
1 = lim n → ∞ n ln ( 1 + 1 n ) = lim n → ∞ n ln ( n + 1 n ) = lim n → ∞ ln ( n + 1 ) − ln n 1 n 1=\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 ∞ 1 n − ∑ n = 1 ∞ [ ln ( n + 1 ) − ln n ] = lim N → ∞ ∑ n = 1 N 1 n − ln N \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
是一个常数:
x = np.arange(1,10000)
# np.cumsum相当于求离散的“积分”
G = np.cumsum(1/x)-np.log(x)
plt.plot(x[:100],G[:100])
plt.show()
我们猜对了,这个常数即欧拉常数。
其证明过程也不复杂
ln N = ∫ 1 N 1 x d x = ∫ 1 N 1 x + 1 ⌊ x ⌋ − 1 ⌊ x ⌋ d x = ∑ n = 1 N 1 n + ∫ 1 N 1 x − 1 ⌊ x ⌋ d x \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
令 − γ = ∫ 1 N 1 x − 1 ⌊ x ⌋ d x -\gamma=\int^N_1\frac{1}{x}-\frac{1}{\lfloor x\rfloor}\text dx −γ=∫1Nx1−⌊x⌋1dx,则
γ = ∫ 1 N x − ⌊ x ⌋ x ⌊ x ⌋ d x < ∫ 1 N 1 ⌊ x ⌋ 2 d x \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 γ收敛。
5 洛必达法则
令 N N N为常数,则常规的极限运算大致有以下几种
∞ ± N = ∞ ∞ ⋇ N = ∞ ( N ≠ 0 ) N ∔ ∞ = ∞ N − ∞ = − ∞ N / ∞ = 0 ± N / 0 = ± ∞ N ∞ = ∞ ( N ≠ 1 ) ∞ N = ∞ ( N ≠ 0 ) \begin{matrix} &\infty\pm N=\infty\quad&\infty\divideontimes N=\infty(N\not =0)& N\dotplus\infty=\infty\\ &N-\infty=-\infty& N/\infty=0& \pm N/0=\pm\infty\\ &N^\infty=\infty(N\not=1)\quad&\infty^N=\infty(N\not=0) \end{matrix} ∞±N=∞N−∞=−∞N∞=∞(N=1)∞⋇N=∞(N=0)N/∞=0∞N=∞(N=0)N∔∞=∞±N/0=±∞
而常规情况之外的,就要通过洛必达法则来处理
0 0 , ∞ ∞ , 0 ⋅ ∞ , ∞ − ∞ , 0 0 , ∞ 0 , 1 ∞ \frac{0}{0}, \frac{\infty}{\infty}, 0\cdot\infty,\infty-\infty,0^0,\infty^0,1^\infty 00,∞∞,0⋅∞,∞−∞,00,∞0,1∞
对于 0 0 , ∞ ∞ \frac{0}{0}, \frac{\infty}{\infty} 00,∞∞而言,洛必达法则在形式上可以表示为
lim x → a f ( x ) g ( x ) = lim x → a f ′ ( x ) g ′ ( x ) \lim_{x\to a}\frac{f(x)}{g(x)}=\lim_{x\to a}\frac{f'(x)}{g'(x)} x→alimg(x)f(x)=x→alimg′(x)f′(x)
理解洛必达法则可从幂函数入手,假设 f ( x ) = x n f(x)=x^n f(x)=xn, g ( x ) = x m g(x)=x^m g(x)=xm,则 f ( x ) g ( x ) = x n − m \frac{f(x)}{g(x)}=x^{n-m} g(x)f(x)=xn−m。当 x → 0 x\to0 x→0时,若 n − m > 0 n-m>0 n−m>0,则极限为无穷大,否则极限为0。
所以,尽管二者都为0,但0和0也有不同。问题是这种不同是否明显?如果定义域在 [ − 1 , 1 ] [-1,1] [−1,1]这个区间,则除了 y = x y=x y=x之外,其他几个函数在0附近的确区别不大
x = np.arange(-1.5,1.5,0.01)
lines = [plt.plot(x,x**n,label=f"n={n}",lw=0.5) for n in range(1,6)]
plt.legend()
plt.xlim(-1.5,1.5)
plt.ylim(-1.5,1.5)
plt.show()
然而随着坐标尺度的缩小,区别变得明显起来
x = np.arange(-0.1,0.1,1e-3)
lines = [plt.plot(x,x**n,label=f"n={n}",lw=0.5) for n in range(2,6)]
plt.legend()
plt.ylim(-1e-3,1e-3)
plt.show()
这意味着越是逼近0,不同阶数的幂函数将渐行渐远,如果看一下动画图或许会更好
from matplotlib import animationx = np.arange(-1e-2,1e-2,1e-5)fig = plt.figure(figsize=(9,4))
ax = fig.add_subplot(1,1,1)
lines = [ax.plot(x,x**n,label=f"n={n}",lw=0.5,scalex=True, scaley=True)[0] for n in range(2,10)]
plt.legend()Y = 1e-3
plt.ylim(-Y,Y)
def animate(i):d = Y*np.exp(-i/10)plt.ylim(-d,d)return linesani = FuncAnimation(fig, animate, interval=100, frames=300)
ani.save("py1-9.gif")plt.show()
回顾极限的定义,对于
lim x → 0 x 3 x 2 = 0 \lim_{x\to0}\frac{x^3}{x^2}=0 x→0limx2x3=0
意味着对于任意小的 ε \varepsilon ε,均能找到一个 X X X,当 x ∈ [ 0 , X ] x\in[0,X] x∈[0,X]时,有 x 3 x 2 < ε \frac{x^3}{x^2}<\varepsilon x2x3<ε,这是显然的。
而我们之所以觉得“显然”,是因为我们接受了大量的指数运算的训练,而指数之间的运算又基于一条更简单的规则 x n x = x n − 1 \frac{x^n}{x}=x^{n-1} xxn=xn−1。或许其真正的运算过程为
x 3 x 2 = x 3 x x 2 x = x 2 x = x \frac{x^3}{x^2}=\frac{\frac{x^3}{x}}{\frac{x^2}{x}}=\frac{x^2}{x}=x x2x3=xx2xx3=xx2=x
受到这种运算形式的启发,对于一个相对复杂的表达式,或许可以对上式进行一点更改
lim x → 0 f ( x ) g ( x ) = lim x → 0 f ( x ) − 0 x g ( x ) − 0 x = 0 \lim_{x\to0}\frac{f(x)}{g(x)}= \lim_{x\to0}\frac{\frac{f(x)-0}{x}}{\frac{g(x)-0}{x} }=0 x→0limg(x)f(x)=x→0limxg(x)−0xf(x)−0=0
这个时候自然而然地出现了一个很熟悉的表达式 lim x → 0 f ( x ) − 0 x \lim_{x\to0}\frac{f(x)-0}{x} limx→0xf(x)−0,正是
f ′ ( 0 ) = lim x → 0 f ( 0 + x ) − f ( 0 ) x f'(0)=\lim_{x\to0}\frac{f(0+x)-f(0)}{x} f′(0)=x→0limxf(0+x)−f(0)
所以,对于 f ( 0 ) = 0 f(0)=0 f(0)=0和 g ( 0 ) = 0 g(0)=0 g(0)=0的情况,可以存在
lim x → 0 f ( x ) g ( x ) = f ′ ( 0 ) g ′ ( 0 ) \lim_{x\to0}\frac{f(x)}{g(x)}=\frac{f'(0)}{g'(0)} x→0limg(x)f(x)=g′(0)f′(0)
若 f ′ ( 0 ) f'(0) f′(0)和 g ′ ( 0 ) g'(0) g′(0)仍然同时为0,则继续洛,一直洛到祖坟上去。回顾一开始引入的重要极限,洛必达法则很好地验证了其正确性。
lim x → 0 sin ( x ) x = lim x → 0 sin ′ x x ′ = cos 0 1 = 1 \lim_{x\to 0}\frac{\sin(x)}{x}=\lim_{x\to 0}\frac{\sin'x}{x'}=\frac{\cos0}{1}=1 x→0limxsin(x)=x→0limx′sin′x=1cos0=1
可以画图验证一下二者在趋近于0时的特性
x = np.arange(-0.01,0.01,0.001)
plt.plot(x,x,label="x")
plt.plot(x,np.sin(x),label="sin x")
plt.legend()
plt.show()
由于实在靠的太近,根本看不出差别,所以用差的对数来表示一下
x = np.arange(0,0.01,1e-4)
ax = plt.subplot()
ax.plot(x,x-np.sin(x))
ax.set_yscale('log')
plt.show()
可见这个收敛速度是很快的,当 x = 0.002 x=0.002 x=0.002时,二者之间的差就已经达到了 1 0 − 9 10^{-9} 10−9。
用Python理解极限,看了这个就不会挂高数了相关推荐
- 极限中0除以常数_干货分享高数 | 极限的计算
面对近在眼前的高数考试 你是否感到了一丝紧张 别怕 接下来的12天 我们一起回顾<高等数学一>(I) 让小牛助你一臂之力 高数专题安排表 话不多说,接下来,请大家拿出纸笔.我们即将进入高数 ...
- NLP实战:利用Python理解、分析和生成文本 | 赠书
导读:本文内容参考自<自然语言处理实战:利用Python理解.分析和生成文本>一书,由Hobson Lane等人所著. 本书是介绍自然语言处理(NLP)和深度学习的实战书.NLP已成为深度 ...
- 0基础学python看什么书-0基础学Python入门书籍应该看什么?
0基础学Python入门书籍应该看什么?Python 对不少人来说是谜一样的东西不知道如何下手.从何处下手,找了很多资源几个月过去了学习陷入换乱,没没能入门Python开发.出现这种情况大多是因为没有 ...
- python基础教程书籍推荐-初学者python入门必看书籍推荐(上)
随着最近Python的热度上涨,学习的人数也在增多,也因为Python这门语言的简短.易学.语言优美的优点,吸引了很多人来学习它.初学者想要入门,就必须先通过阅读,学习大量的理论知识对Python有一 ...
- python 编程该看那些书籍_我用python5年后,我发现学python编程必看的三本书!
非常喜欢python 我非常喜欢python,在前几年里,它一直是我热衷使用并不断研究的语言,迄今为止,python都非常友好并且易于学习! 它几乎可以做任何事,从简单的脚本创建.web,到数据可视化 ...
- python可视化案例书籍推荐_我用python5年后,我发现学python编程必看的三本书!...
非常喜欢python 我非常喜欢python,在前几年里,它一直是我热衷使用并不断研究的语言,迄今为止,python都非常友好并且易于学习! 它几乎可以做任何事,从简单的脚本创建.web,到数据可视化 ...
- python怎么算二元一次方程_用python解决高数所有计算题--sympy求解极限、积分、微分、二元一次方程等...
sympy是什么?Sympy是一个数学符号库(sym代表了symbol,符号),包括了积分,微分方程等各种数学运算方法,为python提供了强大的数学运算支持.对于图像来说,虽然都是做离散的计算,操作 ...
- python 编程该看那些书籍_python编程入门书籍-零基础学习Python编程,这8本书必看!...
作为一名程序员,你肯定知道Python语言,从2017年开始Python的热度就一路飙升,已经成为大量开发者推荐入门的编程语言和第二编程语言,而且Python还是人工智能的主要编程语言,受到大众的追捧 ...
- python泰勒公式法求正弦函数_看完这篇让你高数不挂科之——泰勒公式
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的文章我们来讨论大名鼎鼎的泰勒公式,泰勒公式真的非常有名,我相信上过高数课的一定都记得它的大名.即使你翘掉了所有的课,也一定会在考前重点 ...
最新文章
- 记一次工作中的小BUG
- svm最大间隔函数及目标函数推导
- thinkphp 第二节
- | dp-the Treasure Hunter
- 重磅福利!10本豆瓣平均8.0分技术书免费看!速来!
- Spring Boot单元测试入门实战之关于JUnit
- 台式计算机如何封存,一种计算机用声卡封存装置的制作方法
- 数据中心机房建设标准规范
- 【javaEE】——多线程进阶(锁策略:面试相关考点)04
- 小程序进阶-用户消息通知
- java桌面应用开发利器JavaFx
- 京东回归港股不是上岸,刘强东还有更大的杀招!
- 三维空间——点线面关系
- MyBatis面试题及答案
- 修改GitHub Pages个人主页的域名
- java系统随机产生10道加法运算,用户进行答题,答对一道题加10分,答错不加分
- 第四章 需求弹性和供给弹性分析
- 华为信息机与c3po包的冲突
- 适用于Windows 10的所有Microsoft PowerToys的全部解释
- 锐捷校园网登录---Linux