算法的数值稳定性实验

  • 格式:docx
  • 大小:30.67 KB
  • 文档页数:3

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业 序号 姓名 日期

实验1 算法的数值稳定性实验

【实验目的】

1.掌握用MATLAB 语言的编程训练,初步体验算法的软件实现;

2.通过对稳定算法和不稳定算法的结果分析、比较,深入理解算法的数值稳定性及其重要性。

【实验内容】

1.计算积分 ()dx a x x I n

⎰+=1

0)(n (n=0,1,2......,10) 其中a 为参数,分别对a=0.05及a=15按下列两种方案计算,列出其结果,并对其可靠性,说明原因。

2.方案一 用递推公式 n aI I n 11n +

-=- (n=1,2,......,10) 递推初值可由积分直接得)1(0a

a In I += 3. 方案二 用递推公式 )1(11-n n

I a I n +-= (n=N,N -1,......,1) 根据估计式 ()()()11111+<<++n a I n a n 当1

n a +≥n 或

()()n

1111≤<++n I n a 当1

n n a 0+<≤ 取递推初值为 ()()()()11212])1(1111[21N +++=++++≈N a a a N a N a I 当1

a +≥N N 或 ()()]1111[21N

N a I N +++= 当1a 0+<

≤N N 计算中取N=13开始

【程序如下】: % myexp1_1.m --- 算法的数值稳定性实验

% 见 P11 实验课题(一)

%

function yyjj

global n a

N = 20; % 计算 N 个值

a =0.05;%或者a=15

% %--------------------------------------------

% % [方案I] 用递推公式

%I(k) = - a*I(k-1) + 1/k

%

I0 =log((a+1)/a); % 初值

I = zeros(N,1); % 创建 N x 1 矩阵(即列向量),元素全为零

I(1) =-a*I0+1;

for k = 2:N

I(k) =-a*I(k-1)+1/k;

end

% %--------------------------------------------

% % [方案II] 用递推公式

%I(k-1) = ( - I(k) + 1/k ) / a

%

II = zeros(N,1);

if a >= N/(N+1)

II(N)=(2*a+1)/(2*a*(a+1)*(N+1));

else

II(N) =(1/(a+1)/(N+1)+1/N)/2;

end

for k = N:-1:2

II(k-1) =(-II(k)+1/k)/a;

end

% %--------------------------------------------

% % 调用 matlab 高精度数值积分命令 quadl 计算以便比较

III = zeros(N,1);

for k = 1:N

n = k;

III(k) = quadl(@f,0,1);

end

% %--------------------------------------------

% % 显示计算结果

clc

fprintf('\n 方案I结果方案II结果精确值') for k = 1:N,

fprintf('\nI(%2.0f) %17.7f %17.7f %17.7f',k,I(k),II(k),III(k))

end

% %--------------------------------------------

function y = f(x) % 定义函数

global n a % 参量 n 为全局变量

y =x.^n./(a+x); % ★注意:这里一定要 '点' 运算

return

% %--------------------------------------------

【运行结果如下】:

当a=0.05

方案I结果方案II结果精确值

I( 1) 0.8477739 -919648916620722180000.0000000 0.8477739 I( 2) 0.4576113 45982445831036109000.0000000 0.4576113 I( 3) 0.3104528 -2299122291551805700.0000000 0.3104528 I( 4) 0.2344774 114956114577590290.0000000 0.2344776 I( 5) 0.1882761 -5747805728879515.0000000 0.1882761

I( 6) 0.1572529 287390286443975.9400000 0.1572529

I( 7) 0.1349945 -14369514322198.6540000 0.1349945

I( 8) 0.1182503 718475716110.0577400 0.1182503

I( 9) 0.1051986 -35923785805.3917770 0.1051986

I(10) 0.0947401 1796189290.3695889 0.0947401

I(11) 0.0861721 -89809464.4275704 0.0861724

I(12) 0.0790247 4490473.3047119 0.0790247