非线性方程求根问题.doc

非线性方程求根问题.doc

ID:56718276

大小:54.00 KB

页数:8页

时间:2020-07-05

非线性方程求根问题.doc_第1页
非线性方程求根问题.doc_第2页
非线性方程求根问题.doc_第3页
非线性方程求根问题.doc_第4页
非线性方程求根问题.doc_第5页
资源描述:

《非线性方程求根问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机学院上机实践报告课程名称:数值计算方法B年级:上机实践成绩:指导教师:姓名:上机实践名称:非线性方程求根问题学号:上机实践日期:上机实践编号上机实践时间:一、目的1.通过本实验,帮助加深对非线性方程求根方法的构造过程的理解;2.能将各种方法编写为程序并上机实现;3.比较各种方法在求解同一非线性方程根时,在收敛情况上的差异。二、内容与设计思想1.用二分法求方程f(x)=x3-2x-5=0在区间[2,3]内的根。2.方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,试写出其三种不同的等价形式以

2、构成三种不同的迭代格式,再用简单迭代法求根,观察这三种迭代是否收敛。三、使用环境1.硬件环境微型计算机(Intelx86系列CPU)一台2.软件环境Windows2000/XP操作系统VC++6.0或其它的开发工具。四、核心代码及调试过程1.用二分法求方程f(x)=x3-2x-5=0在区间[2,3]内的根主要代码:voidbisect(doublea,doubleb,intmax_B){doubleroot,ya,yb,yroot;inti,actual_B;ya=f(a);yb=f(b);if(ya*yb>0)

3、{printf("methodfailed!");exit(0);}for(i=1;i<=max_B;i++){root=(a+b)/2;yroot=f(root);//取当前含根区间的中点if(yroot==0){a=root;b=root;}elseif(yb*yroot>0)//取含根区间为[a,(a+b)/2]{b=root;yb=yroot;}Else//取含根区间为[(a+b)/2,b]{a=root;ya=yroot;}if(fabs(b-a)

4、root=f(root);actual_B=i;printf("root=%10.6lftf(root)=%10.6etatual_B=%d",root,yroot,actual_B);}结果:2.迭代格式分别为:x=2/19*x*x*x-5/19*x*x+42/19x=sqrt(2/5*x*x*x-19/5*x+42/5);x=(5/2*x*x+19/2*x-21)^(1/3)主要代码:doubleg(doublex){return(pow((2.0/19.0*x*x*x-5/19*x*x+42/19)

5、,1.0));/*定义迭代函数*/}voiditerate(doublea,doubleb,doublex0,intmax_D){intk=1;doublex1;while(k<=max_D){x1=g(x0);/*迭代计算*/if((x1

6、

7、(x1>b)){printf("re_selectaproperinitialvaluex0!");exit(0);}if(fabs(x1-x0)

8、t=%10.6lf",x1);break;}x0=x1;k++;/*x0的值被更新,累加迭代次数*/}printf("iterationtimes=%d",k);/*输出实际迭代次数*/if(k>max_D)printf("methodfailed!");}intmain(){doublea=2.0,b=3.0,x0=(a+b)/2.0;intmax_D=50;iterate(a,b,x0,max_D);}前两种迭代结果:第三种:输入数据时应注意数据的类型,否则程序会报错。五、总结1、两道题结果值均是

9、7为有效数字,精度较高,计算次数较少。2、写程序时应注意数字的类型。六、附录代码:1——1#include#include#include#defineEPS0.000001doublef(doublex){return(x*x*x-2*x-5);}voidbisect(doublea,doubleb,intmax_B){doubleroot,ya,yb,yroot;inti,actual_B;ya=f(a);yb=f(b);if(ya*yb>0){print

10、f("methodfailed!");exit(0);}for(i=1;i<=max_B;i++){root=(a+b)/2;yroot=f(root);if(yroot==0){a=root;b=root;}elseif(yb*yroot>0){b=root;yb=yroot;}else{a=root;ya=yroot;}if(fabs(b-a)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。