欢迎来到天天文库
浏览记录
ID:30285346
大小:47.50 KB
页数:3页
时间:2018-12-28
《2二分法求解非线性方程的根》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验2二分法求解非线性方程的根计机系041班姓名:刘文杰学号:200410714102【实验内容】1、方法介绍(1)输入区间端点值a、b,步长h,及精度控制量ε1,若
2、f(a)
3、<ε1,则a为原方程的一个近似根,若
4、f(b)
5、<ε1,则b为原方程的一个近似根。(2)以h为步长,将区间[a,b]分为两个等距的小区间[a,c],[c,b]。如果f(a)<0,f(c)>0,则根在[a,c]中,将区间[a,c]再分半,分点为xi,若
6、f(xi)
7、<ε1,则xi是方程的一个根。(3)精度控制,若
8、f(x1)
9、<ε1,则xi是方程的一个根,否则重复(2)。2、
10、使用说明a:实数型,根之上界。b:实数型,根之下界。h:步长,实数型。E:函数的精度,实数型。ary:元素的一维数组,存放计算结果。3、基本原理对于非线性方程,在某个范围内往往有不止一个的根,根的分布情况同时也可很复杂,面对这种情况,通常先将所考察的范围划分成若干子段,然后判断哪些子段内有根,这项手续称作根的隔离。将所求的根隔离开来以后,再在有根子段内找出满足精度要求的近似根。为此适当选取有根子段内某一点作为根的初始近似,然后运用迭代方法使之逐步精确化。程序源代码:#include"stdio.h"#include"math.h"#include"
11、conio.h"#include"iostream.h"doublef(doublex){returnsin(x);}doubledichotomy(doublea1,doubleb1,doubleE){doublec,y,y0;y0=f(a1);do{c=((a1+b1)/2.0);y=f(c);if(y*y0>0)a1=c;elseb1=c;}while((b1-a1)>=E);returnc;}voidmain(){inti,n=0;doubleE,a1,b1,R[20],a,b,h,y1,y2;cout<<"****************
12、*******二分法求解非线性方程的根*****************"<>a;cout<<"b=";cin>>b;cout<<"请输入步长h:"<>h;cout<<"请输入精度控制量E:"<>E;a1=a;b1=a1+h;for(;b1<=b;a1=a1+h,b1=b1+h){y1=f(a1);if(fabs(f(a1))13、chotomy(a1,b1,E);n++;}}if(a114、15、获得满足精度要求的近似根;不过当h缩小时,所要搜索的步数相应增多,从而使计算量增大。因此,如果精度要求比较高,单用这种逐步搜索方法是不切实际。【心得体会】这次实验的难点在根的二分搜索的编程上,由于需要控制步长对所在区间进行划分,循环语句(for语句)嵌套的控制特别重要,如果在其中一个环节中出现控制错误,将会导致运行结果与预计结果出现误差。
13、chotomy(a1,b1,E);n++;}}if(a1
14、15、获得满足精度要求的近似根;不过当h缩小时,所要搜索的步数相应增多,从而使计算量增大。因此,如果精度要求比较高,单用这种逐步搜索方法是不切实际。【心得体会】这次实验的难点在根的二分搜索的编程上,由于需要控制步长对所在区间进行划分,循环语句(for语句)嵌套的控制特别重要,如果在其中一个环节中出现控制错误,将会导致运行结果与预计结果出现误差。
15、获得满足精度要求的近似根;不过当h缩小时,所要搜索的步数相应增多,从而使计算量增大。因此,如果精度要求比较高,单用这种逐步搜索方法是不切实际。【心得体会】这次实验的难点在根的二分搜索的编程上,由于需要控制步长对所在区间进行划分,循环语句(for语句)嵌套的控制特别重要,如果在其中一个环节中出现控制错误,将会导致运行结果与预计结果出现误差。
此文档下载收益归作者所有