c/c++ 牛顿迭代法求平方根
(2011-10-07 05:16:44)
标签:
c/csquareroot杂谈 |
分类: Technical |
牛顿迭代法求平方根
先看一下牛顿迭代法求平方根的代码,代码来自百度知道。
#include<iostream>
using namespace std;
int main()
{
if(a<0)
{
}
}
代码很简单,难懂的就一句y=(x+a/x)/2
以下定理可以帮助你理解这句话。
这里只给出了不严谨的证明,目的是给出思路。
定理1 x
== y时,x = √a .
while(x!=y)
这段代码的意思是当x = y时,x =
条件:x = y
结论:x =
证明:
y – x = (x+a/x)/2-x = (a/x – x )/2 = 0
得a/x = x
定理1说明了当循环结束时,得到了我们想要的结果。
定理2. X
>= Y
>= √a .恒成立
证明:
y –√a =
得
y – x = (x+a/x)/2 – x = (a/x – x )/2 = (a – x^2)/2*x
因为x = y,y
>=
所以x
>=
得y – x = (a – x^2)/2*x <=
0
综上所述, X >= Y
>=
定理2说明了x, y无限的向√a
http://www.diybl.com/course/3_program/c/c_js/20100107/187941.html