码迷,mamicode.com
首页 > 编程语言 > 详细

求平方根的算法 牛顿迭代法和二分法

时间:2019-03-19 12:21:32      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:col   fine   color   turn   重复   牛顿法   初始   bsp   while   

牛顿法:

public double sqr(double n){
        double x=n,y=0.0;
        while (Math.abs(x-y)>0.0001){
            y=x;
            x=(x+n/x)/2;
        }
        return x;
    }

设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次近似值,上式称为牛顿迭代公式。

 

二分法:

#define eps 0.00001
float SqrtByDichotomy(float n)
{
    if (n < 0)
    {
        return -1.0;
    }
    else
    {
        float low, up, mid, last;
        low = 0, up = (n>=1?n:1);
        mid = (low + up) / 2;
        do {
            if (mid*mid>n)
                up = mid;
            else
                low = mid;
            mid = (up+low)/2;
        } while (fabsf(mid - last) > eps);
        return mid;
    
    }

 

求平方根的算法 牛顿迭代法和二分法

标签:col   fine   color   turn   重复   牛顿法   初始   bsp   while   

原文地址:https://www.cnblogs.com/10zhang/p/10557649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!