牛顿迭代法的程序实现例题———c——新人文

我们先来讲述牛顿迭代法的原理。

假设xk是f(x)的一个近似根,将f(x)在x处展开的多项式可表示为

f(x)=f(xk)+f’(xk)*(x-xk)+f’’(xk)*(x-xk)^2/2!+……

此处简便计算 ,以前两项近似代替f(x),则近似方程为

f(x)=f(xk)+f’(xk)*(x-xk)=0

即x=xk-f(xk)/f’(xk)

假设f(xk)!=0.则令其解为xk+1,                             //这里的k和k+1是下标,这个csdn'的编辑器我不知道怎么打

则有xk+1=xk-f(xk)/f’(xk)

这就是牛顿迭代法的求解方程,我们一直进行这个求解方程,直到 f(xk+1)<=flag。

flag即可理解为精度。

 

题目:   用牛顿迭代法求3X^3+2X^2-4X=6的解。

#include<stdio.h>
#include<math.h>

double f( double x )
{
	return 3*pow(x,3)+2*pow(x,2)-4*x-6;
}

double derivative( double x ) //导数 
{
	return 9*pow(x,2)+4*x-4;
}
int main()
{
	double flag=1E-6,x=5;
	
	while( fabs( f(x) )>=flag ){
		x-=f( x )/derivative( x ); 
	}
	printf("%lf\n",x);
	
	return 0;
}

这里的导数我并不是用程序实现的求导,而是直接将方程的导数写上去的(因为不会,将来有机会再发一篇实现求导的博客)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值