CODE:
#include
#include
void CalculateCubeRoot(double& x, double K, double tolerance = 1.0e-6, int maxIteration = 100);
int main(int argc, char* argv[])
{
double x = 1.0;
double K = 12.0;
CalculateCubeRoot(x, K); //迭代设置采用缺省值
double tolerance = 0.001;
CalculateCubeRoot(x, K, tolerance);//设置迭代精度,但迭代步骤用缺省值
int maxIteration = 50;
CalculateCubeRoot(x, K, tolerance, maxIteration);//设置迭代精度和迭代步骤
return 0;
}
void CalculateCubeRoot(double& x, double K, double tolerance = 1.0e-6, int maxIteration = 100)
{
int iterations = 0;
double residual = x*x*x - K;
while ((fabs(residual) > tolerance) && (iterations < maxIteration))
{
x = x - (x*x*x - K)/(3.0*x*x);
residual = x*x*x - K;
iterations++;
}
}