欢迎来到天天文库
浏览记录
ID:11869336
大小:110.00 KB
页数:4页
时间:2018-07-14
《实验3非线性方程求根问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、西华大学计算机系学生上机实践报告西华数学与计算机学院上机实践报告课程名称:数值计算方法A年级:2009级上机实践成绩:指导教师:严常龙姓名:刘晨上机实践名称:非线性方程求根问题学号:312009070102201上机实践日期:2011-11-13上机实践编号:1上机实践时间:14:00—15:40一、目的1.通过本实验的编程练习,加深对非线性方程求根方法之二分法、简单迭代法、牛顿迭代法等的构造过程的理解;2.能将各种方法的算法描述正确地改编为程序并上机实现;3.比较各种方法在求解同一非线性方程根时,在收敛情况上的差异
2、。二、内容与设计思想自选求根问题,分别用二分法、简单迭代法、埃特金加速收敛法和牛顿迭代法求解其根,然后完成编程作业(注意把同一求根问题的几种不同方法放在一个程序之内)。以下求根问题供参考和选择,也可自行选择其他求根问题:1.用二分法求方程f(x)=x3-2x-5=0在区间[2,3]内的根。2.方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,试写出其三种不同的等价形式以构成三种不同的迭代格式,再用简单迭代法求根,观察这三种迭代是否收敛及收敛的快慢。3.用牛顿迭代法求方程f(x)=x3+2x2+10x
3、-20=0在区间[1,1.5]上的根。4.Cosx=x在区间[0,p/2]上的根。三、使用环境操作系统:windowsXP软件环境:VC四、核心代码及调试过程二分法:voiderfen(doublea,doubleb){intk=0;doublec,fa,fb,fc;fa=f(a);fb=f(b);if((fa*fb)<0){for(k=1;k0){a=c;fa=fc;第4页共4页西华大学计算机系学生上机实践报告printf("迭代第%d次数:
4、",k);printf("tc=%lf",c);}else{b=c;fb=fc;printf("迭代第%d次数:",k);printf("tc=%lf",c);}if(fabs(b-a)=N)printf("迭代次数已达上界,迭代不收敛。");}elseprintf("不能使用二分法求解。");}运行结果:牛顿法:voidNewton(doublea,doubleb,doublex0)//牛顿法{intk;doublex;for(k=1;k5、-f2(x0)/f3(x0);if(x6、7、x>b){printf("请另选初值。");break;}if(fabs(x-x0)=N)printf("迭代次数已达上界,迭代不收敛。");}运行结果:简单迭代法:voiditerate(doublea,doubleb,doublex0)//简单迭代{intk;doublex;for(k=18、;k9、10、(x>b)){printf("请另选初值。");break;}if(fabs(x-x0)=N)printf("迭代次数已达上界,迭代不收敛。");}运行结果:第4页共4页西华大学计算机系学生上机实践报告五、总结此次试验是利用二分法、简单迭代法、牛顿迭代法对方程进行迭代求解,此次编程还比较简单,上手还比较容易,此次试验让我更加11、了解了二分法、简单迭代法、牛顿迭代法求解的过程,对做题的方法也更加深刻和明确。六、附录方程:doublef1(doublem)//二分法的函数{doubley;y=m*m*m-2*m-5;return(y);}doublef2(doublem)//牛顿法函数{doubley;y=m*m*m+2*m*m+10*m-20;return(y);}doublef3(doublem)//牛顿法一阶倒的函数{doubley;y=3*m*m+4*m+10;return(y);}doublef4(doublem)//简单迭代的迭代函12、数{doubley;y=pow((2.0*m+5.0),1.0/3.0);return(y);}第4页共4页
5、-f2(x0)/f3(x0);if(x6、7、x>b){printf("请另选初值。");break;}if(fabs(x-x0)=N)printf("迭代次数已达上界,迭代不收敛。");}运行结果:简单迭代法:voiditerate(doublea,doubleb,doublex0)//简单迭代{intk;doublex;for(k=18、;k9、10、(x>b)){printf("请另选初值。");break;}if(fabs(x-x0)=N)printf("迭代次数已达上界,迭代不收敛。");}运行结果:第4页共4页西华大学计算机系学生上机实践报告五、总结此次试验是利用二分法、简单迭代法、牛顿迭代法对方程进行迭代求解,此次编程还比较简单,上手还比较容易,此次试验让我更加11、了解了二分法、简单迭代法、牛顿迭代法求解的过程,对做题的方法也更加深刻和明确。六、附录方程:doublef1(doublem)//二分法的函数{doubley;y=m*m*m-2*m-5;return(y);}doublef2(doublem)//牛顿法函数{doubley;y=m*m*m+2*m*m+10*m-20;return(y);}doublef3(doublem)//牛顿法一阶倒的函数{doubley;y=3*m*m+4*m+10;return(y);}doublef4(doublem)//简单迭代的迭代函12、数{doubley;y=pow((2.0*m+5.0),1.0/3.0);return(y);}第4页共4页
6、
7、x>b){printf("请另选初值。");break;}if(fabs(x-x0)=N)printf("迭代次数已达上界,迭代不收敛。");}运行结果:简单迭代法:voiditerate(doublea,doubleb,doublex0)//简单迭代{intk;doublex;for(k=1
8、;k9、10、(x>b)){printf("请另选初值。");break;}if(fabs(x-x0)=N)printf("迭代次数已达上界,迭代不收敛。");}运行结果:第4页共4页西华大学计算机系学生上机实践报告五、总结此次试验是利用二分法、简单迭代法、牛顿迭代法对方程进行迭代求解,此次编程还比较简单,上手还比较容易,此次试验让我更加11、了解了二分法、简单迭代法、牛顿迭代法求解的过程,对做题的方法也更加深刻和明确。六、附录方程:doublef1(doublem)//二分法的函数{doubley;y=m*m*m-2*m-5;return(y);}doublef2(doublem)//牛顿法函数{doubley;y=m*m*m+2*m*m+10*m-20;return(y);}doublef3(doublem)//牛顿法一阶倒的函数{doubley;y=3*m*m+4*m+10;return(y);}doublef4(doublem)//简单迭代的迭代函12、数{doubley;y=pow((2.0*m+5.0),1.0/3.0);return(y);}第4页共4页
9、
10、(x>b)){printf("请另选初值。");break;}if(fabs(x-x0)=N)printf("迭代次数已达上界,迭代不收敛。");}运行结果:第4页共4页西华大学计算机系学生上机实践报告五、总结此次试验是利用二分法、简单迭代法、牛顿迭代法对方程进行迭代求解,此次编程还比较简单,上手还比较容易,此次试验让我更加
11、了解了二分法、简单迭代法、牛顿迭代法求解的过程,对做题的方法也更加深刻和明确。六、附录方程:doublef1(doublem)//二分法的函数{doubley;y=m*m*m-2*m-5;return(y);}doublef2(doublem)//牛顿法函数{doubley;y=m*m*m+2*m*m+10*m-20;return(y);}doublef3(doublem)//牛顿法一阶倒的函数{doubley;y=3*m*m+4*m+10;return(y);}doublef4(doublem)//简单迭代的迭代函
12、数{doubley;y=pow((2.0*m+5.0),1.0/3.0);return(y);}第4页共4页
此文档下载收益归作者所有