文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一个求实数立方根的C语言函数(牛顿迭代法)

一个求实数立方根的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;
}
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载