——病态问题
实验1.1病态问题
实验目的:算法有“优”和“劣”之分,问题也有“好”和“坏”之别,对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感,反正属于好问题。 问题提出:
考虑一个高次的代数多项式
p(x)(x1)(x2)(x20)(xk)
k120显然该多项式的全部根为1,2,„„,20,共计20个,且每个根都是单重的。现考虑该多项式的一个扰动
p(x)x190,
其中,ε是一个非常小的数,这相当于是对方程中的x19的系数做一个小的扰动,比较两个方程根的差别,从而分析方程的解对扰动的敏感性。
function t_charp1_1
%数值实验1.1变态问题
%输入:[0 20]之间的扰动项及小的扰动常数 %输出:加扰动都得到的全部根 clc
result=inputdlg({'请输入扰动项:在[0 20]之间的整数:'},'charpt 1-1',1,{'19'});
Numb=str2num(char(result));
if((Numb>20)|(Numb<0)) errordlg('请输入正确的扰动项:[0 20]之间的整数!');return;end
result=inputdlg({'请输入(0 1)间的扰动常数:'},'charpt 1_1',1,{'0.00001'});
ess=str2num(char(result)); ve=zeros(1,21); ve(21-Numb)=ess;
root=roots(poly(1:20)+ve);
disp(['对扰动项',num2str(Numb),'加扰动',num2str(ess),'得到的全部根为:']);
disp(num2str(root));
结果分析:
请输入扰动项:在[0 20]之间的整数:19 请输入(0 1)间的扰动常数:0.00001 对扰动项19加扰动1e-005得到的全部根为:
22.5961+2.3083i 22.5961-2.3083i 18.8972+5.00563i 18.8972-5.00563i 14.9123+4.95848i 14.9123-4.95848i 12.0289+3.73551i 12.0289-3.73551i 10.059+2.33019i 10.059-2.33019i 8.63833+1.05643i 8.63833-1.05643i 7.70881+0i 7.02809+0i 5.99941+0i 5.00001+0i 4+0i 3+0i
2+0i 1+0i
请输入扰动项:在[0 20]之间的整数:14 请输入(0 1)间的扰动常数:0.00001 对扰动项14加扰动1e-005得到的全部根为: 20 19.0003 17.998 17.0062 15.9879 15.0149 13.9885 13.0046 12.0009 10.9976 10.0017 8.99932 8.00017 6.99997 6 5
4 3 2 1
请输入扰动项:在[0 20]之间的整数:13 请输入(0 1)间的扰动常数:0.00001 对扰动项13加扰动1e-005得到的全部根为:
20.0002 18.9987 18.0038 16.9952 15.9995 15.0117 13.9791 13.0207 11.9868 11.0058 9.99846 9.00018 8.00004 6.99998 6 5 4 3
2 1
请输入扰动项:在[0 20]之间的整数:1 请输入(0 1)间的扰动常数:0.00001 对扰动项1加扰动1e-005得到的全部根为:
20.0002 18.9987 18.0038 16.9952 15.9995 15.0117 13.9791 13.0207 11.9868 11.0058 9.99846 9.00018 8.00004 6.99998 6 5 4 3 2 1
结果分析:
如图1、2所示,由上述结果可以看出,对加相同的干扰值ε在X的不同项上与不加干扰得到的结果相比可以看出,对扰动项x19加扰动1e-005得到的全部根、对扰动项x14加扰动1e-005得到的全部根与没有加扰动时的结果相比,相差较大,而且对扰动项x19加1e-005的结果干扰较大。从对扰动项13加扰动1e-005得到的全部根、对扰动项1加扰动1e-005得到的全部根与不加扰动时的结果相比,与不加干扰时的结果相同,可以看出以加在干扰项的次数越低对结果的干扰影响越小,由于计算的精度问题。可以看出到加到13项时对结果基本没有影响。
虽然加的干扰很小,但是,加在不同的项上,对结果的影响也会相差也会不同,而且,从结果中可以看出,对数值较大的计算结果影响较大,而对于数值较小的影响会很小,甚至没有影响。
图1、Y轴为计算结果的虚部
图2、Y轴为计算结果的实部
对扰动项19加扰动1e-008得到的全部根 为:
19.8692+0.482991i 19.8692-0.482991i 17.8767+1.52568i 17.8767-1.52568i 15.4031+1.75072i 15.4031-1.75072i 13.1302+1.27959i 13.1302-1.27959i 11.2511+0.480634i 11.2511-0.480634i 9.93016+0i 9.01013+0i 7.99898+0i 7.0001+0i 5.99999+0i 5+0i 4+0i 3+0i 2+0i 1+0i
对扰动项19加扰动1e-013得到的全部根为:
20.0002 18.9977 18.012 16.9595 16.0801 14.8639 14.1504 12.8767 12.0873 10.9597 10.0163 8.99534 8.00102 6.99984 6.00002 5 4 3 2 1
对扰动项19加扰动1e-014得到的全部根为:
20.0002 18.9987 18.0038 16.9952 15.9995 15.0117 13.9791 13.0207 11.9868 11.0058 9.99846 9.00018 8.00004 6.99998 6 5 4 3 2 1
对扰动项19加扰动1e-023得到的全部根为:
20.0002 18.9987 18.0038 16.9952 15.9995 15.0117 13.9791 13.0207 11.9868 11.0058 9.99846 9.00018 8.00004 6.99998 6 5 4 3 2 1
结果分析:
由上述结果可以看出,加在相同扰动项上的干扰越大对计算结果影响越大,对扰动项19加扰动1e-008得到的全部根可以看出此时对计算结果影响最大,而当干扰减小时,计算结果越来越接近没受干扰时的计算结果。从数据和图形看出,计算结果越大,扰动对它的影响越大,对计算结果较小的数值几乎没有影响。
图3、Y轴为计算结果的实部
图2、Y轴为计算结果的虚部
因篇幅问题不能全部显示,请点此查看更多更全内容