数值分析 课程设计1.docx

上传人:b****5 文档编号:7429986 上传时间:2023-01-23 格式:DOCX 页数:10 大小:44.38KB
下载 相关 举报
数值分析 课程设计1.docx_第1页
第1页 / 共10页
数值分析 课程设计1.docx_第2页
第2页 / 共10页
数值分析 课程设计1.docx_第3页
第3页 / 共10页
数值分析 课程设计1.docx_第4页
第4页 / 共10页
数值分析 课程设计1.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

数值分析 课程设计1.docx

《数值分析 课程设计1.docx》由会员分享,可在线阅读,更多相关《数值分析 课程设计1.docx(10页珍藏版)》请在冰豆网上搜索。

数值分析 课程设计1.docx

数值分析课程设计1

 

数值分析课程设计

误差的影响

 

指导教师

学院名称

理学院

专业名称

提交日期

2013年6月17日

 

一、问题的提出

在数值分析中,总是假定数学模型能正确的反映客观实际问题,因而不研究模型误差和观察误差,误差主要分为截断误差和舍入误差。

利用牛顿插值多项式可知f(x)=Pn(x)+Rn(x),已知f(x)=ex,Pn(x)=

Rn(x)为误差。

于是我们就要讨论误差在对算法过程中会造成怎么样的影响,我们又将如何改进算法以致能更好的到达精准度。

二、实验内容

1、模型一:

a)根据实验要求自定义函数Exp_Calculate(x),

对于给定点x,若在最大阶数MAXN=20的限制内能得到达到精度EPS=0.00001要求的函数值,则返回计算所得函数值;若否,则返回-1.(注:

可直接调用C语言或MATLAB的内部函数’exp(x)’计算精确值ex.)

b)依次输入x=1,2,3,4,5,6,-1,-2,-3,-4,-5,-6,记录下所有输入值和相应的返回值。

若返回值为-1,则

c)写出泰勒展开式分析此种情况的特点;

d)编写一个测试程序,以检查函数Exp_Calculate(x)中求和过程

的每一步结果,输入各个项(如第m项)

的值以及

的值,并由此分析造成返回值为-1的原因。

2、模型二:

a)根据原因重新定义函数Exp_Test2(x),

b)依次输入x=1,2,3,4,5,6,-1,-2,-3,-4,-5,-6,记录下所有输入值和相应的返回值。

三、实验结果及分析:

模型一结果图表:

x

i

-6

-5

-4

-3

-2

-1

0

0

1.0000

1.0000

1.0000

1.0000

1.0000

1.0000

0.0000

1

-6.0000

-5.0000

-4.0000

-3.0000

-2.0000

1.0000

2

18.0000

12.5000

8.0000

4.5000

2.0000

0.5000

3

-36.0000

-20.8333

-10.6667

-4.5000

-1.3333

0.1667

4

54.0000

26.0417

10.6667

3.3750

0.6667

0.0417

5

-64.8000

-26.0417

-8.5333

-2.0250

-0.2667

0.0083

6

64.8000

21.7014

5.6889

1.0125

0.0889

0.0014

7

-55.5429

-15.5010

-3.2508

-0.4339

-0.0254

0.0002

8

41.6571

9.6881

1.6254

0.1627

0.0063

0.0000

9

-27.7714

-5.3823

-0.7224

-0.0542

-0.0014

0.0000

10

16.6629

2.6911

0.2890

0.0163

0.0003

11

-9.0888

-1.2232

-0.1051

-0.0044

-0.0001

12

4.5444

0.5097

0.0350

0.0011

0.0000

13

-2.0974

-0.1960

-0.0108

-0.0003

14

0.8989

0.0700

0.0031

0.0001

15

-0.3596

-0.0233

-0.0008

-0.0000

16

0.1348

0.0073

0.0002

17

-0.0476

-0.0021

-0.0000

18

0.0159

0.0006

0.0000

19

-0.0050

-0.0002

返回值

-1

-1

0.0183

0.0498

0.1353

0.3679

1.0000

x

i

1

2

3

4

5

6

0

1.0000

1.0000

1.0000

1.0000

1.0000

1.0000

1

1.0000

2.0000

3.0000

4.0000

5.0000

6.0000

2

0.5000

2.0000

4.5000

8.0000

12.5000

18.0000

3

0.1667

1.3333

4.5000

10.6667

20.8333

36.0000

4

0.0417

0.6667

3.3750

10.6667

26.0417

54.0000

5

0.0083

0.2667

2.0250

8.5333

26.0417

64.8000

6

0.0014

0.0889

1.0125

5.6889

21.7014

64.8000

7

0.0002

0.0254

0.4339

3.2508

15.5010

55.5429

8

0.0000

0.0063

0.1627

1.6254

9.6881

41.6571

9

0.0000

0.0014

0.0542

0.7224

5.3823

27.7714

10

0.0003

0.0163

0.2890

2.6911

16.6629

11

0.0001

0.0044

0.1051

1.2232

9.0888

12

0.0000

0.0011

0.0350

0.5097

4.5444

13

0.0003

0.0108

0.1960

2.0974

14

0.0001

0.0031

0.0700

0.8989

15

0.0000

0.0008

0.0233

0.3596

16

0.0002

0.0073

0.1348

17

0.0000

0.0021

0.0476

18

0.0000

0.0006

0.0159

19

0.0002

0.0050

返回值

2.7183

7.3891

20.0855

54.5981

-1

-1

原因分析:

模型一中造成返回‘-1’的原因是:

总误差EXP由截断误差(R)和舍入误差(∈)两部分组成,已知x为精确数,则在计算ex.展开式的各项数值后,由于保留小数点后四位小数而引起舍入误差,他们累加起来和截断误差的大小最终会影响最终结果的准确度。

