重读微积分(一):极限
重读微积分(二):三个极限常数的来源
本系列所有代码都用R语言完成。
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]这个区间,的确看不出太多的区别
x = seq(-1,1,0.01) #生成等差数列
plot(x,x^2,type='l')
lines(x,x^3)
lines(x,x^4)
lines(x,x^5)
lines(x,x^6)
然而随着我们缩小坐标的尺度,区别就变得明显起来
> x = seq(-0.1,0.1,0.001)
> plot(x,x^2,type='l')
> lines(x,x^3)
这意味着越是逼近0,不同阶数的幂函数将渐行渐远,回顾极限的定义,对于
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 = seq(-0.01,0.01,0.001)
plot(x,x,ylab="x/sin(x)")
lines(x,sin(x),col='red')
由于实在靠的太近,所以用差的对数来表示一下
x = seq(-0.1,0.1,0.001)
err = log(abs(x-sin(x)),10)
plot(x,err,type='l')
可见这个收敛速度是很快的,当 x = 0.001 x=0.001 x=0.001时,二者之间的差就已经达到了 1 0 − 9 10^{-9} 10−9。