用“让长方形变得更像正方形”的思路得到求平方根的迭代公式

        求解\sqrt{A} \quad (A>0)的迭代公式一般用牛顿法来得到,将\sqrt{A}作为方程x^2-A=0的大于0的实根,利用牛顿切线法很容易得到迭代公式。y=x^2-A 上的点 (x_n,x_{n}^2-A) 的处切线与x轴的交点的横坐标就是 x_{n+1},经过简单的计算就能得到:

                                                         x_{n+1}=\frac{1}{2} \left( x_n+\frac{A}{x_n} \right)

        在康奈尔大学的一门课程里我看到了一个利用“让长方形变得更像正方形”的思路得到这个迭代公式的方法,挺有趣的,也很容易懂,分享给大家。考虑一个面积是A的正方形,那么它的边长就是\sqrt{A},如果一个面积是A的长方形能让它变得更像正方形,那么它的边长就接近\sqrt{A}了。怎么做呢,可以用求长方形长与宽的算数平均数(L+A/L)/2=L_{new}来代替原来的长,因为平均数是介于长于宽之间的,更新后的长方形的宽自然就是A/L_{new}了。反复这么操作下去,长方形的长与宽会越来越接近,都趋近于\sqrt{A}

        上面操作中每次更新长方形长的迭代公式:

                                                            L_{new}=\dfrac{1}{2}\left( L+\dfrac{A}{L} \right)                                                                   

和牛顿法得到的迭代公式相同,是不是很有趣呢。

        我把这个方法也写在了知乎这个问题下面,[知乎]如何通俗易懂地讲解牛顿迭代法求开方?数值分析?

        最后附上两张康奈尔大学的这个课件,来自CS1112,这门课叫“Introduction to Computing using Matlab”,用的教材的中文版是《面向计算科学与工程的Matlab编程》,很不错的书呢,是问题引导式的讲法,比较有趣。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容