2. 用matlab语言编写按递推公式,数值计算方法实验报告(一)算法的数值稳定性实验.doc...

数值计算方法实验报告(一)算法的数值稳定性实验

数值分析实验报告

姓 名学 号系 别数学系班级主讲教师指导教师实验日期专业课程名称数值计算方法同组实验者无一、实验名称:

实验一、算法的数值稳定性实验1.进行Matlab语言的编程训练,初步体验算法的软件实现;

2.通过对稳定算法和不稳定算法的结果分析、比较,深入理解算法的数值稳定性及其重要性。1.用Matlab语言编写按递推公式

计算(n=0,1,2,……)的程序,并取I0=0.6321,计算n=0,1,2,…,9时In的值。

2. 用Matlab语言编写按递推公式

计算(n=0,1,2,……,9)的值程序。

3.分析比较两种算法的数值稳定性。,要运用下面两种算法进行计算。 .

算法一:

由积分估值得:

取y(0)=0.6321时,运用递推公式为:

进行计算。

算法二:

取n=9时,得:

所以y(9)=0.0684时,运用递推公式为:

进行计算。

算法一的程序如下:

function [y,n] =myfun()

y_0=0.6321;

n=1;

y(1)=y_0;

for i=2:10

y(i)=1-(i-1)*y(i-1);

n=n+1;

end

n

算法二的程序如下:

function [ y,n ] = Myfun_2()

syms k y_9;

y=zeros(10,1);

n=1;

y_9=0.6321;

y(8)=y_9;

for i=10:-1:2

y(i-1)=1/i*(1-y(i));

n=n+1;

end

end

表1 计算结果

n

第1种算法

第2种算法

0

0.6321

0.6321

1

0.3679

0.3679

2

0.2642

0.2642

3

0.2073

0.2073

4

0.1709

0.1709

5

0.1455

0.1455

6

0.1268

0.1268

7

0.1124

0.1124

8

0.1009

0.1009

9

0.0916

0.0916

10

0.0839

0.0839

11

0.0774

0.0774

12

0.0718

0.0718

13

0.0669

0.0669

14

0.0627

0.0627

15

0.0590

0.0590

16

0.0555

0.0557

17

0.0572

0.0527

18

-0.0295

0.0508

19

1.5596

0.0342

四、实验总结:

计算结果见表1的列。我们发现与的误差不超过。记,则,比缩小了n!倍,因此,尽管较大,但由于误差逐步缩小,故可用近似。反之,当用方案(A)计算时,尽管初值相当准确,由于误差传播是逐步扩大的,因而计算结果不可靠。此例说明,数值不稳定的算法是不能使用的。

五、教师评语(或成绩)

教师签字 :

2013年 月 日

2

n=0,1,

你可能感兴趣的:(2.)