浅析分法及其Matlab和C程序实现.docx

上传人:b****8 文档编号:28704090 上传时间:2023-07-19 格式:DOCX 页数:18 大小:180.45KB
下载 相关 举报
浅析分法及其Matlab和C程序实现.docx_第1页
第1页 / 共18页
浅析分法及其Matlab和C程序实现.docx_第2页
第2页 / 共18页
浅析分法及其Matlab和C程序实现.docx_第3页
第3页 / 共18页
浅析分法及其Matlab和C程序实现.docx_第4页
第4页 / 共18页
浅析分法及其Matlab和C程序实现.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

浅析分法及其Matlab和C程序实现.docx

《浅析分法及其Matlab和C程序实现.docx》由会员分享,可在线阅读,更多相关《浅析分法及其Matlab和C程序实现.docx(18页珍藏版)》请在冰豆网上搜索。

浅析分法及其Matlab和C程序实现.docx

浅析分法及其Matlab和C程序实现

浅析二分法及其Matlab和C程序实现

第一部分:

二分法浅析

用二分法求方程的近似解是紧跟在“函数的零点”之后的教学内容。

从联系的角度看,前面一节,学生已经学习了方程的根与函数的零点之间存在着对立统一的关系,这一节则是介绍一种具体的方法来运用这一关系解决问题。

从整个教材来分析,这一部分的内容是在“函数的应用”这一大章节之下。

新课程标准中强调函数的应用性,这里包括两个方面:

一方面是函数在生活实践中的应用,函数建模等内容属于这个范畴;另一方面则是函数在数学自身范围内的应用,“二分法”即是其中的代表。

基于以上的分析,笔者给出了以下的一些教学建议,与读者朋友们分享。

一、为什么要用二分法

就通过试验缩小搜索区间来讲,试验点不一定取中点,取其他的点也可以,那么为什么取中点呢?

下面以搜索区间为[0,1]的情况作讨论。

一种对所有搜索区间为[0,1]的方程f(x)=0都适用的方法,即对集合G={f(x)=0,f(x)连续,且f(0)·f

(1)<0}中的所有方程都适用的方法.一个合理的假设是:

G中所有方程f(x)=0的根在[0,1]上均匀分布.设试验点是c,那么c将[0,1]分成[0,c]和[c,1]两部分,它们的长度分别是c和1-c.由假设,通过试验保留的搜索区间是[0,c](即方程f(x)=0的根在[0,c]中)的概率是c,通过试验保留的搜索区间是[c,1]的概率是1-c.因此,通过一次试验保留的搜索区间的期望长度为c2+(1-c)2=2c2-2c+1=2(c-

)2+

,容易看出,当c=

的时候,通过一次试验保留的搜索区间的期望长度最小。

这就是取中点作为试验点的原因。

二、引入方法

方法1:

已知商店里一件商品的利润y与它的价格x之间满足函数关系y=x2-4x+3,请画出这个函数的图像,并思考当价格为多少元的时候商店不盈也不亏.

方法2:

创设问题情景:

蹦极运动.设下落的时间t秒.人离开参照点“礁石尖端”的位移为S(S=0表示人在礁石点处,向下取负,向上取正),开始下落时,时间t=0,在t∈[4,6]时的变化如下表:

t

4.0

4.3

4.6

4.9

5.2

5.5

6.0

S

-5

10

1

-10

1

8

-3

问:

这段时间内人有几次通过礁石尖端处?

方法3:

使用“幸运52”猜测商品价格的游戏作情景.

方法4:

(1)请同学们思考下面的问题:

能否解下列的方程

1x2-2x-1=0

②lgx=3-x

③x4-3x-1=0

(2)特殊入手:

不解方程求方程x2-2x-1=0的近似解(精确到0.01).

方法1、2、3都是以“实际问题”为情境引入.

方法4以学生已有的认知水平:

会求一元二次方程的实数解,对应二次函数的图像与二轴的交点坐标.让学生探究具体的一元二次方程的根与其对应的一元二次函数的图像与二轴的交点的横坐标的关系,再探究一般的一元二次方程的根与其对应的一元二次函数的图像与x轴的交点的横坐标的关系.

三、函数零点的处理

