实验一 用二分法求方程的根

实验一 用二分法求方程的根
实验一 用二分法求方程的根

实验一 二分法求方程的根

一、实验题目

用二分法求方程的根

二、实验目的和意义

1、学习二分法求方程根的理论

2、利用该理论能够构造求解该类典型问题数值解的算

3、编程上机实现算法,在上机过程中加强对算法的理

4、应用算法去解决具体的非线性方程的求根问题

5、通过编程练习提高学生的程序设计能力。

三、实验要求

利用C 编写二分法的程序并利用编好的程序求解非线性方程f(x)=0在区间[a,b]上的所有单重实根。使误差不超过规定的要求。

1、根据算法理论编程,从a 开始以—个基本步长h 分隔,若一步前后的函数值yo 与y1等于零,则此小区问中必有一个实根。把这个根的小区间记为[a,b],计算f((a+b)/2)且比较y0,也能选出一个函数值异号的区间[a2,b2]。再计算f((a2+b2)/2)且与y0比较,又能选出一个函数值异号的区间[a3,b3]。重复上述二分法区间的过程,直到区间的最小长度小于给定的精度要求,则认为求得一个根;求出一个根后继续分隔,重复上述过程,直到求出[a,b]中全部实根为止。

2、利用已编程序解决实际问题

四、实验问题提出

对于给定的方程02010)(3=-+=x x x f ,试用二分法求在区间)2,1(之间的根,要求精度610-=ε。

五、实验源代码

六、实验结果

Root=

七、实验结果分析

1、算法简单直观,收敛性总能得到保证

2、不能求重根,计算速度较慢

用区间二分法求方程的根

用区间二分法求方程的根 一、前言 1.了解区间二分法求解方程基本方法。 2.学习掌握区间二分法求解方程根的过程。 3.学习掌握MATLAB软件有关的命令。 二、参数说明 function root=HalfInterval(f,a,b,eps) 方程表达式:f 区间左端点:a 区间右端点:b 根的精度:eps 求得的根:root 三、算法设计和运行结果 1.算法设计 ①计算函数f(x)在区间[a,b]中点的函数值f((a+b)/2),并做下面的判断:如果f(a)f((a+b)/2)<0,转到②; 如果f(a)f((a+b)/2)>0,令a=(a+b)/2,转到①; 如果f(a)f((a+b)/2)=0,则x=(a+b)/2为一个根。 ②如果|a-(a+b)/2|

if (f1==0) root=a; end if (f2==0) root=b; end if (f1*f2>0) disp('两端点函数值乘积大于0!'); return; else root=FindRoots(f,a,b,eps); %调用求解子程序end function r=FindRoots(f,a,b,eps) f_1=subs(sym(f),findsym(sym(f)),a); f_2=subs(sym(f),findsym(sym(f)),b); mf=subs(sym(f),findsym(sym(f)),(a+b)/2); %中点函数值 if (f_1*mf>0) t=(a+b)/2; r=FindRoots(f,t,b,eps); %右递归 else if (f_1*mf==0) r=(a+b)/2; else if (abs(b-a)<=eps) r=(b+3*a)/4; %输出根 else s=(a+b)/2; r=FindRoots(f,a,s,eps); %左递归 end end end

“二分法”求二元方程的解

分法”求二元方程的解 前面说到了用“精确迭代法”求两个数的最大公约数,这里的“二分法”也属于迭代法——近似迭代。另外还有“牛顿迭代”也属于近似迭代。思想:二分法属于数学问题,但为了说清楚问题就再说一下原理。先取二元方程f(x) 的两个初略解x1 和x2 ,若f(x1) 与f(x2) 的符号相反,则方程f(x)=0 在[x1 , x2]区间至少有一个根;若f(x)在[x1 , x2]区间单调,则至少有一个实根;所以取 x3=(x1+x2)/2 ,并在x1 和x2 中舍去和f(x3) 同号者,那么解就在x3和另外那个没有舍去的初略解组成的区间里;如此反复取舍,直到xn 与xn-1 之差满足要求时,那么xn 便是方程f(x) 的近似根。 所以有算法: while( 误差>给定误差) if(f(x)==0) x 就是根,不在迭代; else if(f(x)*f(x1)<0) /* 这里的x 相当于上面所说的x3*/ x2=x; else x1=x; 例:用二分法求方程x2-2-x=0 在[0 ,3]区间的 根。 float f(float x) {return (x*x-x-2);} #include #include main() { float x1=0,x2=3,x,root; //给定 const float err=.5e-5 精度 //求 while(fabs(x1-x2)>err) 根 { if(f(x1)==0) {root=x1;break;} if(f(x2)==0) {root=x2;break;} x=(x1+x2)/2;

二分法及迭代法求解非线性方程根

二分法及迭代法求解非线性方程根 班级:姓名:方学号:日期: 一、实验目的 1、熟悉二分法及迭代法求解非线性方程根的数值算法; 2、用matlab软件实现二分法及迭代法,掌握迭代法的收敛性和收敛速度问 题及其加速方法; 二、基本理论及背景 1、牛顿迭代法具有平方收敛的速度,所以在迭代过程中只要迭代几次就会得到很精确的解。这是牛顿迭代法比简单迭代法优越的地方,但是选定的初值要接近方程的解,否则有可能得不到收敛的结果,再者,牛顿迭代法计算量比较大。因每次迭代除计算函数值外还要计算微商值。 2、牛顿迭代理论推导:设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)- f(x(n))/f'(x(n)),称为r的n+1次近似值; 3、参考《二分法求非线性方程根》,实现二分算法,完成下面的题目: 求方程○1的根,精度至少达到10-6; 比较迭代下列迭代法求解○1中方程根的收敛性: ○2,; 用牛顿法设计迭代函数求解○1中方程的根(精度至少达到10-6),并与○2中收敛的迭代法比较收敛的速度。。 三、算法设计及实现 1、设计:方程○1function f=fun1(x) f=exp(x)-x-3;; ○2function y=Exp2(x) y=exp(x)-3; function y=Exp3(x) y=log(x+3); 牛顿迭代:

