有理数的整数次方根近似值的计算方法在数学运算中经常会遇到实数的平方根、立方根或m次方根,如2、35或ma等,这些是无理数的几种常见的类型,有时需要用到它们的近似值,计算方法有很多种,下面介绍三种简单的算法,它们均以高等数学(微积分)中的微分法为理论基础。下面介绍的三种方法分别为简单迭代法、微分近似法和二项公式法,它们既可以单独使用,也可以结合起来使用,可以计算任意实数的m次方根,但是无理数为无限不循环小数,在实际计算中既不可能也无必要取无限多位小数,因而只能取其有限位小数的近似值(如π≈3.14159,e≈2.71828等),即无理数的有理近似值,因此这里只考虑有理数的情形;此外,在实际计算中还有可能遇到形如man(a0,m∈N+,n∈N+)的无理数,不过man=(ma)n,因此只需计算ma(a0,m∈N+)的近似值。综上所述,这里只考虑ma(a0,a∈Q,m∈N+)的近似值的计算方法。【方法1】简单迭代法迭代法的一般原理是将方程f(x)=0转化为x=g(x)的形式,函数g(x)称为“迭代函数”,使方程x=g(x)成立的x值称为g(x)的“不动点”,记为x*,即x*=g(x*),根据不动点的性质,可以设计算法计算方程f(x)=0的实数根,方法如下:取一个适当的初值a0,设计迭代公式an=g(an−1),n=1,2,…(n∈N+)(1.1)把初值a0代入上述迭代公式中,算出一次近似值a1,再把a1代入迭代公式中,算出二次近似值a2,然后把a2代入迭代公式中,算出三次近似值a3,……,按照这个步骤继续计算下去,直至算出的n次近似值an满足下述的终止迭代的判定条件|an−x*|ε0(n∈N+)(1.2)这里ε0是任意小的正数,即计算所要求的精确度;但是x*的值一般是不知道的,上述判定条件应用起来不方便,因此代之以下述判定条件|an−an−1|ε0(n∈N+)(1.3)如果an满足上述判定条件,则可以证明:an→x*(n→∞),即liman=x*n→∞此时即可取an为所要求的x*的近似值,即x*≈an。以上就是迭代法的大致含义,迭代函数g(x)的做法有很多,例如可以直接把方程f(x)=0经过适当的变形转换为迭代形式x=g(x),这种方法称为“简单迭代法”,当然用其它数学原理(例如微分法)也可以推导出迭代形式x=g(x)。以简单迭代法为基础,可以设计出其它形式的加速迭代法,这里不予讨论。作为一个实例,现在推导计算平方根a的迭代公式,平方根源于一元二次方程x2−a=0(1.4)将上述方程作以下变形x2=a⇒x=ax⇒2x=x+ax,这样就得到了迭代形式x=g(x),即x=12(x+ax)(1.5)于是得到迭代公式an=12(an−1+aan−1)(a0,a∈Q,n∈N+)(1.6)一般地,容易证明,计算正有理数a的m次方根ma的迭代公式为an=1m(m−1)an−1+aam−1n−1(a0,a∈Q,m∈N+,n∈N+)(1.7)【例1.1】计算2的近似值,精确到10−6。解:这里a=2,ε0=10−6,根据迭代公式(1.6)可得an=12(an−1+2an−1)(n∈N+),因为1.96=1.4221.52=2.25,可取初值a0=1.5,代入迭代公式,为精确到10−6,计算结果均保留至7位小数:a1=12(a0+2a0)=12×(1.5+21.5)≈1.4166667,a2=12(a1+2a1)=12×(1.4166667+21.4166667)≈1.4142157,a3=12(a2+2a2)=12×(1.4142157+21.4142157)≈1.4142136,a4=12(a3+2a3)=12×(1.4142136+21.4142136)≈1.4142136;可以看出,在10−6精确度下,a3与a4已经没有差异,满足终止迭代判定条件|a4−a3|10−6,因此可取a3或a4为结果,保留至6位小数可得2≈1.414214,误差不超过10−6。【例1.2】计算35的近似值,精确到10−6。解:这里a=3,ε0=10−6,根据迭代公式(1.7)可得an=13(2an−1+5a2n−1)(n∈N+),因为4.913=1.7351.83=5.832,取初值a0=1.7,代入迭代公式,为精确到10−6,计算结果均保留至7位小数:a1=13(2a0+5a20)=13×(2×1.7+51.72)≈1.7100346,a2=13(2a1+5a21)=13×(2×1.7100346+51.71003462)≈1.7099759,a3=13(2a2+5a22)=13×(2×1.7099759+51.70997592)≈1.7099759,于是可知,在10−6精确度下,a2与a3已经没有差异,满足终止迭代判定条件|a3−a2|10−6,因此可取a2或a3为结果,保留至6位小数可得35≈1.709976,误差不超过10−6。【方法2】微分近似法微分近似法是用函数的微分(或导数)计算函数值的近似值的方法。设函数y=f(x)在区间I内可微(于是也就可导),根据微分关系式dy=f'(x)dx(2.1)当函数的自变量x的增量Δx(Δx=dx)很小,即当Δx→0时,函数值的增量Δy与函数y的微分dy很接近,即Δy≈dy,根据(2.1)式可知Δy≈dy=f'(x)Δx(Δx→0)(2.2)如果函数y在点x0处的函数值f(x0)比较容易计算,设两个很接近的点x0与x均在可微区间I内,现在计算函数y在点x处的函数值f(x)。函数y=f(x)的自变量在点x0与x之间的增量为Δx=x−x0,因自变量x的变化而导致的函数y的增量为Δy=f(x)−f(x0),当点x0与x很接近时(即x→x0),Δx很小(即Δx→0),可以用函数y在点x0处的微分dy=f'(x0)Δx来近似代替函数y在点x0与x之间的增量Δy=f(x)−f(x0),根据(2.2)式可得f(x)−f(x0)≈f'(x0)Δx(Δx→0)因为Δx=x−x0,当Δx→0时,x→x0,于是可以得到f(x)≈f(x0)+f'(x0)(x−x0)(x→x0)(2.3)这就是计算函数y=f(x)在点x0附近的点x处的函数值的近似值的公式,这个结果实际上是一般的公式—泰勒公式(或泰勒级数)的一级近似,这里不予讨论。公式(2.3)式还可以表示为其它形式,因为Δx=x−x0,x=x0+Δx,于是可得f(x0+Δx)≈f(x0)+f'(x0)Δx(Δx→0)(2.4)这是(2.3)式的另一种常用的形式。根据导数的定义和性质也可以导出(2.3)和(2.4)式。设函数y=f(x)在区间I内可导,按照导数的定义,函数y=f(x)在点x0处的导数为f'(x0)=lim∆x→0f(x0+∆x)−f(x0)∆x(2.5)当函数y的自变量x的增量∆x很小时,有f'(x0)≈f(x0+∆x)−f(x0)∆x(Δx→0)(2.6)于是f(x0+∆x)−f(x0)≈f'(x0)∆x(Δx→0)(2.7)即f(x0+Δx)≈f(x0)+f'(x0)Δx(Δx→0)这就是(2.4)式,据此(2.3)式也很容易导出。根据(2.3)式或(2.4)式可以计算初等函数在一些特殊点处的函数值的近似值,但是计算结果的精确度一般无法预先设定,这取决于函数y=f(x)的性质和点x0的位置与增量Δx的大小,一般地,Δx越小,结果越准确。根据(2.3)式或(2.4)式,可以推导出一些常见的初等函数在一些特殊点处的函数值的近似计算公式,例如在(2.3)式中取x0=0,则有f(x)≈f(0)+f'(0)x(x→0)(2.8)根据上式可得,当x很小时n1+x≈1+xn(x→0,n∈N+)(2.9)可以证明,(2.9)式中的根指数n可以推广至任意实数α(1+x)α≈1+αx(|x|1,α∈R)(2.10)实际上(2.10)式就是以后将会提到的牛顿二项公式的一级近似。此外,根据(2.8)式还可以得到以下一些简单的结果sinx≈x,tanx≈x,ex≈1+x,ln(1+x)≈x(x→0)。前面已经提到,用微分法可以导出迭代公式,下面以平方根为例推导(1.6)式,这需要用到平方根函数及其导数。为了计算平方根a,设平方根函数为f(x)=x(x0),则它的导数为f'(x)=12x(x0),根据(2.3)式,可得a≈x0+12x0(a−x0)=12x0(a+x0),即a≈12(x0+ax0)(2.11)上式可以反复使用,于是可以得到迭代格式xn=12(xn−1+axn−1)(a0,n∈N+)(2.12)为了书写方便,令an=xn,则(2.12)可以简写为an=12(an−1+aan−1)(a0,n∈N+),这就是(1.6)式,同理(1.7)式也可以用微分法导出。【例2.1】计算2的近似值,精确到10−3。解:根据(2.9)式,1+x≈1+x2(x→0),如果取x=1,则有2=1+1≈1+1/2=1.5,这显然是不准确的,因为x取的过大,近似公式不再适用了。正确的做法是,可取x0=1.42=1.96,则Δx=2−x0=0.04,可得2=1.42+0.04=1.42×(1+0.041.42)=1.4×1+0.221.42=1.4×1+172;在这里可以认为1721,根据公式1+x≈1+x2(x→0),可得1+172≈1+12×172=1+198=9998≈1.0102,于是2≈1.4×1.0102≈1.4143,这个结果与前面得到的六位近似值1.414214相符合,精确到10−3,取三位小数即可,得到2≈1.414,误差不超过0.001。此外,还可以直接利用(2.3)式,由f(x)=x(x0),可得x≈x0+12x0(x−x0);令x=2,x0=1.42=1.96,则2=1.42+0.04≈1.42+121.42×(2−1.42)=1.4+0.042×1.4=1.4+170≈1.4+0.0143=1.4143,于是可以得到2≈1.414,这个结果与前面相同。为了得到高精确度的近似值,可以取更精确的x0,例如x0=1.412,x0=1.4142,…,按照以上方法计算;当然,也可以把计算结果作为一次近似值,按照迭代法的原理,重复以上的计算过程,也可以得到精确度更高的结果,这样就把迭代法和微分近似法结合了起来。同理,3、5等无理数的近似值也可以这样计算。为了应用方便,有时也把(2.3)式或(2.4)式写成另一种简单形式,把x0简写为x,把自变量的增量记为Δx=h,于是上述公式可以简写为f(x+h)≈f(x)+f'(x)∙h(h→0)(2.13)公式(2.3)、(2.4)和(2.13)还可以用来计算一些常见的初等函数的近似值。【例2.2】计算sin30°30′的近似值,精确到0.0001。解:根据(2.4)式,设f(x)=sinx,则f'(x)=cosx,可得sin(x0+Δx)≈sinx0+cosx0∙Δx(Δx→0);令x0=30°=π6,Δx=30′=π360,取π≈3.14159,则sin30°30′=sin(π6+π360)≈sinπ6+cosπ6∙π360=12+32∙π360≈0.5+0.5×1.7321×3.14159360≈0.5+0.00756=0.50756,这就是所求的结果,可取sin30°30′≈0.5076,误差不超过0.0001。【例2.3】计算31.02的近似值,精确到0.0001。解:按照(2.9)式,n=3,可得31+x≈1+x3(x→0)令x=0.02,精确到0.0001,则有31.02=31+0.02≈1+13×0.02≈1+0.0067=1.0067。【例2.4】计算e1.02的近似值,精确到0.001。解:根据(2.13)式,设f(x)=ex,则f'(x)=ex,可得ex+h≈ex+ex∙h=ex∙(1+h)(h→0);令x=1,h=0.02,取e≈2.7183,则有e1.02=e1+0.02≈e1∙(1+0.02)=1.02e≈1.02×2.7183≈2.7727≈2.773。这个结果可以由前