用二分法求方程近似解的理论基础是零点存在定理.下面我们来看看教材上描述的零点存在定理.如果函数y=f(x)在区间[a,b]上的图像是连续不断的一条曲线,并且有f(a)f(b)<0,那么函数y=f(x)在区间[a,b]内有零点即存在c∈(a,b),使f(c)=0.

由此可见,定理的题设部分有两个条件:

(1)y=f(x)在区间[a,b]上的图象是连续不断的一条曲线;

(2)f(a)f(b)<0.

学生在运用这个定理时往往会存在以下疑问:

①我怎样去判断某一函数的图像在某一区间是连续不断的呢?

②y=f(x)满足条件

(1)

(2)就一定存在零点,那么是否只存在一个零点呢?

③若把条件

(2)改为f(a)f(b)>0,则y=f(x)在(a,b)是否就不存在零点呢?

对于问题①,我们可以告诉学生我们前面所学的一次函数、二次函数、指数函数、对数函数、幂函数在它们各自的定义域内图像都是连续的.这些函数经过加减乘除或经过复合而成的新的函数在各自的定义域内图像仍然是连续的.

对于问题②,主要通过观察函数图像来总结.

(1)对全部零点为单重零点既对应方程无重根的情况.

y=f(x)在区间[a,b]上的图象是连续不断的一条曲线且f(a)f(b)<0,则y=f(x)在(a,b)上有奇数个零点.若y=f(x)在区间[a,b]上单调则y=f(x)在(a,b)上有唯一零点.

y=f(x)在区间[a,b]上的图象是连续不断的一条曲线且f(a)f(b)>0,则y=f(x)在(a,b)上有偶数个零点.若y=f(x)在区间[a,b]上单调则y=f(x)在(a,b)上有无零点.

可以看出连续函数的零点具有一个很重要的性质:

函数的图象如果是连续的,当它通过零点时,函数的值变号,也就是图象要经过该点要穿越x轴.

(2)对多重零点的情况

从图7、图8可以看出偶数重零点不穿过x轴;奇数重零点穿过x轴.函数若有一零点为多重零点,当该零点为偶重零点时,图象通过该零点时,函数值不变号,也就是图象经过该零点而不穿越x轴.当该零点为奇重零点时,图象经过该点时函数值要变号,也就是图象经过该零点且穿越x轴.处理好这个问题是本节课的关键.

四、精度

精确度的说明是一个无法避免的问题,而且需要和初中学习的“精确到”有所区分.教学中不可能让学生掌握严格的、形式化的定义,而且教科书对此也作了简化处理:

对于达到精确度ε的界定是只要精确值所在区间的长度小于ε,那么这个区间的所有的值就都是满足精确度ε的近似值.那么,如何让学生明白这个含义呢?

一个可行的方法就是通过简单例子来说明问题.最后,在学生思考、讨论及进一步分析的基础上给出精确度的含义:

“一般地,对于数值x,如果要获得它的满足精确度0.01的近似值,就是找到一个包含x的区间[a,b],只要|a-b|<0.01即可.”

五、二分法的定义与步骤

利用二分法求方程的近似解时,学生用二分法求方程的近似解最大的困难就是第一步.第一步确定初始区间不好把握.要引导学生先研究函数的性质,画出函数大致图象,再确定初始区间.如果我们对函数的性质不了解,不能画出大致图象,问题比较麻烦,只能采用尝试的办法去搜索它的初始区间.

六、信息技术的使用

有意识借助计算器和几何画板帮助学生探究得到零点个数,下面以Excel为例引导学生求y=ln(2x+6)+3-3x的零点.先用画函数图象工具画出函数图象.

确定初始区间为[1,2],然后确定第一次迭代时每个单元格的公式,最后填充即可:

x1

(x1+x2)/2

x2

f(x1)

f((x1+x2)/2)

f(x2)

f(x1)f(x2)

f((x1+x2)/2)f(x1)

f((x1+x2)/2)f(x2)

精度

迭代次数

1

1.5

2

2.079442

0.001072

-3.69741

-7.688558154

0.002229483

-0.00396

1

1

1.5

1.75

2

0.001072

-1.58723

-3.69741

-0.003964201

-0.001701755

5.868646

0.5

2

1.5

1.625

1.75

0.001072

-0.73642

-1.58723

-0.001701755

-0.000789552

1.168862

0.25

