迭代算法求平方根

#include<stdio.h>#include<math.h>void main()
{ 
    double a,x0,x1;    printf("input a:\n");    scanf("%lf",&a);    if(a<0)printf("ERROR!\n");    else
    { 
        x0=a/2;
        x1=(x0+a/x0)/2;        do
        { 
            x0=x1;
            x1=(x0+a/x0)/2;
        }while(fabs(x0-x1)>=1e-6);
    }    printf("Result:\n");    printf("sqrt(%g)=%g\n",a,x1);
}

运行结果如下:

时间: 2024-10-26 02:32:02

迭代算法求平方根的相关文章

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

牛顿法求平方根公式: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)

求平方根算法 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

C语言之基本算法11—牛顿迭代法求平方根

//迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1=(Xn+a/Xn)/2. ================================================================== */ #include<stdio.h> #include<math.h> main() { float a,x0,x1;

C:冒泡排序&amp;判断一个数是否为素数&amp;求平方根的迭代公式

冒泡排序 #include<stdio.h> int main () { int i,j,n,temp,a[10]; scanf("%d",&n); printf("The original numbers:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n-1;i++) for(j=1;j<n-1;j++) if(a[j-1]>a[j])

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

昨日,风雨交加,气温骤降,所有人都蜷缩在不暖和的厚衣服里,无神的盯着显示器.我也不例外,颤抖的手点击着鼠标,一边埋怨这天气,一边埋怨这电脑.突然,一段代码映入眼帘,定睛一看,没看懂,代码是这样的: 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

利用牛顿迭代法求平方根

求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,在那个年代就已经做出了画面远超同代其余作品的游戏,像

转载 迭代算法实现开平方

迭代是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或者方程组)的过程,为实现这一过程所使用的方法统称为迭代法(Iterative Method). 一般可以做如下定义:对于给定的线性方程组x=Bx+f(这里的x.B.f同为矩阵,任意线性方程组都可以变换成此形式),用公式x(k+1)=Bx(k)+f(括号中为上标,代表迭代k次得到的x,初始时k=0)逐步带入求近似解的方法称为迭代法(或称一阶定常迭代法).如果k趋向无穷大时limt(k)存在,记为x*,称此迭代法收敛.显