资源描述:
《工程常用算法作业第一次.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《工程常用算法》综合实践作业一作业名称:非线性方程求根完成日期:2016年3月28组号:52班级学号姓名主要工作说明自评成绩辛超俊设计算法,编写程序A张宁用Visio软件绘制流程图作业题目:已知方程,请分别用二分法、牛顿法和割线法求此方程的根。误差限取:。注意先确定出方程的有根区间程序框图:牛顿法:二分法:割线法:牛顿法源程序:#include#include#includedoubleNextNumber(doublea)//产生下一个数{returna-(a*a*a+2*a*a-exp(a))/(3*a*a+4*a);
2、}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",i,a,fx);while(fabs(a-b)>ex&&fx!=0){i++;a=b;b=NextNumber(a);fx=func(b);printf("第%2d次X=%.12ff(
3、x)=%.12f",i,a,fx);}getchar();}牛顿法运行结果:二分法源程序:#include#include#includedoublefunc(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=
4、(a+b)/2.0;fx=func(c);printf("第%2d次X=%.12ff(x)=%.12f",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",i,c,fx);break;}else{if(fx>0)b=c;elsea=c;printf("第%2d次X=%.12ff(x)=%.12f",i,c,fx);}}getchar();}}二分法运行结果:割线法源程序:#include#i
5、nclude#includedoublefunc(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=N
6、extNumber(b,a);//fx=func(c);printf("第%d次X=%.12ff(x)=%.12f",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",i,c,fx);}getchar();}割线法运行结果: