《工程常用算法》综合实践作业一作业名称:非线性方程求根完成日期:2015年05月30日班级学号姓名主要工作说明自评成绩编写程序A排版,及总结绘制流程图题目:已知方程xexxy232,请分别用二分法、牛顿法和割线法求此方程的根。误差限取:1210。注意先确定出方程的有根区间。(初步确定有根区间为[0,1])二、程序流程图开始a,b,εx=(a+b)/2b=xa=x结束(a-b)/2ε是否f(a)*f(x)0是否输出x二分法开始x0,εX1=x0-f(x0)/fd(x0)输出x1值x0=x1结束是|f(x1)|ε否牛顿法开始x0,x1,εX2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0))输出x2值X0=x1X1=x2结束|f(x2)|ε否是割线法三、完整的程序及简要的注释/******************程序一*****************//******************二分法****************/#includestdio.h#includemath.hvoidmain(){doublea=0,b=1,x,fx,fa;//初始区间为[0,1]intk=0;printf(二分法:\n初始区间为:[0,1]\n);while(((b-a)/2)pow(10,-12))//终止条件{x=(a+b)/2;fx=x*x*x+2*x*x-exp(x);fa=a*a*a+2*a*a-exp(a);if(fa*fx0)b=x;//变换区间elsea=x;k++;printf(k=%-3dx=%-.13ff(x)=%.13f\n,k,x,fx);//输出次数,x值和函数值}getchar();//保持命令窗口始终打开}/********************程序二*************//********************牛顿法************/#includestdio.h#includemath.hvoidmain(){doublex0=0,x1,fx,fd,fx1,e=pow(10,-12);//初始点为x0=0intk=0;printf(牛顿法:\n初始点为x0=0\n);while(1){fx=x0*x0*x0+2*x0*x0-exp(x0);//计算x0处的函数值fd=3*x0*x0+4*x0-exp(x0);//计算x0处的导数值x1=x0-fx/fd;fx1=x1*x1*x1+2*x1*x1-exp(x1);k++;printf(k=%-3dx1=%-.13ff(x)=%-.13f\n,k,x1,fx1);//格式输出,x1和f(x)小数点后显示13位if(fabs(fx1)e)break;//如果满足精度要求,跳出循环x0=x1;}getchar();//保持命令窗口始终打开}/*****************程序三*************//*****************割线法*************/#includestdio.h#includemath.hvoidmain(){doublex0=1,x1=2,x2,fx0,fx1,fx2,fd,e=pow(10,-12);//初始点为x0=1,x1=2intk=0;printf(割线法:\n初始点:x0=1,x1=2\n);while(1){fx0=x0*x0*x0+2*x0*x0-exp(x0);//计算x0处函数值fx1=x1*x1*x1+2*x1*x1-exp(x1);//计算x1处函数值fd=(fx1-fx0)/(x1-x0);//用割线斜率代替切线斜率x2=x1-fx1/fd;//计算下一个迭代点fx2=x2*x2*x2+2*x2*x2-exp(x2);k++;printf(k=%-3dx=%-.13ff(x)=%-.13f\n,k,x2,fx2);//控制格式输出,x和f(x)小数点后显示13位if(fabs(fx2)e)break;//满足精度要求,跳出循环x0=x1;//交换坐标x1=x2;}getchar();//保持命令窗口始终打开}四、程序运行结果【以下部分是手写的部分】五、对不同实现方法的运行结果进行比较六、问题与总结一、计算公式及计算方法