3

1.5

1.5625

1.625

0.001072

-0.35445

-0.73642

-0.000789552

-0.000380029

0.261025

0.125

4

1.5

1.53125

1.5625

0.001072

-0.1735

-0.35445

-0.000380029

-0.000186016

0.061497

0.0625

5

1.5

1.515625

1.53125

0.001072

-0.08543

-0.1735

-0.000186016

-9.15918E-05

0.014822

0.03125

6

1.5

1.507813

1.515625

0.001072

-0.04198

-0.08543

-9.15918E-05

-4.50126E-05

0.003587

0.015625

7

1.5

1.503906

1.507813

0.001072

-0.02041

-0.04198

-4.50126E-05

-2.18796E-05

0.000857

0.0078125

8

1.5

1.501953

1.503906

0.001072

-0.00966

-0.02041

-2.18796E-05

-1.03521E-05

0.000197

0.00390625

9

1.5

1.500977

1.501953

0.001072

-0.00429

-0.00966

-1.03521E-05

-4.59805E-06

4.14E-05

0.001953125

10

1.5

1.500488

1.500977

0.001072

-0.00161

-0.00429

-4.59805E-06

-1.72346E-06

6.89E-06

0.000976563

11

1.5

1.500244

1.500488

0.001072

-0.00027

-0.00161

-1.72346E-06

-2.8677E-07

4.3E-07

0.000488281

12

1.5

1.500122

1.500244

0.001072

0.000402

-0.00027

-2.8677E-07

4.31423E-07

-1.1E-07

0.000244141

13

1.500122

1.500183

1.500244

0.000402

6.75E-05

-0.00027

-1.07627E-07

2.71495E-08

-1.8E-08

0.00012207

14

1.500183

1.500214

1.500244

6.75E-05

-1E-04

-0.00027

-1.80465E-08

-6.74688E-09

2.67E-08

6.10352E-05

15

1.500183

1.500198

1.500214

6.75E-05

-1.6E-05

-1E-04

-6.74688E-09

-1.09724E-09

1.63E-09

3.05176E-05

16

1.500183

1.500191

1.500198

6.75E-05

2.56E-05

-1.6E-05

-1.09724E-09

1.72755E-09

-4.2E-10

1.52588E-05

17

1.500191

1.500195

1.500198

2.56E-05

4.67E-06

-1.6E-05

-4.16389E-10

1.19598E-10

-7.6E-11

7.62939E-06

18

1.500195

1.500196

1.500198

4.67E-06

-5.8E-06

-1.6E-05

-7.59619E-11

-2.70718E-11

9.43E-11

3.8147E-06

19

1.500195

1.500196

1.500196

4.67E-06

-5.6E-07

-5.8E-06

-2.70718E-11

-2.62675E-12

3.26E-12

1.90735E-06

20

1.500195

1.500195

1.500196

4.67E-06

2.05E-06

-5.6E-07

-2.62675E-12

9.59574E-12

-1.2E-12

9.53674E-07

21

1.500195

1.500195

1.500196

2.05E-06

7.46E-07

-5.6E-07

-1.15526E-12

1.53249E-12

-4.2E-13

4.76837E-07

22

七、二分法思想的应用

注意用二分法的思想解决其他问题.

(2006浙江16题)设f(x)=3ax

,f(0)>0,f

(1)>0,求证:

(Ⅰ)a>0且-2<

<-1;

(Ⅱ)方程f(x)=0在(0,1)内有两个实根.

证明:

(I)(略)

(II)解法1:

抛物线

的顶点坐标为

利用二分法思想

的两边乘以

,得

.

又因为

所以方程

在区间

内分别有一实根。

故方程

内有两个实根

解法2采用“二分法”,只需证:

①区间(0,1)两个端点处f(0),f

(1)的符号都为正;②在区间(0,1)内寻找一个二分点,使这个二分点所对应的函数值小于0,它保证抛物线与x轴有两个不同的交点(因a>0抛物线开口方向向上).综合①、②,由函数的图象可知:

方程f(x)=0在(0,1)内必有两个不同实根.

在区间(0,1)内选取二等分点

,因f(

)=

a+b+c=

a+(-a)=-

a<0,