用二分法求非线性方程实根

A-1 用二分法求非线性方程实根 本实验用二分法求方程f (x) = x3 ?2x ?5 =0 在区间[2,3]内的根。 源程序: #include #include #include float f(float x) { float a; a=x*x*x-2*x-5; return a; } /*求函数值,如果求其它函数,只需改成其它函数即可*/ main() { float a,b,,e,x; /* a,b 分别表示有根区间的左、右端点, e 是精度要求,x 区间中点值*/ clrscr(); printf(" \n please input data a ="); scanf("%f",&a); printf(" \n please input data b="); scanf("%f",&b); printf("\n please input data eps="); scanf("%f",&e); if(f(a)*f(b)<0) { while(f(x)!=0) { x=(a+b)/2; if(f(x)*f(a)<0) { b=x; if(fabs(b-a)

} else printf("\ not root! afresh input\n"); /*表示[a,b] 区间无根,重新选择有根区间*/ getch(); teturn(x); } 计算结果: please input data a = 2 please input data b = 3 please input data eps= 0.00001 the root of f(x)=0 is x= 2.094555

用二分法求方程的近似解(带练习)

4.5.2用二分法求方程的近似解 1.二分法的概念 对于在区间[a,b]上图象连续不断且f(a)f(b)<0的函数y=f(x),通过不断地把它的零点所在区间一分为二,使所得区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫做二分法. 2.用二分法求函数零点近似值的步骤 给定精确度ε,用二分法求函数y=f(x)零点x0的近似值的一般步骤如下: (1)确定零点x0的初始区间[a,b],验证f(a)f(b)<0. (2)求区间(a,b)的中点__c__. (3)计算f(c),并进一步确定零点所在的区间: ①若f(c)=0(此时x0=c),则__c__就是函数的零点; ②若f(a)f(c)<0(此时x0∈(a,c)),则令b=c; ③若f(c)f(b)<0(此时零点x0∈(c,b)),则令a=c. (4)判断是否达到精确度ε:若|a-b|<ε,则得到零点近似值a(或b);否则重复步骤(2)~(4). 以上步骤可借助口诀记忆:定区间,找中点,中值计算两边看;同号去,异号算,零点落在异号间;周而复始怎么办?精确度上来判断. 1.已知函数f(x)的图象如图,其中零点的个数与可以用二分法求解的零点的个数分别为() A.4,4 B.3,4 C.5,4 D.4,3 D解析:图象与x轴有4个交点,所以零点的个数为4;左右函数值异号的零点有3个,所以可以用二分法求解的零点个数为3,故选D. 2.若函数f(x)在(1,2)内有1个零点,要使零点的近似值满足精确度为0.01,则对区间

(1,2)至少二等分( ) A .5次 B .6次 C .7次 D .8次 C 解析:设对区间(1,2)至少二等分n 次,初始区间长为1. 第1次二等分后区间长为1 2; 第2次二等分后区间长为1 22; 第3次二等分后区间长为1 23; … 第n 次二等分后区间长为1 2n . 根据题意,得1 2n <0.01, ∴n >log 2100. ∵6<log 2100<7, ∴n ≥7. 故对区间(1,2)至少二等分7次. 【例1】下面关于二分法的叙述中,正确的是( ) A .用二分法可求所有函数零点的近似值 B .用二分法求方程的近似解时,可以精确到小数点后的任一位 C .二分法无规律可循,无法在计算机上完成 D .只能用二分法求函数的零点 B 解析:用二分法求函数零点的近似值,需要有端点函数值符号相反的区间,故选项A 错误;二分法是一种程序化的运算,可以在计算机上完成,故选项 C 错误;求函数的零点的方法还有方程法、函数图象法等,故选项 D 错误.故选B.

二分法求方程的根

