【c语言趣味编程100例】牛顿迭代法c

问题:牛顿法求最优解,本质上就是求f(x)=0的过程,求某个点的方根,本质上是求x^n-m=0的过程,如求f(x)=x^2,当f(x)=3,求x的最优解,就是求x^2-3=0的x的解。 
牛顿迭代法求方程的根。 

#include<stdio.h>
#include<math.h>
void main(){
	float solution(float ,float ,float,float );
	float a,b,c,d,x;
	printf("请输入方程的系数");
	scanf("%f %f %f %f",&a,&b,&c,&d);
	x  = solution(a,b,c,d);
	printf("方程的根是:x=%f",x);

}
//计算值
float solution(float a,float b,float c,float d){
	
	float x0,x = 1.5,f,fd,h;
	do{
		x0=x;
		f = a*x0*x0*x0+b*x0*x0+c*x0+d;
		fd = 3*a*x0*x0+2*b*x0+c;
		h = f/fd;
		x = x0-h;


	}while(fabs(x-x0)>=1e-5);
	return x;
}

 

posted @ 2018-12-30 23:05  qxlxi  阅读(423)  评论(0编辑  收藏  举报