文档视界 最新最全的文档下载
当前位置:文档视界 › 第2章--非线性方程求根与二分法

第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); 牛顿迭代:

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

分法”求二元方程的解 前面说到了用“精确迭代法”求两个数的最大公约数,这里的“二分法”也属于迭代法——近似迭代。另外还有“牛顿迭代”也属于近似迭代。思想:二分法属于数学问题,但为了说清楚问题就再说一下原理。先取二元方程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;

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

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

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

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

二分法和牛顿法求解非线性方程(C语言)

(1)二分法求解非线性方程: #include #include #define f(x)((x*x-1)*x-1) void main() {float a,b,x,eps; int k=0; printf("intput eps\n");/*容许误差*/ scanf("%f",&eps); printf("a,b=\n"); for(;;) {scanf("%f,%f",&a,&b); if(f(a)*f(b)>=0)/*判断是否符合二分法使用的条件*/ printf("二分法不可使用,请重新输入:\n"); else break; } do {x=(a+b)/2; k++; if(f(a)*f(x)<0)/*如果f(a)*f(x)<0,则根在区间的左半部分*/ b=x; else if(f(a)*f(x)>0)/*否则根在区间的右半部分*/ a=x; else break; }while(fabs(b-a)>eps);/*判断是否达到精度要求,若没有达到,继续循环*/ x=(a+b)/2;/*取最后的小区间中点作为根的近似值*/ printf("\n The root is x=%f,k=%d\n",x,k); } 运行结果: intput eps 0.00001 a,b= 2,-5 The root is x=1.324721,k=20 Press any key to continue 总结:本题关键在于两个端点的取值和误差的判断,此程序较容易。二分法收敛速度较快,但缺点是只能求解单根。 (2)牛顿法求解非线性方程: #include #include float f(float x)/*定义函数f(x)*/ {return((-3*x+4)*x-5)*x+6;} float f1(float x)/*定义函数f(x)的导数*/

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

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

例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

二分法求方程的根

