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

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

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

对于一般超越方程与高次代数方程求根的问题,可选用方法简单实用有效的不求导数的二分法,即在给定的寻根区间内,利用步步查找,二分缩小区间的方法,求出全部实根。

二分法求根程序框图见后附件。

主要标识符含义:

A,B—方程求根区间的左、右端点[a,b]

H—查根间距、跨步长度h

EPS—计算精度值,ε=0.00001

x A,y A—变化过程中的左端点点值及函数值

x B,Y B—变化过程中的右端点点值及函数值

x C,y C—变化过程中的中点点值及函数值

算例

已知方程式f(x)=x3-6x2+11x-6=0,求方程的根。

给定条件x∈[0.5,3.5],ε=0.00001,h=0.47。

迭代求解后,可得到方程的三个实根:

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 = 0.5

b = 3.5

h = 0.47

eps = 0.00001

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

dblXc = (dblXa + dblXb) / 2

dblYc = dblFx(dblXc)

Call qqRoot(dblXa, dblYa, dblXb, dblYb, dblXc, dblYc)

Else

'求得一个根

lCount = lCount + 1

dblXd = (dblXa + dblXb) / 2

'将所求根保存在数组中

ReDim Preserve dblRoot(1 To lCount)

dblRoot(lCount) = dblXd

'改变求根区间,以便获取下一个根

dblXa = dblXb

dblYa = dblYb

dblXb = dblXb + h

If dblXb > b Then Exit Sub

dblYb = dblFx(dblXb)

Call Root(dblXa, dblYa, dblXb, dblYb)

End If

End Sub

'判断并缩小求根区间

Sub qqRoot(dblXa1 As Double, dblYa1 As Double, dblXb1 As Double, dblYb1 As Double, dblXc1 As Double, dblYc1 As Double)

If dblYa1 * dblYc1 > 0 Then

dblXa1 = dblXc1

dblYa1 = dblYc1

Else

dblXb1 = dblXc1

dblYb1 = dblYc1

End If

Call qRoot(dblXa1, dblYa1, dblXb1, dblYb1)

End Sub

'要求根的方程式

Function dblFx(dblX As Double) As Double

dblFx = dblX * dblX * dblX - 6 * dblX * dblX + 11 * dblX - 6

End Function

'显示根

Sub DisplayRoot()

Dim i As Long

Dim str As String

lCount = 0

'调用求根程序

Main

'遍历并显示所求得的根

For i = LBound(dblRoot) To UBound(dblRoot)

str = str & "方程的第" & i & "根是:" & dblRoot(i) & Chr(10)

Next i

MsgBox str

End Sub

参考资料:实用数值计算方法与程序

附:二分法求方程的根框图

用区间二分法求方程的根

用区间二分法求方程的根 一、前言 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

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

二分法及迭代法求解非线性方程根 班级:姓名:方学号:日期: 一、实验目的 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 =与 点的横坐标就是方

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

