《计算方法与实习》课程论文模版【DOC精选】.docVIP

  • 1
  • 0
  • 约2.11千字
  • 约 8页
  • 2017-02-16 发布于江苏
  • 举报

《计算方法与实习》课程论文模版【DOC精选】.doc

《计算方法与实习》课程论文模版【DOC精选】

玉林师范学院 数学与信息科学学院 《计算方法与实习》课程论文 (2011—2012学年度第一学期) 姓名: 吴才华 专业: 信息与计算科学 班别: 信计09 年级: 2009级 学号: 200904404136 日期: 2011 年 12 月 30 日 方程求根的二分法 摘 要   传统的二分法的基本思想是:用对分区间的方法根绝分点处函数f(x)值的符号逐步将有根区间缩小,使在足够小的区间内,方程有且仅有一个跟。 通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值每次运算后,区间长度减少一半区间收缩一半的方法 每次运算后,区间长度减少f(x)为[a,b]上的连续函数,若 f(a)·f(b)0,则[a,b]中至少有一个实根。如果f(x)在[a,b]上还是单调递增或递减的,则f(x)=0仅有一个实根。 3.算法模型 直接取区间[a,b]长度的1/4点 (b-a)/4,即用点x=a+(b-a)/4作为问题的近似解,那么我们可以估计出绝对误差限仅为区间长的1/4或是3/4,即e= a+(b-a)/4。如果这个结果能满足精度要求,我们就停止进一步的计算;如果不能,就求出f(x),结果只能是下面三种情况之一: (1) f(a)·f(x)0,此时我们有x*∈[a,x]; (2) f(x)·f(b)0,此时我们有x*∈[x,b]; (3) f(x)=0,此时x即为问题的精确解。 在前两种情况下,我们可以用x分别替换原问题中的b或a,从而把求解的区间减小了一半。这样我们又可以取新区间[a,b]的1/4点。经过N次迭代后,剩下的区间长为(b- a)/4^n 。这也是结果的绝对误差限。如此继续下去就达到是有根区间逐步缩小的目的,在这一些相互包含的子区间中构造收敛的数列来逼近根 。 假设f(x)=0,在区间[a,b]中只有一个根,且满足f(a)f(b)0,则利用二分法构造求根过程为: While(|a-b|eps) x=a+(b-a)/4 计算f(x) 若(|f(x)|eps) 则 x为解 若f(x)*f(b)0 修正区间为[x,b] 若f(a)*f(x)0 修正区间为[a,x] 按上述步骤求根的方法称为二分法,若记做了k次二分区间处理得到的有根区间为, 5. 算法的数值实验结果 例: 求方程f(x)=x^3+x^2-3*x-3=0在1.5附近的根 我们可以取a=1,b=2.因为f(1)*f(2)0,由此我们可以知道该方程在区间[1,2],中有解。C=a+(b-a)/4,运用vc++,我们得到的结果如下: 6、算法的评价与小结 优点:就是不管含根区间[a , b]多大总能求出满足要求的根,且对函数的要求不高,计算简单;且区间[a,b]取得越近越容易求出。 缺点:不能求重根,其收敛速度在数列x越靠近根时越慢。二分法一般常用于为方程提供初始近似值当计算出的近似根比较准确时,再用其他方法对近似根做快速进一步精化 参考文献 附录 # includestdio.h # includemath.h # define eps 5e-6 # define delta 1e-6 float Bisection(float a,float b,float(*f)(float)) { float c,fc,fa=(*f)(a),fb=(*f)(b); int n=1; printf(二分次数\t\tc\t\t f(c)\n); while(1) { if(fa*fb0) {printf(不能用二分法求解);break;} c=a+(b-a)/4,fc=(*f)(c); if(fabs(fc)delta) break; else if(fa*fc0){b=c;fb=fc;} else{a=c;fa=fc;} printf( %d\t\t%f\t\t%f\n,n++,c,fc); } return c; } float f(float x) { return x*x*x+x*x-3*x-3; } void main() { float a=1,b=2;

文档评论(0)

1亿VIP精品文档

相关文档