开方 牛顿迭代公式

来源:互联网 发布:垃圾清理软件哪个好 编辑:程序博客网 时间:2024/04/30 12:46

牛顿迭代公式

设r是f(x) = 0的根,选取x0作为r的初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中,x(n+1)=x(n)-f(x(n))/f'(x(n))称为r的n+1次近似值,上式称为牛顿迭代公式
用牛顿迭代法解非线性方程f(x)=0,是把非线性方程线性化的一种近似方法。把f(x)在点x0的某邻域内展开成泰勒级数 f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +… ,取其线性部分(即泰勒展开的前两项),并令其等于0,即f(x0)+f'(x0)(x-x0)=0 ,以此作为非线性方程f(x) = 0的近似方程,若f'(x0)≠0,则其解为x1=x0-f(x0)/f'(x0), 这样,得到牛顿迭代法的一个迭代关系式:x(n+1)=x(n)-f(x(n))/f'(x(n))。
就是反复迭代的过程,求x(n+1),直到 x(n+1)的平方 与 N的差满足一定的精度 比如0.0001

代码

//f(x)=x^2 -n;//  函数f(x)在x0点的切线与x轴的交点double getX(double x0, int n){cout<<x0<<"  "<<endl;double  y0=x0 *x0 -n;double x1=x0-y0/(2*x0);cout<<x1<<endl;return x1;}//开方double my_sqrt(unsigned int n){double x0=1;do{x0=getX(x0,n);}while(abs(x0*x0-n)>0.00001);return x0;}


原创粉丝点击