#include <iostream>
#include<iomanip>
#define E 0.0001 //精度设置
using namespace std;
double getCubeRoot(double num)
{
double x0=num;
double result;
while (1)
{
result=x0-(x0*x0*x0-num)/(3*x0*x0); //牛顿迭代 f(x) = x^3-num, f'(x)=3*x^2;x=x-f(x)/f'(x);
if (result*result*result-num<E &&result*result*result-num>-E)
return result;
else
x0=result;
}
}
int main()
{
int number;
cin>>number;
cout<< fixed << showpoint << setprecision(1)<<getCubeRoot(number)<<endl;
}
#include<iomanip>
#define E 0.0001 //精度设置
using namespace std;
double getCubeRoot(double num)
{
double x0=num;
double result;
while (1)
{
result=x0-(x0*x0*x0-num)/(3*x0*x0); //牛顿迭代 f(x) = x^3-num, f'(x)=3*x^2;x=x-f(x)/f'(x);
if (result*result*result-num<E &&result*result*result-num>-E)
return result;
else
x0=result;
}
}
int main()
{
int number;
cin>>number;
cout<< fixed << showpoint << setprecision(1)<<getCubeRoot(number)<<endl;
}
本文介绍了一个使用牛顿迭代法计算任意数立方根的C++代码实现,详细解释了算法原理并提供了完整的代码示例。
1422

被折叠的 条评论
为什么被折叠?



