您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 工程常用算法作业第一次
《工程常用算法》综合实践作业一作业名称:非线性方程求根完成日期:2016年3月28组号:52班级学号姓名主要工作说明自评成绩201307142013071421辛超俊设计算法,编写程序A201307142013071524张宁用Visio软件绘制流程图作业题目:已知方程xexxy232,请分别用二分法、牛顿法和割线法求此方程的根。误差限取:1210。注意先确定出方程的有根区间程序框图:牛顿法:开始a,b,fx,I,ex|b-a|ex或fx!=0Ya=b;b=NextNumber(a);fx=func(b);输出aN结束二分法:开始a,b,c,fx,ex(b-a)exYc=(a+b)/2F(c)!=0YF(c)0Yb=ca=c;Nb=c;输出bN结束割线法:开始a,b,c,ex,fx,i|b-c|ex与fx!=0a=b;b=c;c=b-f(b)*(b-a)/(f(b)-f(a));fx=f(c);输出cc=b-f(b)*(b-a)/(f(b)-f(a));fx=f(c);YN结束牛顿法源程序:#includestdio.h#includemath.h#includestring.hdoubleNextNumber(doublea)//产生下一个数{returna-(a*a*a+2*a*a-exp(a))/(3*a*a+4*a);}doublefunc(doublex)//原函数{returnx*x*x+2*x*x-exp(x);}voidmain(){doublea=1;//A(k)inti=1;doublefx=0;doubleb=NextNumber(1);//A(k+1)doubleex=pow(10.0,-12);//精度fx=func(b);printf(第%2d次X=%.12ff(x)=%.12f\n,i,a,fx);while(fabs(a-b)ex&&fx!=0){i++;a=b;b=NextNumber(a);fx=func(b);printf(第%2d次X=%.12ff(x)=%.12f\n,i,a,fx);}getchar();}牛顿法运行结果:二分法源程序:#includestdio.h#includemath.h#includestring.hdoublefunc(doublex)//原函数{returnx*x*x+2*x*x-exp(x);}/*输入参数:区间[a,b]、区间精度ex、函数精度ey*/voidmain(void){doublea=0;//前一个数doubleb=5;//后一个数doublec=0;//中间的数doublefx=0;//函数结果inti=1;doubleex=pow(10.0,-12);c=(a+b)/2.0;fx=func(c);printf(第%2d次X=%.12ff(x)=%.12f\n,i,c,fx);while((b-a)ex&&fx!=0){i++;c=(a+b)/2.0;fx=func(c);if(fx==0){b=c;printf(第%2d次X=%.12ff(x)=%.12f\n,i,c,fx);break;}else{if(fx0)b=c;elsea=c;printf(第%2d次X=%.12ff(x)=%.12f\n,i,c,fx);}}getchar();}}二分法运行结果:割线法源程序:#includestdio.h#includemath.h#includestring.hdoublefunc(doublex)//原函数{returnx*x*x+2*x*x-exp(x);}doubleNextNumber(doublea,doubleb)//产生下一个数{doublefx=b-func(b)*(b-a)/(func(b)-func(a));returnfx;}voidmain(){doublea=0;//A(k-1)doubleb=3.0;//A(k)inti=1;doublec=0;//A(k+1)doubleex=pow(10.0,-12);//精度doublefx=0;c=NextNumber(b,a);//fx=func(c);printf(第%d次X=%.12ff(x)=%.12f\n,i,c,fx);while(fabs(c-b)ex&&fx!=0){i++;a=b;b=c;c=NextNumber(a,b);fx=func(c);printf(第%d次X=%.12ff(x)=%.12f\n,i,c,fx);}getchar();}割线法运行结果:
本文标题:工程常用算法作业第一次
链接地址:https://www.777doc.com/doc-2444410 .html