算法的数值稳定性实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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