求平方根的方法(牛顿迭代法和二分法)
2013-09-17 11:00
239 查看
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
double _sqrt(double val, double x) //牛顿迭代法
{
if(abs(x*x - val) < 0.00001){return x;}
else{
x = (x + val/x)/2;
return _sqrt(val, x);
}
}
double sqrt_Rec(double val)
{
return _sqrt(val, 1.0);
}
double sqrt_2(double val) //二分法
{
double left = 0;
double right = val > 1.0?val: 1.0;
double mid = (left + right)/2;
while(abs(mid*mid - val) > 0.00001){
if( mid*mid - val > 0){
right = mid;
}else{
left = mid;
}
mid = (left + right)/2;
}
return mid;
}
int main()
{
double num;
while(cin >> num){
cout << sqrt_2(num) << endl;
}
}
#include <cstdlib>
#include <cmath>
using namespace std;
double _sqrt(double val, double x) //牛顿迭代法
{
if(abs(x*x - val) < 0.00001){return x;}
else{
x = (x + val/x)/2;
return _sqrt(val, x);
}
}
double sqrt_Rec(double val)
{
return _sqrt(val, 1.0);
}
double sqrt_2(double val) //二分法
{
double left = 0;
double right = val > 1.0?val: 1.0;
double mid = (left + right)/2;
while(abs(mid*mid - val) > 0.00001){
if( mid*mid - val > 0){
right = mid;
}else{
left = mid;
}
mid = (left + right)/2;
}
return mid;
}
int main()
{
double num;
while(cin >> num){
cout << sqrt_2(num) << endl;
}
}
相关文章推荐
- 求解一元多次方程的两种方法:牛顿迭代法和二分法
- 1、编写程序,分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根,要求计算精确到小数点后七位数字为止,并将求出的近似结果与理论值2cos20 相比较,二分法的初始迭代
- 用频域最小误差平方方法设计线性相位FIR低通数字滤波器
- 二分法和牛顿迭代法
- 一个用神奇的数 - 0x5f3759df 来求平方根的方法!
- 由开锁智力题得出一种求平方数的方法
- 用牛顿迭代法求浮点数的平方根
- 实现sqrt函数功能,之前也是常见的面试题,本文两种解法,二分法,牛顿迭代法
- 用牛顿迭代法求某正数n的平方根
- 数值计算方法:二分法求解方程的根(伪代码 python c/c++)
- 二分法(计算方法)
- sqart平方根计算的两种方法实现(累加逼近和二分法)
- 二分法和牛顿迭代法求平方根(Python实现)
- 整数平方根:整数开方及大整数开方解决方法
- 最优化方法:牛顿迭代法和拟牛顿迭代法
- 素数判断方法,优化平方阶
- 【python】升序查找100内最大平方数的方法
- javascript求1-100的平方和--三种实现方法
- 用牛顿迭代法求浮点数的平方根
- C语言用二分法求方程的近似解的方法