问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

用泰勒级数估算平方根需展开的阶数

创作时间:
作者:
@小白创作中心

用泰勒级数估算平方根需展开的阶数

引用
CSDN
1.
https://blog.csdn.net/weixin_41640959/article/details/142029918

本文详细探讨了如何使用泰勒级数来估算平方根,并重点讨论了如何根据精度要求和被开方数来确定泰勒级数展开的阶数。文章内容严谨,逻辑清晰,包含了详细的数学推导和实验验证,具有较高的学术价值。

我们知道,一个可导函数,可以用泰勒级数展开,这是一种估算函数值的方法。泰勒级数展开的基本公式是[1]:

用泰勒级数估算函数值的方法是只取前几项,忽略后面的无限多项。但泰勒级数并非必然收敛[2],所以需要凑出能使泰勒级数收敛的

,且

的计算要容易,才能准确地用泰勒级数估算函数值。

博文[3]介绍了一种用泰勒级数估算平方根的方法,大致思路就是将平方根转化为

,其中

为正整数,

是一个接近1的数。但该文的方法只取泰勒展开式的二阶近似,有时准确,有时不准确。当然,该文给出了通过乘以某一系数的方法提高准确度的方法,是有效的。但本文推荐的方法是展开更高阶的泰勒级数,而展开的泰勒级数的阶数并不固定,而是和精度要求,以及被开方数有关。被开方数与1的接近程度可以决定泰勒级数在展开一定阶数后剩余项的大小,且可以用数学算式得出。所以,根据精度的要求,被开方数只要在0到2之间,就可以计算出应展开的阶数,然后无需乘系数,就计算出符合精度要求的平方根。

一、平方根函数的泰勒展开式

对于平方根函数

,其一阶导数为

,二阶导数为

,三阶导数为

。以此类推,

阶导数是

对于泰勒展开,这里取

,则

,无论

如何取值。

所以

由于展开式是正负交替,这里将其写成

(1)

二、泰勒展开式收敛性的证明

式(1)中,令

这里采用[4]中提到的比值审敛法判断式(1)的收敛性。

注:因为这里前提是

,所以

可以约掉。

显然,当

时,

,故式(1)收敛。

三、泰勒展开式的阶数及剩余项的大小

(一)级数公比初步分析

首先,根据

的算式,用GeoGebra软件[5],画出当

关于

的函数图像。

从图中可看出

时单调递增,且始终大于0。鉴于其极限值存在,因此可以猜测,当

时,

。若证实成立,则可用无穷等比数列的算式找到式(1)的剩余项的上限值。具体说明将在本章节第三小节详述。

(二)数学证明

这里用作差法证明

(2)

现在判断(2)式的正负

首先,已知

,所以

。另外,由于

,所以

对于

,当

确定时,该式就是

的一次函数,在

上单调,所以只要

时该式值均大于0,该式就必然大于0。

时,该式

,当

时其必然

时,该式

,当

时其必然

而对于

时,该式

时,该式

所以式(2)必为负,说明

成立

于此同时,可用类似的方法证明

,所以

综上所述,

(三)剩余项上限值算式

在上一小节中,已经证明了

,所以

的绝对值必然小于首项为

,公比为

的无穷等比数列的绝对值。根据[6]中的无穷等比数列公式,

代入,可知对于式(1),当

计算到

时,剩余项的绝对值

(3)

因此,只要

,估算平方根时,根据所需的精度

,只需用式(3)算出令

的最小

即可。

四、实验

在这一章节,用Matlab计算当

时通过式(1),令

估算出来的

,以及通过式(3)计算的

的上限值,因此验证通过泰勒级数算出的

估计值和实际值的误差小于(3)中计算的上限值。另外,也观察对于各

值,通过泰勒级数展开

阶后,余式的上限值,从而找出对于不同的

值,需要展开多少阶后才能达到所需的精度。

(一)实验代码

首先是通过泰勒级数估算

值的程序


