用牛顿迭代法非线性方程的实根
用牛顿迭代法求f(x)=x-e^(-x)=0在区间[0,1]内的根,输出每次的迭代结果并统计所用的迭代次数,取精度e=0.00001,x0=0.5
#include<stdio.h>
#include<math.h>
float
f(float x);
float
df(float x);
#define
Max 1000
void
main()
{
float x0,x1,e;
int k=0;
printf("请分别输入迭代初始值和精确度:");
scanf("%f%f",&x0,&e);
for(;;)
{
if(k>Max)break;
x1=x0-f(x0)/df(x0);
if(fabs(x0-x1)<e)break;
else
{
printf("x0=%f,x1=%f\n",x0,x1);
x0=x1;
}
k++;
}
printf("x0=%f,x1=%f\n",x0,x1);
}
float
f(float x)
{
float y=float(x-exp(-x));
return y;
}
float
df(float x)
{
float y=float(1+exp(-x));
return y;
}