【例5.21】二分法求方程的根。求方程x3+4x2+x+1=0在[-5,5]之间的近似根,误差为10-4。 若函数有实根,则函数的曲线应和x轴有交点,在根附近的左右区间内,函数的值的符号应当相反。利用这一原理,逐步缩小区间的范围,保持在区间的两个端点处函数值的符号相反,就可以逐步逼近函数的根。 设f (x)在[a, b]上连续,且f (a) f (b)<0, 找使f (x)=0的点。如图5-7-2所示。 图5-7-2 二分法示意图 二分法的步骤如下: ①取区间[a, b]中点x=(a+b)/2。 ②若f (x)=0, 即(a+b)/2为方程的根。 ③否则,若f (x)与f (a)同号,则变区间为[x,b];异号,则变区间为[a,x]。 ④重复①~③各步,直到取到近似根为止。 #include "stdio.h" #include "math.h" main() { float a,b,x; float fa,fb,fx; a=-5; b=5; fa=a*a*a+4*a*a+a+1; fb=b*b*b+4*b*b+b+1; do { x=(a+b)/2; fx=x*x*x+4*x*x+x+1; if(fa*fx<0) { b=x; fb=b*b*b+4*b*b+b+1; } else { a=x; fa=a*a*a+4*a*a+a+1;

} }while(fabs(fa-fb)>1e-4); printf("x=%f\n",(a+b)/2); printf("f(%f)=%f",(a+b)/2,fa); } 运行结果: x=-3.806303 f(-3.806303)=-0.000059 经过多次迭代,当x= -3.806 303时,f(x)的结果为-0.000 059已经接近0,误差小于10- 4数量级。读者可进行简单的改写,输出每一次的迭代结果。

有关二分法计算线性方程根的问题

吉林化工学院 专业: 班级: 学号: 姓名:

有关二分法计算线性方程根的问题 1、二分法求解的提出及其背景 由于实际问题的需要,我们经常需要寻求函数的零点(即的根),对于为一次或二次函数,我们有熟知的公式解法(二次时,称为求根公式).我国古代数学家已比较系统地解决了部分方程求解的问题,在《九章算术》,北宋数学家贾宪的《黄帝九章算法细草》,南宋数学家秦九韶的《数书九章》中均有记载.在十六世纪,已找到了三次和四次函数的求根公式,人们曾经希望得到一般的五次以上代数方程的根式解,但经过长期的努力仍无结果.1824年,挪威年轻数学家阿贝尔(N. H. Abel,1802-1829)成功地证明了五次以上一般方程没有根式解.1828年,法国天才数学家伽罗瓦(E.Galois,1811-1832)巧妙而简洁地证明了存在不能用开方运算求解的具体方程.人们认识到高于4次的代数方程不存在求根公式,因此对于高次多项式函数及其它的一些函数,有必要寻求其零点的近似解的方法,这是一个在计算数学中十分重要的课题。 求解非线性方程的数值解有二分法、迭代法、牛顿—雷扶生方法、正割法和抛物线法。下面我们就来讨论二分法求解非线性方程数值解的问题。 2、在求解过程中需要用到的定理: 1、(1)设f(x)于[a,b]上连续; (2)且f(a)?f(b)<0;

则存在有x*∈(a,b),使f(x*)于(a,b)内存在实的零点。 2、给定方程f(x)=0,设f(x)于[a,b]上连续,且f(a)?f(b)<0,则由二分法产生的序列{x k }收敛于方程f(x)=0的根x*,且具有性质 |x k-x*|≦(b-a)/2k(k=1,2,3,…) 3、二分法的描述: 设有非线性方程f(x=0),其中,f(x)为[a,b]上的连续函数且设f(a)?f(b)<0(不妨设该方程在[a,b]内仅有一个实根)。二分法具体方法如下: 运用上述定理2,设ε>0为给定精度要求,则由|xk-x*|≦(b-a)/2k<ε得半分次数k>[㏑(b-a)-㏑ε]/㏑2. 记a1=a,b1=b; 第一步:k=1,计算x1=(a1+b1)/2及f(x1),如果f(a1)·f(x1)<0则根一定在[ a1,x1]≡[a2,b2]内,否则根一定在区间[x1,b1] ≡[a2,b2]内(若f(x)=0,则x1=x*)。于是到长度缩小一半的含根区间[a2,b2],即f(a2)·f(b2)<0,且b2-a2=1/2(b1-a1) 第k步分半计算:重复上述计算过程,设已完成第1步,…,第k-1步分半计算得到含根区间[a1, b1] ?[a2,b2] ?…?[a k,b k]且满足: (1) f(a k )·f(a k)<0,即x*∈[a k,b k]; (2) b k-a k=1/(2k-1); 现进行第k步分部计算: (3) 计算x k=( a k+ b k)/且有|x k-x*|≦(b-a)/2=1/2k(b-a) (4) 确定新的含根区间[a k+1,b k+1],即如果f(a k)·f(b k)<0,则根一定在

用二分法求方程的近似解-经典例题及答案