function res = estiSquareRoot(x, n)  
    if x <= 0 || x >= 2  
        res = nan;  
        disp("x must be between 0 and 2, open range")  
        return  
    end  
    if n < 0 || rem(n, 1) ~= 0   
        res = nan;  
        disp("n must be a non-negative integer!")  
        return  
    end  
    res = 1/2 + x/2;  
    for m = 1:n  
        ks = 1:(2 * m - 1);  
        res = res + prod(2*ks-1) * (x - 1) ^ (2 * m) * (-8 * m + 4 * m * x - x - 1) / (2 ^ (2 * m + 1) * factorial(2 * m + 1));  
        
    end  
end   

函数中的x代表

,函数中的n代表

另外,计算

的上限值


function remainSup = getRemainTaylor(x, m)  
    if x <= 0 || x >= 2  
        remainSup = nan;  
        disp("x must be between 0 and 2, open range")  
        return  
    end  
    if m < 0 || rem(m, 1) ~= 0   
        remainSup = nan;  
        disp("n must be a non-negative integer!")  
        return  
    end  
    ks = 1:(2*m-1);  
    remainSup = prod(2 * ks - 1) * (x - 1)^(2 * m) * (-8 * m + 4 * m * x - x - 1)/((1 - (x - 1) ^ 2) * 2 ^ (2 * m + 1)*factorial(2 * m + 1));  
end   

函数中x代表

,m代表

然后计算对于不同的

,不同的

,估算的平方根值和剩余值上限。注意:对于用

阶展开的估值,其余式是

。另外,也用Matlab内置的函数计算平方根,作为参考。


x_to_test = 0.1:0.1:1.9;  
c_to_test = 1:10;  
square_root_estimation = zeros(length(x_to_test), length(c_to_test));  
square_root_remaining = zeros(length(x_to_test), length(c_to_test));  
for ii_for_x = 1:length(x_to_test)  
    for jj_for_c = 1:length(c_to_test)  
        square_root_estimation(ii_for_x, jj_for_c) = estiSquareRoot(x_to_test(ii_for_x), c_to_test(jj_for_c));  
        square_root_remaining(ii_for_x, jj_for_c) = getRemainTaylor(x_to_test(ii_for_x), c_to_test(jj_for_c) + 1);  
    end  
end  
square_root_real = sqrt(x_to_test)';   

(二)实验结果

然后观察两个结果。第一个,是估算的平方根和实际平方根的差值。


x_labels = "x=" + x_to_test;  
c_labels = "c=" + c_to_test;  
T = array2table(abs(square_root_real - square_root_estimation), 'VariableNames', c_labels, 'RowNames', x_labels)   

结果如下:

从表格中可看出,

越远离1,精确估计平方根需要展开的泰勒阶数

越大。

第二个,是余式的上限


T = array2table(abs(square_root_remaining), 'VariableNames',c_labels,'RowNames',x_labels)   

结果如下:

比较两表,可以确认平方根的计算差距小于通过(3)计算的上限。另外,对于

时,其差距就已经小于0.001。此时其为三阶展开。对于[3]中使用的方法,

如写成

,则令

,此时其根式部分的计算差不超过0.0021,整体差距不超过0.0042。同样,若写成

,则根式部分计算差不超过0.0015,整体差距不超过0.003。当然,若

离1更远,需展开的阶数会更大,但只要

,都可通过式(3)算出需展开的阶数。

五、总结

的泰勒展开式,在

时,是收敛的,所以可以用泰勒级数进行估算。另外,由于展开式的后项与前项之比始终小于

,因此可以用以

为公比的无穷等比数列找出泰勒展开式余项的上限值,也可以确定达到所需精度需要展开的泰勒阶数。

参考资料

[1]泰勒(Taylor)展开式(泰勒级数)_泰勒展开-CSDN博客

[2]泰勒级数:数学的无限逼近之美

[3]手动计算开根号(泰勒展开法) - 小时百科

[4]马同学

[5]GeoGebra - the world’s favorite, free math tools used by over 100 million students and teachers

[6]概率 无穷数列求和公式

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号