所以结论得证.(若f(

)<0不成立,可看f(

)是否为负,若还不成立,再看f(

)是否为负,总之,在区间(0,1)内存在一个分点,使它对应的函数值为负即可.)

例2(2006全国II12题)函数f(x)=|x-1|+|x-19|的最小值为()

(A)190(B)171(C)90(D)45

分析因|x-n|表示数轴上的动点x到点n之间的距离.当|x-1|+|x-19|最小时,x为区间[1,19]内的任意一个分点;……以此类推,当|x-9|+|x-11|最小时,x为区间[9,11]内的任意一个分点;当x-10最小时,x=10.利用“二分法”的思想方法,当x是区间[1,19],[2,18],[3,17],…,[9,11]共同二等分点,即x=10时,f(x)取得最小值,所以f(x)min=10-1+10-2+10-3+…+10-9+10-10+10-11+…+10-19=90.

第一部分:

二分法的Matlab和C程序实现

第二部分主要通过一个实例来研究单变量非线性方程f(x)=0的二分法求解及此方法的收敛性,根据误差估计确定二分次数并进行求解。

同时实现Matlab和C语言程序编写。

从而掌握过程的基本形式和二分法的基本思想,在以后的学习过程中得以应用。

一、引言

在科学研究与工程技术中常会遇到求解非线性方程f(x)=0的问题。

而方程f(x)是多项式或超越函数又分为代数方程或超越方程。

对于不高于四次的代数方程已有求根公式,而高于四次的代数方程则无精确的求根公式,至于超越方程就更无法求其精确解了。

因此,如何求得满足一定精度要求的方程的近似根也就成为了我们迫切需要解决的问题。

近年来,随着数学科学研究的不断进展,又更新了许多方程求解的方法。

我们知道,对于单变量非线性方程f(x)=0,一般都可采用迭代法求根,由此产生了二分法。

二、Matlab实现

function[c,err,yc]=bisect(f,a,b,delta)

%f是要求解的函数

%a和b分别是有根区间的左右限

%delta是允许的误差界

%c为所求近似解

%yc为函数f在c的误差估计

ifnargin<4delta=1e-5;end

ya=feval(‘f’,a);

yb=feval(‘f’,b);

ifyb==0,c=b,return,end

ifya*yb>0

disp(‘(a,b)不是有根区间’);

return,end

max1=1+round((log(b-a)-log(delta))/log

(2));

fork=1:

max1

c=(a+b)/2;

ye=feval(‘f’,c);

ifyc==0a=c;b=c;break,

elseifyb*yc>0

b=c;yb=yc;

else

a=c;ya=c;

end

if(b-a)

end

k,c=(a+b)/2,err=abs(b-a),yc=feval(‘f’,c)

例如,要求f(x)=x3-x-1=0在区间[1,2]内的根

先在命令窗口中输入:

>>fplot(‘[x^3-x-1,0]‘,[12]);grid

回车后输出曲线图

现在再编写所求的非线性函数,输入:

f=inline(‘x^3-x-1′);

bisect(f,1,2)

敲回车就能得到你想要的了。

三、C实现

#include"stdio.h"

#include"math.h"

main()

{

doublex1,x2;

doublex12;

doubley1,y12;

x1=1;

x2=3;

do

{

y1=exp(x1)-sin(x1)-sqrt(x1)-2;

x12=(x1+x2)/2.0;

y12=exp(x12)-sin(x12)-sqrt(x12)-2;

if(y1*y12<0)

x2=x12;

else

x1=x12;

}

while(fabs(y12)>1e-12);

printf("xis:

%.6g\n",x12);

}

运行结果:

编程思路:

二分法的思是,取自变量两个边界的中间值,并求此自变量值下的函数值,与其中的一个边界值(假若为第一个边界值且为负)相乘,如结果为负,则表明该中间值包含函数值为0的x值,再减小后边界继续循环即可;如结果为正,则表明该中间值不包含函数值为0的x值,再增大前边界继续循环即可;当不满足精度要求时,即可求出结果,输出即可。

求该方程的两个边界值时,可编程实现。

代码为:

#include"stdio.h"

#include"math.h"

main()

{

doublex,y;

printf("inputx:

\n");

scanf("%lf",&x);

y=exp(x)-sin(x)-sqrt(x)-2;

printf("yis:

%.6g\n",y);

}

结果为:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1