#include <stdio.h>
#include <math.h>
#define MN 10
int RN=1;
double X0[MN],Y0[MN],Z0[MN],X1[MN],ERR[MN];
double A0=0,B0=700,EPS=0.001;
double f(double x){return 100*(-5.775e-7)*x*x+100*(3.9083e-3)*x-213.71;} //y = 100*(-5.775e-7)*x*x+100*(3.9083e-3)*x-213.71
double g(double x){return 200*(-5.775e-7)*x+100*(3.9083e-3);} //y' = 200*(-5.775e-7)*x+100*(3.9083e-3)
int NEWTON()
{
int k;
if (f(A0)>0 )
X0[0]=A0;
else
X0[0]=B0;
Y0[0]=f(X0[0]);
Z0[0]=g(X0[0]);
X1[0]=X0[0]-Y0[0]/Z0[0];
ERR[0]=fabs(X1[0]-X0[0]);
for(k=1;k<MN;k++)
{
X0[k]=X1[k-1];
Y0[k]=f(X0[k]);
Z0[k]=g(X0[k]);
X1[k]=X0[k]-Y0[k]/Z0[k];
ERR[k]=fabs(X1[k]-X0[k]);
if(ERR[k]<EPS)break;
}
RN=k+1;
return 0;
}
int ShowTable()
{
int K;
printf("===================================================/n");
printf(" K X0[K] Y0[K] Z0[K] ERR[K] /n");
printf("---------------------------------------------------/n");
for(K=0;K<RN;K++)
printf("/n %2d %10.6f %12.8f %12.8f %12.4e",K,X0[K],Y0[K],Z0[K],ERR[K]);
printf("/n--------------------------------------------------/n");
printf(" 解为=%12.8f",X0[RN-1]);
printf("/n==================================================/n");
return 0;
}
int main()
{
NEWTON();
ShowTable();
return 1;
}