求平方根的迭代公式

您所在的位置:网站首页 平方根的计算公式 求平方根的迭代公式

求平方根的迭代公式

#求平方根的迭代公式| 来源: 网络整理| 查看: 265

平方根迭代公式

假设√a = x 则平方根迭代公式为: xn+1 = 1/2 (xn + a/xn)

推导过程

在这里插入图片描述 假设有如上图的曲线,xn点的直线为曲线的切线,容易得到xn的方程为 f(xn) + f’(xn)(x - xn)

上面的方程是根据泰勒级数展开后,去除高阶项后得到。

这样让切线方程等于0的点的x设为xn+1,方程变为了f(xn) + f’(xn)(xn+1 - xn)(粗体是导数) = 0

解得xn+1 = xn - f(xn)/f’(xn)(粗体是导数)。

进入今天的主题,已知√a = x,所以x2 - a = 0,曲线如下图, 在这里插入图片描述 在这里插入图片描述 我们任意取xn点,假设是上面的两种情况。 上面的推导公式同样适用于当前曲线情况。通过上面的迭代公式xn+1 = xn - f(xn)/f’(xn)(粗体是导数)和图像不难看出,xn+1总是向y = 0的x点趋近,这样只要我们选择了xn后,不断地迭代求xn+1,它总是能够到达y = 0的点,此时的x便是平方根的值。

我们将x2 - a = 0带入到上面的迭代公式,得到了xn+1 = 1/2 (xn + a/xn)。 需要注意的是我们的根号后得到的x为正值,而二次函数显然有两个值,一正一负,这就需要我们选择的初始xn点应该为正值。

实现代码

代码就是简单的实现了一下,还有漏洞,希望读者自己查缺补漏吧。

#include #include using namespace std; double f(double x, double a) { x = (x + a/x)/2; if (abs(a-x*x)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3