一个求实数立方根的C语言函数(牛顿迭代法)
时间:2011-04-10 来源:邵国宝
已知利用牛顿迭代法求方程F(x)=0的解的公式为X[n+1] = X[n] - F(X[n])/F'(X[n]),其中x[n]为第n次利用此公式求得值。
假如函数F(X) = X*X*X + a, 则根据牛顿迭代法第n+1次求方程F(x) = 0的解为X[n+1], 且X[n+1] = X[n] - (X[n]*X[n]*X[n]+a)/3*X[n]*X[n]。
利用C语言实现求一个实数立方根的代码如下:
// -- cuberoot.c -- 求一个实数的立方根 typedef enum Boolean{FALSE, TRUE}Boolean; /* 函数: double CubeRoot(double) 功能: 求解一个数的立方根 算法: 牛顿法 使用: 输入一个实数,输出输入实数的立方根 */ double CubeRoot(const double stuff) { const double precision = 0.00001; /* 精度 */ double nextX, currentX; double squareX; /* 当前值 的平方 */ double cubeX; /* 下个解 的立方 */ Boolean flag; currentX = stuff; /* 初始化当前的值为X */ if (stuff == 0) { return stuff; } else { do { squareX = currentX * currentX; nextX = (2*currentX + stuff/squareX) / 3; /* 牛顿迭代公式 */ cubeX = nextX*nextX*nextX; if ( (cubeX - stuff < precision) && (cubeX - stuff > -precision)) { flag = TRUE; } else { flag = FALSE; currentX = nextX; } }while(flag == FALSE); } return nextX; }
相关阅读 更多 +