由表中可知,例如当x=6时,ex=

其截断误差为Rn=exo.xn+1/(n+1)!

(0<θ<1),有以下估计公式Rn<6(n+1)/(n+1)!

取n=20,则R20(x)=620/20!

=1.5027972×10^(-3),截断误差偏大以致超出了预定精度。

当x=6时,exp(6)=403.4287935eps=Σ

—exp(6)

M

0

1

2

3

4

1

7

25

61

115

Eps

-402.4288

-396.4288

-378.4288

-342.4288

-288.4288

M

5

6

7

8

9

179.8000

244.6000

300.1429

341.8000

369.5714

Eps

-223.6288

-158.8288

-103.2859

-61.6288

-33.8574

M

10

11

12

13

14

386.2343

395.3231

399.8675

401.9650

402.8639

Eps

-17.1945

-8.1057

-3.5613

-1.4638

-0.5649

M

15

16

17

18

19

403.2234

403.3582

403.4058

403.4217

403.4267

Eps

-0.2054

-0.0706

-0.0230

-0.0071

-0.0021

而当x=-6时,ex=

,从表中可以看出,

以正负相隔的形式出现,i!

不断增大,以致产生书page12的情况,当两

个相近数相减时,致使误差也很大。

ε=3.9199e-005

列出表格

当x=-6时,exp(-6)=2.4787×10^-3,eps=Σ

—exp(-6)

M

0

1

2

3

4

1

-5

13

-23

33.8000

Eps

0.9975

-5.0025

12.9975

-23.0025

-33.8000

M

5

6

7

8

9

31

-24.5429

17.1143

-10.6571

6.0057

Eps

30.9975

-24.5453

17.1118

-10.6596

6.0032

M

10

11

12

13

14

-3.0831

1.4613

-0.6361

0.2628

-0.0968

Eps

-3.0856

1.4588

-0.6386

0.2603

-0.0993

M

15

16

17

18

19

0.0380

-0.0095

0.0063

0.0013

0.0028

Eps

0.0356

-0.0120

0.0038

-0.0012

3.3667e-004

模型二结果与分析:

X

-6

-5

-4

-3

-2

-1

0

1

2

3

4

5

6

S

0.0025

0.0067

0.0183

0.0498

0.1353

0.3679

1

2.7183

7.3891

20.0855

54.5981

148.4132

403.4288

原因分析:

这次模型二的基本思路为改变算法。

其中先讨论x的正负值,当x>0时,将ex=e×e×e……×e(一共x个)先计算e^1=

的近似值,根据x的p次幂的相对误差是x的本身相对的p倍,当x=1的时候ex误差极其的小,当乘以x的时候其相对误差也是十分的小的,以致能达到精准度。

当x<0时,根据page17例1.9得到e(-x)的部分级数和,然后求倒数。

以致舍入误差限减少。

 

四、关于本设计的体会

做了这次程序设计,我才发现自己的知识层面是如何的浅薄。

在建立模型一的时候对于我而言是比较简单的,但是到了如何建立模型二的时候就让我很难继续前进。

刚开始的时候分析误差偏大的原因主要是以为只是截断误差太大了,想把maxN直接变大,但这是不符合题目要求的,于是我进一步想把绝对误差改为相对误差,这时候当x>0时,返回值便可以输出近似值。

但是由于当x<0零时,两个近似数相减的话,其相对误差更大,一直不能成功。

后来我查阅书本看到了page17的例1.9,这让我想出先讨论x是否大于零,然后在进行运算。

总的来说,这次实验中主要的困难在于:

1)难以正确分析返回值为‘-1’的原因,而这偏偏是最重要的,后来通过查阅书本以及询问同学才慢慢的把它弄懂;2)在弄懂了原因之后,建立模型二是最大的问题了,我尝试把之前所想的尽量柔和在一起,但是程序一直存在错误,弄得自己都快要放弃了,后来还是一位热心的同学帮我改进了程序的一些错误,才让我真正的完成设计。

通过这次实验是我更了解了误差的计算以及影响,以及让我意识自己在编写程序一些致命却完全可以更改的错误,今后我会更加努力的学习matlab。

五、参考文献

[1]史万明,数值分析[M],北京,理工大学出版社,2010-4

[2]李庆扬,数值分析(第四版)[M],北京,清华大学出版社,2008-12

六、附录

模型一:

functionExp_Calculate(x)%定义一个函数

N=20;

sum=1;

i=1;

fori=1:

N

z(i)=factorial(i);%计算出i!

y(i)=x^i/z(i);%计算

sum=sum+y(i);%求和,得到泰勒展开式级数和

end

if(abs(sum-exp(x))<=10^-5)%限定误差为10^-5

sum,y(i),%输出结果

else

sum=-1,%不符合条件输出sum=-1

end

end

 

模型二:

functionExp_text2(x)%定义函数

sum=1;

N=20;

ifx>0%讨论x是否大于零

fori=1:

(N-1)

z(i)=factorial(i);

sum=sum+1/z(i);%先计算e^1

if(abs(sum^x-exp(x))<10^-5)%计算e^x

sum=sum^x;

break;

end

end

else%x小于零的情况讨论

fori=1:

(N-1)

z(i)=factorial(i);

y(i)=(-x)^i/z(i);%先计算e^(-x)部分和级数

sum=sum+y(i);

if(abs(1/sum-exp(x))<10^-5)

break;

end

end

sum=1/sum;%最后求其倒数

end

if(abs(1/sum-exp(x))>=10^-5)

sum=--1;

end

sum,

 

七、教师评价

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

当前位置:首页 > 农林牧渔 > 林学

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

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