欢迎来到天天文库
浏览记录
ID:38699897
大小:54.50 KB
页数:5页
时间:2019-06-17
《数值方法实验报告模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、石家庄经济学院实验报告(学院)系:信息工程学院专业:计算机科学与技术姓名:唐利班级:4051090301学号:405109010614任课教师:《数值分析》实验报告姓名唐利学号405109010614日期2007.10.203-4节实验室计算机软件技术实验室(560机房)设备编号55实验题目实验一二分法和牛顿法求非线性方程组的根一实验目的掌握二分法和牛顿法的基本思想,编程实现二分法和牛顿法求解非线性方程组的根。二实验内容1、用二分法求方程x*x-x-1=0的正根,要求精确到小数点后一位。(C语言)l计算公式f(ak)*f(bk)<0;bk-ak=1/2k-1*(b-a);a1<=a2
2、<=…<=ak<=…,b1<=b2<=…<=bk<=…。l算法分析首先要判断区间是否是有根区间。如果不是就退出程序,并显示[a,b]不是有根区间。当满足f(a)*f(b)<0时就继续执行,取x=(a+b)/2。之后进一步判断有根区间的存在范围。若f(a)*f(x)<0则根在[a,x]中,若f(x)=0表明x就是根。否则根在[x,b]区间内,依次循环直到找到满足要求的根为止。同时还要受到精度的限制采用while循环来实现。l源程序#include#include#includedoublert(doublex)--计算方程结果的
3、函数rt{doubles;s=x*x-x-1;returns;}voidmain(){doublea,b,x,ai,bi,t;doubleresult,count=1;cout<<"请输入根的区间[a,b]"<>a>>b;result=rt(a)*rt(b);if(a0.000005){x=(a+b)/2;count=(b-a)/2;t=rt(x);ai=rt(a);bi=rt(b);if(t==0)break;else{if(t*bi>0)b=x;elsea=x;}}}elsecout<<"输入的区间不正确!"
4、<5、1)=x(k)/2+3/(2*x(k));%将值代入牛顿计算公式if(abs(x(k+1)-x(k))<=a)%当小于精度时跳出循环break;Endendx(k+1)l实验结果l实验结果讨论和分析的值四位有效数字为1.732,通过牛顿法计算出来得结果为1.7321,可见牛顿法得精确度很高,且在单根附近收敛速度很快。三本次实验总结本次实验主要采用二分法和牛顿法来实现求非线性方程的根。求非线性方程的根的方法有很多种,比如二分法、牛顿法、迭代法,它们各有优缺点。比如二分法优点是程序简单,对函数的要求不高,收敛性好。但是收敛速度不快,对偶重根无法求解,也无法求复根。并且每次仅可以求一次根。6、因此出现了对它的改进有试位法。而牛顿法也可以求根。对于这次实验采用二分法求想x*x-1-x=0的根,主要采用的输入参数有区间边界值a,b和精度c,另外输出参数是根x。在程序中用到了循环while,选择if和基本的输入输出函数等。本次实验主要收获是:1.进一步掌握了二分法和牛顿法的思想。对于二分法即首先要判断区间是否是有根区间。如果不是就退出并显示[a,b]不是有根区间。当满足f(a)*f(b)<0时就继续执行,取中点x=(a+b)/2判断有根区间的存在范围。若f(a)*f(x)<0则根在[a,x]中,若f(x)=0表明x就是根。否则根在[x,b]区间内,依次循环直到找到满足要求的根为7、止;对于牛顿法要选取好的方程,根据牛顿迭代公式很快得到较好的解。2.在函数退出的时候要恰当,最初我在不是有根区间的时候并没有加上break语句来退出循环,而导致进入了死循环。以后编写程序要想的全面点。3.二分法只能求到一个根,并且速度比较慢,因此它并不是最好的方法。牛顿法在单根附近收敛速度比较快。四教师评语
5、1)=x(k)/2+3/(2*x(k));%将值代入牛顿计算公式if(abs(x(k+1)-x(k))<=a)%当小于精度时跳出循环break;Endendx(k+1)l实验结果l实验结果讨论和分析的值四位有效数字为1.732,通过牛顿法计算出来得结果为1.7321,可见牛顿法得精确度很高,且在单根附近收敛速度很快。三本次实验总结本次实验主要采用二分法和牛顿法来实现求非线性方程的根。求非线性方程的根的方法有很多种,比如二分法、牛顿法、迭代法,它们各有优缺点。比如二分法优点是程序简单,对函数的要求不高,收敛性好。但是收敛速度不快,对偶重根无法求解,也无法求复根。并且每次仅可以求一次根。
6、因此出现了对它的改进有试位法。而牛顿法也可以求根。对于这次实验采用二分法求想x*x-1-x=0的根,主要采用的输入参数有区间边界值a,b和精度c,另外输出参数是根x。在程序中用到了循环while,选择if和基本的输入输出函数等。本次实验主要收获是:1.进一步掌握了二分法和牛顿法的思想。对于二分法即首先要判断区间是否是有根区间。如果不是就退出并显示[a,b]不是有根区间。当满足f(a)*f(b)<0时就继续执行,取中点x=(a+b)/2判断有根区间的存在范围。若f(a)*f(x)<0则根在[a,x]中,若f(x)=0表明x就是根。否则根在[x,b]区间内,依次循环直到找到满足要求的根为
7、止;对于牛顿法要选取好的方程,根据牛顿迭代公式很快得到较好的解。2.在函数退出的时候要恰当,最初我在不是有根区间的时候并没有加上break语句来退出循环,而导致进入了死循环。以后编写程序要想的全面点。3.二分法只能求到一个根,并且速度比较慢,因此它并不是最好的方法。牛顿法在单根附近收敛速度比较快。四教师评语
此文档下载收益归作者所有