牛顿法求平方根可拓展

int mySqrt(int x) {
    double t=1.0;         //初始迭代值
    double cheak;    //误差
    double p = 1e-2;        //误差上限
    do
    {
        t = (x / t + t) / 2.0;
        cheak = t * t - x;
    } while((cheak >= 0 ? cheak : -cheak) > p);
    return (int)t;
}

double myCube(int x) {
    double t=1.0;
    double cheak;
    double p = 1e-5;
    do
    {
        t = (x / pow(t,2) + 2*t) / 3.0;
        cheak = pow(t,3) - x;
    } while((cheak >= 0 ? cheak : -cheak) > p);
    return t;
}

原文地址:https://www.cnblogs.com/czsblog/p/11156592.html

时间: 2024-10-29 06:14:54

牛顿法求平方根可拓展的相关文章

牛顿法求平方根

求平方根的方法有很多种,这里介绍的是牛顿法求平方根. 方法是这样的:如果对x的平方根的值有了一个猜测y,那么就可以通过执行一个简单操作去得到一个更好的猜测:只需求出y和x/y的平均值(他更接近实际的平方根值) 代码实现: float sqrt(float x) { float guess = x; while (guess * guess - x > 0.0001) { guess = (guess + x / guess) / 2; } return guess; } 注:这一平方根算法实际上

算法练习之牛顿法求平方根

牛顿法求平方根公式:Xn+1 = 1/2 * (Xn+ a/Xn); 若求a的平方根,将公式进行迭代计算迭代越多,越接近结果最后Xn为a的平方根 代码实现: 参数:要求平方根的数,迭代次数 var sqrt = function (a,accur){ var pre = 1; for(var i = 0;i<accur;i++){ var cur = 1/2 * (pre + a/pre); pre = cur; } return cur; } console.log(sqrt(2,10000)

Exercise 1.8 牛顿法求立方根

题目: Newton's method for cube roots is based on the fact that if y is an approximation to the cube root of x, then a better approximation is given by the value: (r/(y*y)+2*y)/3. Use this formula to implement a cube-root procedure analogous to the squa

求平方根算法 Heron’s algorithm

求平方根问题 概述:本文介绍一个古老但是高效的求平方根的算法及其python实现,分析它为什么可以快速求解,并说明它为何就是牛顿迭代法的特例. 问题:求一个正实数的平方根. 给定正实数 \(m\),如何求其平方根\(\sqrt{m}\)? 你可能记住了一些完全平方数的平方根,比如\(4, 9, 16, 144, 256\)等.那其它数字(比如\(105.6\))的平方根怎么求呢? 实际上,正实数的平方根有很多算法可以求.这里介绍一个最早可能是巴比伦人发现的算法,叫做Heron's algorit

经典算法:牛顿迭代法求平方根

//牛顿迭代法求平方根 1 double mysqrt(double num) 2 { 3 double x = num/2; 4 double y = 0; 5 do{ 6 x = x/2+num/(2*x); 7 y = x*x-num; 8 if(y<0) y = -y; 9 } while(y>0.0001); 10 return x; 11 } 12 int main(int argc, char* argv[]) 13 { 14 printf("%.3f",my

求平方根的倒数速算法--向卡马克等人致敬

昨日,风雨交加,气温骤降,所有人都蜷缩在不暖和的厚衣服里,无神的盯着显示器.我也不例外,颤抖的手点击着鼠标,一边埋怨这天气,一边埋怨这电脑.突然,一段代码映入眼帘,定睛一看,没看懂,代码是这样的: float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // 这TM是啥 i = 0

递归练习之求平方根

/********************************************************************************* Copyright (C), 1988-1999, drvivermonkey. Co., Ltd. File name: Author: Driver Monkey Version: Mail:[email protected] qq:196568501 Date: 2014.04.02 Description: 递归练习之求平方

利用牛顿迭代法求平方根

求n的平方根,先如果一推測值X0 = 1,然后依据下面公式求出X1,再将X1代入公式右边,继续求出X2…通过有效次迭代后就可以求出n的平方根,Xk+1 先让我们来验证下这个巧妙的方法准确性,来算下2的平方根 (Computed by Mathomatic) 1-> x_new = ( x_old + y/x_old )/2 y (x_old + -----) x_old #1: x_new = --------------- 2 1-> calculate x_old 1 Enter y: 2

速求平方根倒数

在游戏3D建模方面很多时候要用到求平方根的倒数,而本文章打算介绍的算法会比正常算法快上4倍左右.这对于产品性能将是一个大幅度的提高. 那我们要从哪里开始呢?首先不得不提一提 idsoftware.这是一个创建之初只有13个人的小公司,但它推出的毁灭战士(DOOM)系列游戏可以说改变了游戏世界,极大地推动了游戏产业的发展,因为在当时贫瘠的电脑性能的支撑下,一个开发者能够在游戏中加入一段流畅的动画都会让人惊叹不已,而我们所说的idsoftware,在那个年代就已经做出了画面远超同代其余作品的游戏,像