例1:利用计算器,求方程0122 =--x x 的一个近似解(精确到). 【解】设2()21f x x x =--, 先画出函数图象的简图. (如右图所示) 因为 (2)10,(3)20f f =-<=>, 所以在区间(2,3)内,方程2 210x 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的区间; 零点所在区间 区间中点函数值 区间长度 ]3,2[ 0)5.2(>f 1 ]5.2,2[ 0)25.2(f 如此列表的优势:计算步数明确,区间长度小于精度时,即为计算的最后一步. 例2:利用计算器,求方程x x -=3lg 的近似解(精确到). 分析:分别画函数lg y x =和3y x =- 的图象,在两个函 数图象的交点处,函数值相等.因此,这个程x x -=3lg 的解.由函数lg y x =与 点的横坐标就是方

用二分法求方程的近似解教案

用二分法求方程的近似解 一、教学内容分析 本节课选自《普通高中课程标准实验教科书数学1必修本(A版)》的第三章3.1.2用二分法求方程的近似解.本节课要求学生根据具体的函数图象能够借助计算机或信息技术工具计算器用二分法求相应方程的近似解,了解这种方法是求方程近似解的常用方法,从中体会函数与方程之间的联系;它既是本册书中的重点内容,又是对函数知识的拓展,既体现了函数在解方程中的重要应用,同时又为高中数学中函数与方程思想、数形结合思想、二分法的算法思想打下了基础,因此决定了它的重要地位. 二、学生学习情况分析 学生已经学习了函数,理解函数零点和方程根的关系, 初步掌握函数与方程的转化思想.但是对于求函数零点所在区间,只是比较熟悉求二次函数的零点,对于高次方程和超越方程对应函数零点的寻求会有困难.另外算法程序的模式化和求近似解对他们是一个全新的问题. 三、设计思想 倡导积极主动、勇于探索的学习精神和合作探究式的学习方式;注重提高学生的数学思维能力,发展学生的数学应用意识;与时俱进地认识“双基”,强调数学的内在本质,注意适度形式化;在教与学的和谐统一中体现数学的文化价值;注重信息技术与数学课程的合理整合. 四、教学目标 通过具体实例理解二分法的概念,掌握运用二分法求简单方程近似解的方法,从中体会函数的零点与方程根之间的联系及其在实际问题中的应用;能借助计算器用二分法求方程的近似解,让学生能够初步了解逼近思想;体会数学逼近过程,感受精确与近似的相对统一;通过具体实例的探究,归纳概括所发现的结论或规律,体会从具体到一般的认知过程. 五、教学重点和难点 1.教学重点:用“二分法”求方程的近似解,使学生体会函数零点与方程根之间的联系,初步形成用函数观点处理问题的意识.2.教学难点:方程近似解所在初始区间的确定,恰当地使用信息技术工具,利用二分法求给定精确度的方程的近似解. 六、教学过程设计 (一)创设情境,提出问题 问题1:在一个风雨交加的夜里,从某水库闸房到防洪指挥部的电话线路发

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

专业代码: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);

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

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

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

二分法方程求解

问题 二分法解决方程求解问题 利用二分法,求方程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); } 测试 该程序没有输入,输出结果为方程的根,此处略。

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

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 的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,

用二分法求方程的近似解.doc

教学方法 教学程序与环节设计: 由二分查找及高次多项式方程的求问题引入. 二分法的意义、算法思想及方法步骤. 体会函数零点的意义,明确二分法的适用范围. 二分法的算法思想及方法步骤, 初步应用二分法解 决简单问题. 二分法应用于实际. 1.二分法为什么可以逼近零点的再分析; 2.追寻阿贝尔和伽罗瓦. 饶平二中2010学年度第一学期高一数学(必修1)教案 恰当地使用信息技术工具,利用二分法求给定精确度的方程的近 似解. 教学过程: 教 知识与 技能 通过具体实例理解二分法的概念及其适用条件, 了解二分法是求 方程近似解的常用方法,从中体会函数与方程之间的联系及其在 实际问题中 的应用. 学 过程与 并了解这一数 目 方法 能借助计算器用二分法求方程的近似解, 学思想,为学习算法做准备. 标 情感态度 与价值观 体会数学逼近过程,感受精确与近似的相对统一. § 3.1.2用二分法求方程的近似解 课时 1课时 课题 教学重点 通过用二分法求方程的近似解, 体会函数的零点与方程根之间的 联系,初步形成用函数观点处理问题的意识. 教学难点

1创设情景: 材料一:二分查找(binary-search) (第六届全国青少年信息学(计算机)奥林匹克分区联赛提高组初赛试题第15题) 某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索 (binary-search),在最坏的情况下,需检索( )个单元。 A. 1000 B. 10 C. 100 D. 500 二分法检索(二分查找或折半查找) 演示. 2.求区间(a , b)的中点X i;

实验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组组长:王文媛林小渝刘燕严英何思敏穆芦芸

相关文档
最新文档