一个求实数立方根的C语言函数(牛顿迭代法)

本文介绍了一种使用C语言实现的牛顿迭代法求解实数立方根的方法。通过具体的代码示例,详细展示了如何利用牛顿迭代公式逐步逼近目标解,并确保计算精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已知利用牛顿迭代法求方程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;
}

转载于:https://www.cnblogs.com/shaoguobao/archive/2011/04/10/2011259.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值