用牛顿迭代法非线性方程的实根
用牛顿迭代法求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; }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081