求平方根C++

求平方根,正根.曾经都不会.昨天看数学,看到了,写了出来.自己又小优化了一下,非常不错.

// squareRoot.cpp -- 2011-08-29-01.04
#include "stdafx.h"
#include <iostream>

double squareRoot (double radicand, double precision) ;

int _tmain(int argc, _TCHAR* argv[])
{
	std ::cout << squareRoot(9, 0.000001) << std ::endl ;

	return 0;
}

double squareRoot (double radicand, double precision)
{
	if (radicand > 0)
	{
		double squareRoot = radicand / 10 ;
		while (squareRoot * squareRoot > radicand)
			squareRoot /= 2 ;
		double fakePrecision = 0.1;
		while (1)
		{
			while ((squareRoot + fakePrecision) * (squareRoot + fakePrecision) <= radicand)
			{
				squareRoot += fakePrecision ;
			}
			if (fakePrecision > precision)
			{
				fakePrecision /= 10 ;
			}
			else
			{
				return squareRoot ;
			}
		}
	}
	else
	{
		std ::cerr << "Radicand must > 0" << std ::endl ;
		return 0 ;
	}
}

求平方根C++

时间: 2024-08-02 01:17:40

求平方根C++的相关文章

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

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

牛顿法求平方根

求平方根的方法有很多种,这里介绍的是牛顿法求平方根. 方法是这样的:如果对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; } 注:这一平方根算法实际上

求平方根——分治法

题目描述: 不用sqrt(x)库函数,实现求平方根. 解题思路: 采用二分法 假定要求数num的平方根,那么首先取1~num之间的中点mid. 若 mid * mid > num,那么 根在 1~mid-1之间: 若 mid * mid < num,那么根在 mid+1~num 之间: 若 mid * mid == num,直接输出 mid: 由于整数int求平方根是向下取整,所以,若mid * mid < x情况下,根可能是mid. 依据上面假设根在mid+1~num之间,那么mid+

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

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

用迭代法求平方根

输入代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2014年12月29日 *版 本 号:v2.0 * *问题描述:用迭代法求 .求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001.输出保留3位小数 *程序输入:整数X *程序输出: X的平方根 */ #include<iostream>