如何计算根号之牛顿迭代法

本文介绍了一种使用牛顿迭代法计算平方根的方法,通过C语言代码实现了对任意正数求根号的计算过程,精度可控制到小数点后几位。文章通过实例详细解释了牛顿迭代法的基本原理及其在实际编程中的应用。

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

之前上课时,老师提出了一个问题,在不借助自带函数的情况下,如何使用数学方法计算带根号的数字,并将其精确到小数点后3位,而最近正好阅读到了牛顿迭代法相关的内容,废话不多说,开始。

而牛顿迭代法的精华就是下列公式,这里不多介绍数学上的原理,而注重于实现

举个例子,假设有一个函数为y = x*x -5,要找到x最其根值,即令y=0,从而求出x为正负根号5,

那么如何让根号5精度到小数点后几位就是要处理的问题

计算如下:

代码如下

#include <stdio.h>
#include<math.h>
double func1(double x)
{
	return x*x - 5.0;
}
double func2(double x)
{
	return 2*x;
}
int Newton(double *input,int k,double precision)
{
	double x1,x0;
	int num;
	x0 = *input;
	
	for(num=0;num<=k;num++)
	{
		if(func1(x0) == 0.0)
			return 0;
		x1 = x0- func1(x0)/func2(x0);
		if(fabs(x1-x0) < precision || fabs(func1(x0) < precision))
		{
			*input = x1;
			return 1;
		}
		else
		{
			x0 = x1;
		}
		printf("%lf\n",x1);
	}
	return 0;
}
int main(void)
{
    //precision为精度,input为初值,k为迭代的次数
	double input,precision = 0.01;
	int k = 20;
	scanf("%lf",&input);
	Newton(&input,k,precision); 
	printf("value:%lf",input);
		
} 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值