问题:牛顿法求最优解,本质上就是求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;
}