例1:利用计算器,求方程0122=--x x 的一个近似解(精确到0.1). 【解】设2()21f x x x =--, 先画出函数图象的简图. (如右图所示) 因为 (2)10,(3)20f f =-<=>, 所以在区间(2,3)内,方程2210x x --=有一解,记为1x .取2与3的平均数2.5,因为 (2.5)0.250f =>, 所以 12 2.5x <<. 再取2与2.5的平均数2.25,因为(2.25)0.43750f =-<, 所以 12.25 2.5x <<. 如此继续下去,得 1(2)0,(3)0(2,3) f f x <>?∈1(2)0,(2.5)0(2,2.5) f f x <>?∈1(2.25)0,(2.5)0(2.25,2.5) f f x <>?∈1(2.375)0,(2.5)0(2.375,2.5) f f x <>?∈1(2.375)0,(2.4375)0(2.375,f f x <>?∈ 2.4375),因为2.375与2.4375精确到0.1的 近似值都为2.4,所以此方程的近似解为 1 2.4x ≈. 利用同样的方法,还可以求出方程的另一个近似解. 点评:①第一步确定零点所在的大致区间),(b a ,可利用函数性质,也可借助计算机或计算器,但尽量取端点为整数的区间,尽量缩短区间长度,通常可确定一个长度为1的区间; 如此列表的优势:计算步数明确,区间长度小于精度时,即为计算的最后一步. 例2:利用计算器,求方程x x -=3lg 的近似解(精确到0.1). 分析:分别画函数lg y x =和3y x =- 的图象,在两个函数图象的交点处,函数值相等.因此,这个程x x -=3lg 的解.由函数lg y x =与 点的横坐标就是方

二分法求解单变量方程matlab

二分法求解单变量方程matlab 1、问题:用二分法求解单变量连续函数f(x)在连续区间[a, b]间的零点。 2、Matlab程序2.1、Matlab脚本文件% 调用二分法函数求解[x, iteration] = Erfen(@myfun, -1, 3)2.2、Matlab函数文件function y = myfun(x)%目标求解函数y = x^2-5; %测试二分法2.3、Matlab函数文件function [x, iteration] = Erfen(f, a, b, tol)% 二分法求解单变量连续函数f(x)在连续区间[a, b]间的零点% 要求f(a)f(b)% iteration = [n x fx a fa b fb]if nargin tol = 1e-4; %设置精度要求endfa = feval_r(f, a); %f(a)的值fb = feval_r(f, b); %f(b)的值iteration = []; %迭代过程记录n = 0; %迭代步数if abs(fa) x = a;return;elseif abs(fb) x = b;return;elseif sign(fa) == sign(fb)error('fa has the same sign with fb'); %a,b同号endwhile abs(b-a) > toln = n + 1; %迭代步数x = a/2 + b/2; %二等分fx = feval_r(f, x);iteration = [iteration; n x fx a fa b fb];if abs(fx) return;elseif sign(fx) == sign(fa)a = x;elseif sign(fx) == sign(fb)b = x;endendend3、运行结果x =2.2361iteration =1.0000 1.0000 -4.0000 -1.0000 -4.0000 3.0000 4.00002.0000 2.0000 -1.0000 1.0000 -4.0000 3.0000 4.00003.0000 2.5000 1.2500 2.0000 -4.0000 3.0000 4.00004.0000 2.2500 0.0625 2.0000 -4.0000 2.5000 4.0000 5.0000 2.1250 -0.4844 2.0000 -4.0000 2.2500

浅谈二分法求方程的近似解的思路与技巧

专业代码:080101 楚雄师范学院 (Chxiong Normal University) 数学系2008级数学与应用数学专业教育实习 教育教学研究论文 实习生姓名茶本卫 学号20081021112 专业数学与应用数学 年级08级 实习单位紫系中学 实习时间2011年10月---11月 楚雄师范学院数学系编制 二0一一年九月二十八日

目录

浅谈二分法求方程的近似解的思路与技巧 摘要:在二分法中,由于不断取中点,区间不断缩小,区间的中点逐渐逼近方程根(或函数零点)的精确值,所以二分法体现了无限逼近的极限思想;二分法本质上又是一种区间迭代的数值算法,渗透了算法思想;二分法还体现了非此即彼的哲学思想,它综合了函数、方程、不等式、数列、极限等多种知识,主要有以下四方面的应用。 关键词:二分法;零点存在定理;精确度

Talking about the dichotomy of ideas and techniques for finding approximate solutions to equations Abstract:Dichotomy, given the access point , shrinking intervals , gradually approaching the midpoint of the interval root of equation ( or function zeros) The exact values , approximation of dichotomy reflects the infinite limit thought ; Dichotomy is essentially an interval iterative numerical algorithms , infiltrated algorithm,Dichotomy is reflected either/or philosophy , which combines functions, equations,inequalities , series, limits, and other knowledge , there are four main areas of application. Keywords:Dchotomy,zero point existence theorem, accuracy.

用二分法求方程的近似解

用二分法求方程的近似解(1) 【教学目标】1.使学生理解利用二分法求方程的近似解的思想方法,会用二分法求某些方程的近似解 2.通过本节内容的学习,让学生体会到在现实世界中,等是相对的,而不等是绝对的,这样可以加深对数学的理解. 【学习指导】我们已经学过一元一次方程、一元二次方程等方程的解法,并掌握了一些方程的求根公式.实际上,大部分方程没有求根公式,那么,这些方程怎么解?学完这一课,你就会知道利用方程的根与函数的零点的关系求方程的实数解(近似解)了. 本节的重点就是利用二分法求方程的近似解,所谓二分法就是:对于在区间[a,b]上连续不断、且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而和到零点近似值的方法. 【例题精析】 例1.借助计算机或计算器,用二分法求函数f(x)= x3-5x2-4x+2的一个零点,精确到0.05. 【分析】先用大范围法寻找零点所在的区间,然后不断使用二分法,逐步缩小区间,直至达到精度的要求. 【解法】先作出x与f(x)的对应值表,并试图找出一个根所在的区间: 通过举值,发现函数在(0,1)与(5,6)内都至少有一个零点,现不妨求(0,1)内的一个零点.

令x1=0.5,f(0.5)= -1.125.因为f(0)·f(0.5)<0,所以零点x0∈(0,0.5).令x2=0.25,f(0.25)≈0.7.因为f(0.25)·f(0.5)<0,所以零点x0∈(0.25,0.5). 令x3=0.375,f(0.375)≈-0.15.因为f(0.375)·f(0.25)<0,所以零点x0∈(0.25,0.375). 令x4=0.3125,f(0.3125)≈0.29.因为f(0.375)·f(0. 3125)<0,所以零点x0∈(0.3125,0.375). 令x5=0.359375,f(0.359375)≈-0.04.因为f(0.359375)·f(0.3125)<0,所以零点x0∈(0.3125,0.359375). 由于|0.359375-0.3125|=0.047<0.05, 此时区间(0.3125,0.359375)的两个端点精确到0.05的近似值都是0.336,所以函数的一个零点为0.336. 【评注】①选好初定区间是使用二分法求近似解的关键.选取初定区间的方法有多种,常用方法有试验估计法,数形结合法,函数单调性法,函数增长速度差异法等等.②本题还有两个零点,你能把它独立求解出来吗?(答案为-1,5.646.) 例2.(师生共同探究)概括用二分法求方程的近似解的基本程序. 【分析】通过对例1的研究,希望能够对解决问题的方法进行提炼,而这一点切不可以由老师包办代替,要通过师生的合作探究解决问题.【解法】(1)在同一坐标系中分别作出两个简单函数的图象,注意两个图象与x轴的交点坐标; (2)估算出第一个解的区间(x1,x2),(x1<x2);

VBA程序:二分法求方程的根

VBA程序:二分法求方程的根 对于一般超越方程与高次代数方程求根的问题,可选用方法简单实用有效的不求导数的二分法,即在给定的寻根区间内,利用步步查找,二分缩小区间的方法,求出全部实根。 二分法求根程序框图见后附件。 主要标识符含义: A,B—方程求根区间的左、右端点[a,b] H—查根间距、跨步长度h EPS—计算精度值,ε= - x A,y A—变化过程中的左端点点值及函数值 x B,Y B—变化过程中的右端点点值及函数值 x C,y C—变化过程中的中点点值及函数值 算例 已知方程式f(x)=x3-6x2+11x-6=0,求方程的根。 给定条件x∈[,],ε=,h=。 迭代求解后,可得到方程的三个实根: x1=1 ? x2=2 x3=3 VBA程序代码 '声明方程求解给定的条件 Dim a As Double, b As Double, h As Double, eps As Double '声明数组,用来放置根 Dim dblRoot() As Double '统计根的个数 , Dim lCount As Long Sub Main() Dim Xa As Double, Ya As Double, Xb As Double, Yb As Double '赋初值 a = b = ( h = eps = Xa = a Xb = a Ya = dblFx(Xa)

Xb = Xb + h If Xb > b Then Exit Sub [ Yb = dblFx(Xb) Call Root(Xa, Ya, Xb, Yb) End Sub Sub Root(Xa1 As Double, Ya1 As Double, Xb1 As Double, Yb1 As Double) If qqqRoot(Ya1, Yb1) Then % Call qRoot(Xa1, Ya1, Xb1, Yb1) Else Xa1 = Xb1 Ya1 = Yb1 Xb1 = Xb1 + h If Xb1 > b Then Exit Sub Yb1 = dblFx(Xb1) '符合求根条件则求根计算,否则继续调整求根区间 " If qqqRoot(Ya1, Yb1) Then Call qRoot(Xa1, Ya1, Xb1, Yb1) Else Call Root(Xa1, Ya1, Xb1, Yb1) End If End If End Sub , '判断是否符合求根条件 Function qqqRoot(dblYa2 As Double, dblYb2 As Double) As Boolean If dblYa2 * dblYb2 <= 0 Then qqqRoot = True Else qqqRoot = False End If End Function : Sub qRoot(dblXa As Double, dblYa As Double, dblXb As Double, dblYb As Double) Dim dblXc As Double, dblYc As Double, dblXd As Double '是否满足条件,不满足继续缩小求根区间 If Abs(dblYa - dblYb) > eps And Abs(dblXa - dblXb) > eps Then

用二分法求方程的近似解-经典例题及答案上课讲义

用二分法求方程的近似解-经典例题及答案

例1:利用计算器,求方程X 2 2x 1 0的一个近似解(精确到0.1) 【解】设f (x) x 2 2x 1, 先画出函数图象的简图.'i (如右 图所示) 丨 因为 ; f(2) 1 0, f (3) 2 0, 所以在区间(2,3)内,方程x 2.5,因为 f (2.5) 0.25 0, 所以 2人 2.5. 再取2与2.5的平均数2.25,因为f(2.25) 0.4375 0, 所以2.25 治 2.5. 如此继续下去,得 f(2) 0, f(3) 人(2,3) f(2) 0, f(2.5) 0 捲(2,2.5) f(2.25) 0, f (2.5) 0 x 1 (2.25, 2.5) f (2.375) 0, f (2.5) 0 x 1 (2.375,2.5) f (2.375) 0, f (2.4375) 0 为(2.375, 2.4375),因为 2.375与 2.4375精确到 0.1的近似值都为2.4,所以此方程的近似解为 洛 2.4 . 利用同样的方法,还可以求出方程的另一个近似解 . 点评:①第一步确定零点所在的大致区间(a,b),可利用函数性质,也可借助计算 机或计算器,但尽量取端点为整数的区间,尽量缩短区间长度,通常可确定一 个长度为1的区间; ②建议列表样式如下: 零点所在 区 间 区间中点函数 值 区间长 度 [2,3] f(2.5) 0 1 [2,2.5] f (2.25) 0 0.5 [2.25,2.5] f (2.375) 0 0.25 [2.375,2.5] f (2.4375) 0.125 如此列表的优势:计算步数明确,区间长度小于精度时,即为计算的最后一 步. 1 0有一解,记为x 1.取2与3的平均数 例 2:利用计算器,求方程lgx 3 x 的近似解(精确到0.1) 1-- 3 4 I I 斗- 3-' 分析:分别画函数y lg x 和y 3 x

二分法非线性方程求解

1、编程实现以下科学计算算法,并举一例应用之(参考书籍《精通MATLAB 科学计算》,王正林等编著,电子工业出版社,2009年) “二分法非线性方程求解” 二分法的具体求解步骤如下。 (1)计算函数f(x)在区间[a,b]中点的函数值f((a+b)/2),并作下面的判断: 如果0)2 () (<+b a f a f ,转到(2); 如果0)2( )(>+b a f a f ,令 2b a a +=,转到(1); 如果 0)2()(=+ b a f a f ,则 2b a x +=为一个跟。 (2)如果 ε<+-|2| b a a (ε为预先给定的精度),则4 3a b x +=为一个根,否则令2 b a b +=,转到(1)。 在MATLAB 中编程实现的二分法函数为:HalfInterval 。 功能:用二分法求函数在某个区间上的一个零点。 调用格式:root=HalfInterval(f,a,b,eps). 其中,f 函数名; a 为区间左端点; b 为区间右端点; eps 为根的精度; root 为求出的函数零点。 二分法的MATLAB 程序代码如下: function root=HalfInterval(f,a,b,eps) %二分法求函数f 在区间[a,b]上的一个零点 %函数名:f %区间左端点:a %区间右端点:b %根的精度:eps %求出的函数零点:root if (nargin==3) eps=1.0e-4;

end f1=subs(sym(f),findsym(sym(f)),a); %两端点的函数值f2=subs(sym(f),findsym(sym(f)),b); if(f1==0) root=a; end if(f2==0) root=b; end if(f1*f2>0) disp('两端点函数值乘积大于0!'); return; else root=FindRoots(f,a,b,eps); %调用求解子程序end function r=FindRoots(f,a,b,eps) f_1=subs(sym(f),findsym(sym(f)),a); f_2=subs(sym(f),findsym(sym(f)),b); mf=subs(sym(f),findsym(sym(f)),(a+b)/2); %中点函数值if(f-1*mf>0) t=(a+b)/2; r=FindRoots(f,t,b,eps); %右递归 else if(f_1*mf==o) r=(a+b)/2; else if(abs(b-a)<=eps) r=(b+3*a)/4; %输出根 else s=(a+b)/2; r=FindRooots(f,a,b,eps); %左递归 end end end 流程图:

二分法方程求解

问题 二分法解决方程求解问题 利用二分法,求方程063422 3=-+-x x x 的实根,精确到两位小数。 分析 二分法是一种典型的迭代问题,前面已经介绍了二分法定义,这里为了便于计算 函数值)(x f 编制函数float function(float x)。在主函数中首先给出了有根区间 ],[b a ,在程序中用[x1,x2]表示。由于不确定函数需要执行的次数,因此使用do-while 循环,循环条件为区间中点的函数值小于6100.1-?,当函数值小于6100.1-?时,近似认为当前的值为方程根。 数据要求 问题中的常量: 1e – 6; 问题的输入: 无 问题的输出: 输出方程的根 设计 初始算法 1 初始化数据 2 使用二分法解方程。 算法细化 步骤2可以进一步细化, 将区间],[b a 分半,取中点2b a +,求)2(b a f +,若δ<+)2 (b a f ,则取2 b a +≈ α,否则作下一步。 计算)2()(b a f b f +?,若0)2()(>+?b a f b f ,取2 ,11b a b a a +==;否则取b b b a a =+=11,2,形成新的含根区间],[11b a ,且211a b a b -=-。 对于新的含根区间重复上述步骤,直到ε<-n n a b ,取 2 ~n n b a +=α 作为α的近似值。此时的计算误差为 12 2~+-=-<-n n n a b a b αα

流程图

实现 #include "stdio.h" #include "math.h" float function(float x) { float f; f= x*((2*x-4)*x+3)-6; return f; } void main() { float x1,x2,x0,fx1,fx2,fx0; x1=10;x2=-10; fx1=function(x1); fx2=function(x2); do { x0=(x1+x2)/2.0;/*计算中点*/ fx0=function(x0);/*计算中点处的函数值*/ if(fx0*fx1<0)/*计算新的区间*/ {/*区间中点的函数值与x1的函数值正负号相反*/ /*区间中点的y坐标与x1点的y坐标在不同y半轴上*/ x2=x0;/*新区间为[x1,x0]*/ fx2=fx0; } else {/*区间中点的y坐标与x1点的y坐标在相同y半轴上*/ x1=x0;/*新区间为[x0,x2]*/ fx1=fx0; } }while(fabs(fx0)>=1e-6); printf("The root is %f",x0); } 测试 该程序没有输入,输出结果为方程的根,此处略。

用二分法求方程的近似解教案(人教A版必修)

用二分法求方程的近似解 一、教学内容分析 本节选自新人教A版必修1第三章第一节的第二课时,是利用前一节课中的函数的零点和方程的根的关系来才解方程的根,而如何求得函数的零点,就是本节课的主要内容。这里要求学生懂得二分法的求解的过程,理解二分法求解的原理,更重要的是,有了计算机这种高科技产品,使得复杂的计算变成了简单,使得这种近似的计算方法有了更广泛的应用空间。为必修3算法提供了技术支持。同时让学生对函数与方程的思想,数形结合思想以及逼近的数学思想有了进一步的认识。 二、学生学习情况分析 同学们有了第一节课的基础,对函数的零点具备基本的认识;而通过生活中的案例来接触二分的思想,使二分法不要变化抽象,能够激发学生的学习兴趣,使学生明白数学就在我身边,数学无处不在的。学生也能够很容易理解这种方法。对于高次方程和超越方程对应函数零点的寻求会有困难. 三、教学目标 通过具体实例理解二分法的概念,掌握运用二分法求简单方程近似解的方法,从中体会函数的零点与方程根之间的联系及其在实际问题中的应用;能借助计算器用二分法求方程的近似解,让学生能够初步了解逼近思想;体会数学逼近过程,感受精确与近似的相对统一;通过具体实例的探究,归纳概括所发现的结论或规律,体会从具体到一般的认知过程. 四、教学重点和难点 1.教学重点:用“二分法”求方程的近似解,使学生体会函数零点与方程根之间的联系,初步形成用函数观点处理问题的意识. 2.教学难点:方程近似解所在起始区间的确定,近似解与精确度的关系。 五、教学过程设计 (一)创设情境,提出问题 体会一分为二的“逼近”思想 问题1:在班级举办的新年晚会上,有一支有100个小彩灯组成的串联彩灯电路突然不亮了,知道只有一个灯泡烧毁,如何迅速找出烧掉的灯炮并换掉,让欢乐的气氛得以继续? 这个问题会让学生有身临其境的感觉,确实,这个欢快的场面,出现了这个大杀风景的事,是有点不爽,越快找出烧毁的灯炮越好。 [学情预设] 学生独立思考,可能出现的以下解决方法:

二分法求方程的近似解学案

3.1.3 二分法求方程的近似解 【学习目标】 1.通过实例了解二分法求方程近似解的原理;能借助计算器用二分法求方程的近似解; 2.体会数学逼近过程,感受精确与近似的相对统一,感受数学中辩证唯物主义思想. 【学习重点】用“二分法”求方程的近似解. 【难点提示】“二分法”的理解与运用. 【学法提示】1.请同学们课前将学案与教材8994P -结合进行自主学习(对教材中的文字、图象、表格、符号、观察、思考、说明与注释、例题及解答、阅读与思考、小结等都要仔细阅读)、小组讨论,积极思考提出更多、更好、更深刻的问题,为课堂学习做好充分的准备; 2.在学习过程中用好“十二字学习法”即:“读”、“挖”、“举”、“联”、“用”、“悟”、“听”、“问”、“通”、“总”、“研”、“会”,请在课堂上敢于提问、敢于质疑、敢于讲解与表达. 【学习过程】 一、学习准备 1.请回顾我们前面学习了的函数零点的概念、零点存在性定理等,并完成下列填空: 对于函数()y f x =,我们把使 的实数x 叫做函数()y f x =的零点. 方程()0f x =有实数根?函数()y f x =的图象与x 轴 ?函数()y f x = ;如果函数()y f x =在区间[,]a b 上的图象是连续不断的一条曲线,并且有 , 那么,函数()y f x =在区间(,)a b 内有零点. 2.如何求一元二次函数的零点呢? 3.一元二次方程可以用公式求根,但方程062ln =-+x x 的根怎么求解呢?通过本节内容的学习便可知道了. 二、探究新知 二分法的定义及使用二分法求零点的步骤 ●观察思考 (1)中央电视台由李咏主持的节目《幸运52》中有一项猜测商品价格的游戏,首先给出了商品价格的范围,如果是你,你将用什么方法快速猜中商品的真实价格呢?现实中还有这种方法的实例吗? (2)有12个小球,质量均匀,只有一个是比别的球重的,你用天平称几次可以找出这个球的(要求次数越少越好)?具体做法如下(链接1): 第一次,两端各放 个球,低的那一端一定有重球. 第二次,两端各放 个球,低的那一端一定有重球. 第三次,两端各放 个球,如果平衡,剩下的就是重球,否则,低的就是重球. 上述(2)的做法是怎样找出重的那个球的,深刻理解该方法,你能否用该方法求函数 ln 26y x x =+-的零点所在区间?又如何找出这个零点的近似值? 请阅仔细读教材P89-P90,回答以下问题: (1)我们是怎么找出函数ln 26y x x =+-的零点所在区间的? (2)如何使用二分法?具体步骤是什么? ●归纳概括 (1)对于在区间[,]a b 上连续不断,且满足()()0f a f b ?<的函数)(x f y =, 通过不断地把函数)(x f 的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,

实验7 二分法求方程的根

实验7 二分法求方程的根 一、问题:求324100x x +-=于区间[1,2]内的一个实根,且要求精确到0.001 二、算法: 第一步:计算 );(),(21b f y a f y ←← 第二步:计算)(),(5.0000x f y b a x ←+←,若00ε-a b 则转第二步;否则,输出0x 结束. 三、练习 编写程序或函数实现上以上区间的近似解,要求记录迭代次数。 函数或程序为: 结果为: 迭代次数为:

四、逐步搜索法求方程根的存在区间 在给定的区间[,] a b上判定根的大致分布,从区间左端点a出发,按某个预定的步长h一步一步地向右跨,每跨一步进行一次根的搜索,并记录所有的根的存在区间。 用你编写的程序搜索问题中[0,5]的根的存在区间,步长要求为0.1 h 函数为: 根的存在区间为: 五、综合练习(选做) 用逐步搜索法找到根的存在区间,并用二分法求出在该区间上方程根的近似解。

附:分组名单 星期二下午5-6节 第1组组长:陈絮莹缪妃何贵堂刘钰马倩 第2组组长:李杰玉黎筱惠雷霞肖娴林碧珍朱元正第3组组长:陈静苏小丽李郑何淑楠田冬秀曾敬军第4组组长:杨欣王雪梅徐莉萍石小芳雷敏唐嘉第5组组长:杨佳悦郭滢李媛媛何可陈思露 第6组组长:王钰琪寇玠杨丹熊晨曦周丹 第7组组长:姚瑶高倩倩金杨周海宁杨琴 第8组组长:雷芳陈艳王玉娇余非张雪王海燕 星期三下午5-6节 第9组组长:刘超慧王玉利秦佳丽张青梅廖婷程思远第10组组长:杨琴冯康欣黄宜纯田晓东郑美艳 第11组组长:黄倩肖雪梅舒玉秀杨阳黄倩宋亚超第12组组长:乔欢曹人月万袁源刘学勤师小诚沈金勇第13组组长:张全兴程德超冯啸魏丹李茜罗凤菊第14组组长:张洋何婷婷刘云丹彭英萍马静 第15组组长:杨丽王书琪袁杰宋慧玲杨璐萍李琳玲 星期三下午7-8节 第16组组长:李欢蒋书丽康斯梦王菊花李芝琴 第17组组长:杨梅郑雨来李维刘玉兰羊玲 第18组组长:左艳君古月黄文凤杨娟胡洲黄川第19组组长:吴星谭婷张欢向巧钱强陈虹弟第20组组长:曾大超胡敏马树述罗玉婷 第21组组长:石章波拉吉石明岳榆川金小刚张泽松 第22组组长:贾孙鹏袁鹏颜冬芹陈诚张博 第23组组长:李自强黄金辉彭琦岳琪李宾李闯第24组组长:王文媛林小渝刘燕严英何思敏穆芦芸

相关文档
最新文档