您的位置:首页 > 其它

牛顿迭代法求平方根、立方根

2017-05-16 11:25 267 查看

牛顿迭代公式

平方根迭代公式:a(n+1)=( a(n) + num/a(n) )/2,a(0) 初始化为1;

立方根迭代公式:a(n+1)=( 2a(n) + num/( (a(n))^2 ) )/3,a(0) 初始化为1;

程序计算过程

#include<iostream>
#include<iomanip>
#define E 0.0001
using namespace std;

double getSqrtRoot(double num) //平方根计算函数
{
double x0=1, x1;
x1 = (x0 + num / x0) / 2.0;
while (fabs(x1 - x0) >= E)
{
x0 = x1;
x1 = (x0 + num / x0) / 2.0;
}
return x1;

}

double getCubeRoot(double num) //立方根计算函数
{
double x0, x1;
x0 = num;
x1 = (2 * x0 / 3) + (num / (3 * x0*x0));
while ((x1 - x0>E) || (x1 - x0<-E))
{
x0 = x1;
x1 = (2 * x0 / 3) + (num / (3 * x0*x0));
}
return x1;
}

int main()
{
double in;
while (cin >> in)
{
cout << fixed << showpoint << setprecision(1) << getCubeRoot(in) << endl;
cout << fixed << showpoint << setprecision(1) << getSqrtRoot(in) << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  平方根 立方根