你知道计算器如何求解三角函数么?
计算器又是如何求解1.1的0.1次方的呢?
如何把圆周率π精确到任意小数点位?
我们今天就以这三个经典的小问题展开,一起探究微积分的奥妙。
问题1:求 sin1度
我是读初中时接触三角函数的,当时老师告诉我们sin30度等于多少,sin45度等于多少,我记得当时有人问老师sin1 度怎么算。老师回答说sin1度是不会考你们的。我当时就在想,不考不代表问题不存在,sin1度该怎样计算呢?有人说可以用计算器算,但我们可以进一步问,计算器是如何计算sin1度的呢? 我当时想到笨方法,也就是方程解发。
方程解法
设sin1度为x, cos1度可以用x表示出来,sin2度、cos2度也可以用x来表示,更进一步,sin30度是可以用x来表示的,最终解方程就可以解出x了,也就可以算出sin1度了。当然表达式很复杂,方程比较难解。
直到大学学习了微积分,才得到了满意的答案。
微积分解法
1度= π/180 ,在0的附近。令f(x)=sinx. (为书写方便,用x^n表示x的n次方。f(x)' 代表f(x)的一阶导,f(x)'' 代表f(x)的一阶导)
我们在x=0的附近先用一次函数 t(x)=f(0)'(x-0)+f(0) = x去近似sinx,即f(x)在x=0处的切线,我们来看下近似值的误差
记r(x) = f(x)-t(x) = sin(x)-x , p(x) = x^2. 由柯西中值定理可知在0到x之间(假设x>0)必存在一点c,使得
即
进一步应用拉格朗日中值定理可得,在0到c之间,必存在一点b,使得
将(2)式代入(1)式可得 sin(x) = x-1/2*[sin(b)*x^2]
所以 sin1度= sin(π/180) = π/180 - [1/2*sin(b)*(π/180)^2] ,其中 b在 0到π/180之间。
由此可以求出用 π/180去近似sin1度的误差。
(sin1度 约 0.017452 , π/180= 0.017453 , 误差为1/2*(π/180)^2=0.000152)
也就是说,我们用我们用 一次函数f(x)=x在π/180 的取值π/180去近似sin1度的误差不超过1%,我们尝到了一点甜头。
如果我们用二次函数T(x)在0点去逼近sin(x)效果会不会更好呢,即令t(x)与sin(x)在x=0处相等,一阶导相等,二阶导也相等。
即t(0)=sin(0)=0, t(0)'=sin(0)'=1 t(0)'' = sin(0)'' = 0.
可得t(x) = x+0*x^2.
再由中值定理可得:
sin(x) - x = -[cos(a)*x^3]/6 ,其中 a是在 0到x之间的一点。
也就是说,我们用我们用 二次函数f(x)=x+0*x^2在π/180 的取值π/180去近似sin1度的误差不超过0.01%.
推而广之,我们用n次多项式函数t(x)在0点去逼近sin(x),即令t(x)与sin(x)在x=0处相等,一阶导相等,二阶导相等,直到n阶导也相等。
这样就可以得到sin(x)的泰勒展开式。
由上面的过程,我们可以看出, sin(x)在0点附近的值不好直接求出,我们可以用我们熟悉的一次函数,二次函数,多项式函数去近似它,其中的误差可以由拉格朗日余项给出。
更一般的,设T(x) = f(a)+f(a)'(x-a), R(x) = T(x) - f(x), 即R(x)表示用T(x)的a点附近去近似f(x)的误差。
[R(x)-R(a)]/[(x-a)2] = [f'(a)-f'(b)]/[2(b-a)] (柯西中值定理,点b在点a至点x之间)
[f'(a)-f'(b)]/(a-b)=f''(c) (拉格朗日中值定理,点c在点a与点b之间 )
所以R(x)= -[f''(c)/2]*[(x-a)2], 即 f(x) = f(a)+f(a)'(x-a)+[f''(c)/2]*[(x-a)2], 其中点c位于点a与点x之间。
若T(x)存在n+1阶倒数,并且T(x)与f(x)在点a出函数值相等,一阶导相等,二阶导相等,直到n阶导也相等。
则 T(x) = f(a)+f(a)'(x-a)+[f''(a)/2]*[(x-a)2]+..+[f(x)的n阶导在a点的函数值/n!]*[(x-a)n],
[R(x)-R(a)]/[(x-a)(n+1)]=-[f(x)的n+1阶导在c点的函数值/(n+1)!], (应用多次柯西中值定理,其中点c位于点a与点x之间)
即R(x)= -[f(x)的n+1阶导在c点的函数值/(n+1)!]*[(x-a)(n+1)],这样就得到了泰勒展开式的拉格朗日余项。
问题2:计算器如何求 1.1的0.1次方
思考
设想在一个地球仪上,取相距为1cm的两点,在球面是连接两点之间的曲线为圆弧,如果把地球仪放大100倍,再取相距为1cm的两点,在球面上连接这两点之间的曲线非常接近于直线,更进一步,在地球上取相距1cm的两点,几乎可以认为是直线。
也就是说,在一点的附近考虑的很小时,可以用直线去近似,考虑的范围稍微大一点时,可以用多项式函数做高阶近似。
π的故事
π的定义是明确的,即圆的周长与直径的比值,但为了尽量精确的求出π的值,数学家们努力了10多个世纪。
古希腊大数学家阿基米德(公元前287–212 年)为解决这个问题提供了思路:在圆的内部画内切正多边行A,在圆的外部画外切正多边形B,通过求A和B的周长可以确定π的上限和下限。他从正六边形开始计算,然后将边加到12、24、48最后到96,进而证明了π的范围在3又1/7至3又10/71之间,但这也只能将π精确到3.14.
沿着这个思想,祖冲之(429―500)证明了π的取值在3.1415926至3.1415927之间,这个记录直至11个世纪之后才被弗兰西丝●韦达于1579打破,他用6*(2^16)边正多边形将π精确到了小数点后9位,类似的方法在鲁道伦●范●休伦(1540-1610)手里达到顶峰,此君耗费了他将近一生的时间把π精确到35位小数(这种方法会涉及到多重嵌套平方根的计算,所以计算量会很大)。从本质上来说,这十几个世纪对π的计算一直停留在笨重的劳动上,直到微积分的问世。
17世纪,牛顿(1642-1727)和莱布尼茨(1646-1716)天才数学家为解决无穷级数的问题提出了微积分思想,英国数学家詹姆斯●格雷戈里利用微积分获得反正切函数y=arctanx的展开式:
当x=1时,可得:
这就是大名鼎鼎得莱布尼茨级数。(有意思的是莱布尼茨通过求割圆曲线的面积得到了该数值级数,但莱布尼茨当时并没有求出反正切函数的通用展开式。格雷戈里求出了通用展开式,他也许没有做过代换,将函数级数转化为数值级数)
非常优雅的展开式,但事情并没有结束,因为这个数值级数收敛的极慢,对它的前300项求和都只能将π精确到小数点一位小数。
莱昂哈德●欧拉(1707-1783)找到了让π收敛更快的展开式。他从恒等式
出发,另tana=A/B, tanb=C/D. 带入上式得:
取A=B=C=1, D=2得
总结
最近重新看微积分的发展历程,念大学的时候认为微积分复杂,没有体会到微积分的引入恰恰是为了把复杂的东西变简单,我们熟悉一次函数和多项式函数,那么很合理的想法就是把复杂函数转化为一次函数和多项式函数来研究,在一点的附近,用一条直线去逼近目标函数,直线方程的一次项就是微分,一次项系数就是导数。当然用一次函数去逼近误差可能会很大,若目标函数在该点的N阶导数存在,我们可以用N阶多项式函数去逼近,令多项式函数与目标函数在该点的值相等,导数相等,二阶导相等...N阶导也相等,那么我们就可以得到泰勒展开式了。