一、背景
数值计算方法中存在“蝴蝶效应”,极其微小的误差在计算中不断积累与传播,最终导致计算结果与理论结果严重偏差,使得计算方法完全失效。这种现象称为计算方法的病态性。
二、例题
三、代码
%%
%算法一
p=1;
i=1;
while i<=10
% format short
fprintf('p(%d)=%17.16f\t\t',i,p);%打印输出数列
p=1/3*p;
% fprintf('p(%d)=%8.7f/t/t',i,p);
fprintf('delta(%d)=%17.16f\t\t',i,1/(3^i)-p);%打印输出误差
if mod(i,5)==0
fprintf('\n');
end
i=i+1;
end
fprintf('\n');
%%
%算法二
p0=1;
p1=1/3;
n=1;
while n<=10
fprintf('p(%d)=%17.16f\t\t',n,p0);%打印输出数列
p2=10/3*p1-p0;
p0=p1;
p1=p2;
% fprintf('p(%d)=%8.7f\t\t',n,p0);
fprintf('delta(%d)=%17.16f\t\t',n,1/(3^n)-p0);%打印输出误差
if mod(n,5) == 0
fprintf('\n');
end
n=n+1;
end
%%
四、输出结果
五、结果分析
由上述运算中也可以看出:算法一 delta p 为 0。
’而算法二 delta p 逐渐增大,即稳定性不好。
故算法一是误差小且稳定的算法,而算法二是不稳定的算法。