【例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、编程实现以下科学计算算法,并举一例应用之(参考书籍《精通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 流程图:

二分法求解单变量方程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

九、解非线性方程组的逐步搜索方法和二分法

一、编写函数作图的程序,通过图形求出方程的近似解。 1、>> clear >> syms x y >> x=-10:0.1:10; >> y=2.*x.*sin(x)-3; >> plot(x,y); >> grid >> gtext('y=2.*x.*sin(x)-3') 2、>> clear >> syms x y1 y2 >> x=0:0.1:10; >> y1=2.*sin(x); >> y2=3./x; >> plot(x,y1,x,y2); >> grid >> gtext('y1=2sin(x),y2=3/x')

3、>> clear >> syms x y >> x=-2:0.1:4; >> y=4.*x.^5-8.*x.^4-26.*x.^3+30; >> plot(x,y); >> grid >> gtext('y=4*x^5-8*x^4-26*x^3+30')

>> x=solve('4*x^5-8*x^4-26*x^3+30=0','x'); >> x1=double(x) x1 = 1.0000 3.7117 -1.9244 -0.3936 + 0.9461i -0.3936 - 0.9461i 二、用逐步搜索的方法求解。 function [k,r]=zhubuss(a,b,h,tol) X=a:h:b;Y=funs(X); n=(b-a)/h+1;m=0; X(n+1)=X(n);Y(n+1)=Y(n); for k=2:n X(k)=a+k*h; Y(k)=funs(X(k)); sk=Y(k)*Y(k-1); if sk<=0 m=m+1; r(m)=X(k); end xielv=(Y(k+1)-Y(k))*(Y(k)-Y(k-1)); if (abs(Y(k))

用二分法求方程的近似解

用二分法求方程的近似解(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);

二分法求解单变量非线性方程及其应用与实现(精)

二分法求解单变量非线性方程及其应用与实现 论文作者:任珊https://www.docsj.com/doc/1910589049.html, 2010-10-27 20:32:00 论文关键词:二分法单变量非线性方程收敛性误差 论文摘要:本文主要通过一个实例来研究单变量非线性方程f(x)=0的二分法求解及此方法的收敛性,根据误差估计确定二分次数并进行求解。同时实现matlab和C语言程序编写。从而掌握过程的基本形式和二分法的基本思想,在以后的学习过程中得以应用。 1. 引言 在科学研究与工程技术中常会遇到求解非线性方程f(x)=0的问题。而方程f(x)是多项式或超越函数又分为代数方程或超越方程。对于不高于四次的代数方程已有求根公式,而高于四次的代数方程则无精确的求根公式,至于超越方程就更无法求其精确解了。因此,如何求得满足一定精度要求的方程的近似根也就成为了我们迫切需要解决的问题。近年来,随着数学科学研究的不断进展,又更新了许多方程求解的方法。我们知道,对于单变量非线性方程f(x)=0,一般都可采用迭代法求根,由此产生了二分法。 2. 二分法 一般地,对于函数f(x),如果存在实数c,当x=c时f(c)=0,那么把x=c叫做函 数f(x)的零点。 解方程即要求f(x)的所有零点。 先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求 f[(a+b)/2], 现在假设f(a)<0,f(b)>0,aa,从①开始继续使用中点函数值判断。 如果f[(a+b)/2]>0,则在区间(a,(a+b)/2)内有零点,(a+b)/2=>b,从①开始 继续使用中点函数值判断。 这样就可以不断接近零点。

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

例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斗

二分法求非线性方程的数值解

二分法求非线性方程的数值解 function [x,k] = bisec( f,a,b,ep ) %f:f(x)=0的函数,a,b:[a,b]端点,ep:精度 %x:方程的数值解,k迭代次数 if f(a)*f(b)>=0 if f(a)* f(b)>0 warning('端点值同号,不符合二分法的条件'); return; else if f(a)==0 disp(' a就是方程的解'); return; else disp(' b就是方程的解'); return; end end end k=0; N=(log10(b-a)-log10(ep))/log10(2); %最大迭代次数 x=(a+b)/2; if f(x)==0 disp(' x就是方程的解'); return; else while abs(a-b)>ep & k> f=@(x)x-exp(-x);a=0;b=1;ep=0.5e-10; >> [x,k]=bisec(f,a,b,ep) x =0.5671432904 k =35

二分法求非线性方程的数值解(多元函数情形,以二元函数为例) function [x,k] = bisec( f,a,b,ep ) %f:f(x)=0的函数,a,b:[a,b]端点,ep:精度 %x:方程的数值解,k:迭代次数 if f(a(1),a(2))*f(b(1),b(2))>=0 if f(a(1),a(2))* f(b(1,b(2)))>0 warning('端点值同号,不符合二分法的条件'); return; else if f(a(1),a(2))==0 disp(' a就是方程的解'); return; else disp(' b就是方程的解'); return; end end end k=0; x=(a+b)/2; if f(x(1),x(2))==0 disp(' x就是方程的解'); return; else while norm(a-b)>ep if f(x(1),x(2))*f(a(1),a(2))<0 b=x; else a=x; end k=k+1; x=(a+b)/2; end t=round(-log10(ep)); x=vpa(x,t); end >> g=@(x,y)1-x^2-y^2;a=[0;0];b=[1;1];ep=0.5e-15; >> [x,k]=bisec1(g,a,b,ep) x = 0.707106781186548 0.707106781186548 k = 52

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

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

二分法和割线法求非线性方程的解

041cos(sin )0[23]101 2x d πθθπ-=?用二分法和割线法求非线性方程在,中的解,使误差不超过, 可按如下方法进行:()用区间法确定一个包含解的小区间;()用割线法求该方程在此区间中的根。 主程序为: %计算方法上机第八题 clc;clear; syms x a f f=cos(x*sin(a)); %定义积分函数 t1=0;t2=pi;l1=2;l2=3;e1=10^-5;e2=10^-4;e3=10^-3; f1=subs(f,x,l1);f2=subs(f,x,l2); s1=romberg(t1,t2,f1,e1); %调用Romberg 积分函数 s2=romberg(t1,t2,f2,e1); if s1*s2>0 disp('There is no root in the range of [2,3].'); else while (l2-l1)>e3 %二分法确定包含解的小区间 l3=(l1+l2)/2; f3=subs(f,x,l3); s3=romberg(t1,t2,f3,e1); if s1*s3<0 l2=l3;s2=s3; else l1=l3;s1=s3; end end disp(['The root is in the range of [',num2str(l1),',',num2str(l2),'].']); while (l2-l1)>e2 %割线法确定具体的解 l3=l2; l2=l2-(l2-l1)*s2/(s2-s1); f2=subs(f,x,l2); s2=romberg(t1,t2,f2,e1); l1=l3;s1=s2; end disp(['The approximate solution is :',num2str(l2)]); %输出解 end

《用二分法求方程的近似解-》导学案.doc

《§3.1.2用二分法求方程的近似解》导学案 高一数学组编写人:刘慧影审核人:房淑萍使用日期: 【学习目标】: 1.根据具体函数图象,能够借助计算器用二分法求相应方程的近似解; 2.通过用二分法求方程的近似解,使学生体会函数零点与方程根之间的联系,初步形成用函数观点处理问题的意识. 【学习重、难点】 学习重点::用二分法求解函数f(x)的零点近似值的步骤。 学习难点:为何由I a — b丨<£便可判断零点的近似值为3(或b)? 【学法指导及要求】: 1、认真研读教材P89-P9I页,认真思考、独立规范作答,认真完成每一个问题,每一道 习题,不会的先绕过,做好记号; 2、把学案中自己易忘、易出错的知识点和疑难问题以及解题方法规律,及时整理到解错 题本上,多复习记忆。 【知识链接】 1:什么叫零点?零点的等价性?零点存在性定理? (1)对于函数y = /(x),我们把使__________ 的实数兀叫做函数y = /(x)的零点. (2)方程/(x) = 0有实数根o函数y = /(x)的图象与x轴________________________ o函数 y = /⑴ ___________ ? (3)如果函数)u /(x)在区间[a,b]上的图彖是连续不断的一条曲线,并且 有______________ ,那么,函数y = /O)在区间(“)内有零点. 【学习过程】 %1.自主学习 探究任务:二分法的思想及步骤 问题:有12个小球,质量均匀,只有一个是比别的球重的,你用天平称几次可以找出这个球的,要求次数越少越好. 解法: 第一次,两端各放______ 个球,低的那一端一定有重球; 第二次,两端各放________个球,低的那一端一定有重球; 第三次,两端各放______ 个球,如果平衡,剩下的就是重球,否则,低的就是重球. %1.合作探讨 思考:以上的方法其实这就是一种二分法的思想,采用类似的方法,如何求)=lnx + 2x-6的零点所在区间?如何找出这个零点? 一个直观的想法是:如果能够将零点所在的范围尽量的缩小,那么在一定的精确度的要求下,我们可以得到零点的近似值;为了方便,我们通过“取中点”的方法逐步缩小零点所在的范围。

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

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

