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

  • 格式:doc
  • 大小:59.00 KB
  • 文档页数:6

下载文档原格式

  / 13
  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 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开始

【解】:手工分析怎样求解这题。

【计算机求解】:怎样设计程序?流程图?变量说明?能否将某算法设计成具有形式参数的函数

形式?

【程序如下】:

% myexp1_1.m --- 算法的数值稳定性实验 % 见 P11 实验课题(一) %

function try_stable 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