计算方法算法的数值稳定性实验报告
- 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=及a=15按下列两种方案计算,列出其结果,并对其可靠性,说明原因。
2.方案一 用递推公式 n
aI I n 1
1n +
-=- (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
1
111≤<++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 +++=
当1
a 0+<
≤N N
计算中取N=13开始
【解】:手工分析怎样求解这题。
【计算机求解】:怎样设计程序流程图变量说明能否将某算法设计成具有形式参数的函数形式
【程序如下】:
% --- 算法的数值稳定性实验 % 见 P11 实验课题(一) %
function try_stable global n a
N = 20; % 计算 N 个值 a =;%或者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(% % % %',k,I(k),II(k),III(k))
end
% %--------------------------------------------
function y = f(x) % 定义函数
global n a % 参量 n 为全局变量
y =x.^n./(a+x); % ★注意:这里一定要 '点' 运算
return
% %--------------------------------------------
【运行结果如下】:
当a=
方案I结果方案II结果精确值I( 1)
I( 2)
I( 3)
I( 4)
I( 5)
I( 6)
I( 7)
I( 8)
I( 9)
I(10)
I(11)
I(12)
I(13)
I(14)
I(16)
I(17)
I(18)
I(19)
I(20)
当a=15
方案I结果方案II结果精确值I( 1)
I( 2)
I( 3)
I( 4)
I( 5)
I( 6)
I( 7)
I( 8)
I( 9)
I(10)
I(11)
I(12)
I(13)