实验二 非线性方程求根实验报告

实验报告 学院:电子信息工程 实验课程:计算方法 学生姓名: 学号: 专业班级:通信工程 实验二非线性方程求根 1 目的与要求 (1)进一步熟练掌握求解非线性方程的二分法与Newton迭代法。 (2)掌握二分法与Newton迭代法的算法,能运用程序设计语言和此方法编制软件求出任意指定一元三次方程在给定点附近的根。 2 实验内容 用二分法和Newton迭代法求方程 310 x x --=在 1.5 附近的根,精确到 3 10-,输出每次的迭代结果

并统计所用的迭代次数。 3 实验原理 (1)二分法实验原理 取[a,b]区间二等分的中点x1 =(a+b)/2 (1)若f(x1)=0,则x1是f(x)=0的实根。 (2)若f(a)f(x1)<0 成立,则x* 必在区间(a, x1)内,取a1=a,b1= x1;否则x*必在区间(x1,b)内,则取a1= x1,b1=b,这样,得到新区间[a1,b1],其长度为[a,b]的一半。 (3)如此继续下去,进行n次等分 (2)Newton迭代法实验原理 4 程序设计 (1)流程图 二分法程序流程图

Newton迭代法程序流程图

(2)程序代码 ①二分法求非线性方程根#include #include double fun1(double x) {

return x*x*x-x-1; } double fun2(double x1,double x2) { return (x1+x2)/2; } main() { int n=1; float a,b,c; printf("二分法求非线性方程的根\n"); scanf("a=%f,b=%f",&a,&b); if (fun1(a)*fun1(b)<0) { while(fabs(b-a)>1e-3) { c=fun2(a,b); if (fun1(a)*fun1(c)<0) { b=c;

相关文档
相关文档 最新文档