资源描述:
《算法的数值稳定性实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、专业 序号 姓名 日期 实验1算法的数值稳定性实验【实验目的】1.掌握用MATLAB语言的编程训练,初步体验算法的软件实现;2.通过对稳定算法和不稳定算法的结果分析、比较,深入理解算法的数值稳定性及其重要性。【实验内容】1.计算积分(n=0,1,2......,10)其中a为参数,分别对a=0.05及a=15按下列两种方案计算,列出其结果,并对其可靠性,说明原因。2.方案一用递推公式(n=1,2,......,10)递推初值可由积分直接得3.方案二用递推公式(n=N,N
2、-1,......,1)根据估计式当或当取递推初值为当或当计算中取N=13开始【程序如下】:%myexp1_1.m---算法的数值稳定性实验%见P11实验课题(一)%functionyyjjglobalnaN=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);%创建Nx1矩阵(即列向量
3、),元素全为零I(1)=-a*I0+1;fork=2:NI(k)=-a*I(k-1)+1/k;end%%--------------------------------------------%%[方案II]用递推公式%I(k-1)=(-I(k)+1/k)/a%II=zeros(N,1);ifa>=N/(N+1)II(N)=(2*a+1)/(2*a*(a+1)*(N+1));elseII(N)=(1/(a+1)/(N+1)+1/N)/2;endfork=N:-1:2II(k-1)=(-II(k)+
4、1/k)/a;end%%--------------------------------------------%%调用matlab高精度数值积分命令quadl计算以便比较III=zeros(N,1);fork=1:Nn=k;III(k)=quadl(@f,0,1);end%%--------------------------------------------%%显示计算结果clcfprintf('方案I结果方案II结果精确值')fork=1:N,fprintf('I(%2.0f)%1
5、7.7f%17.7f%17.7f',k,I(k),II(k),III(k))end%%--------------------------------------------functiony=f(x)%定义函数globalna%参量n为全局变量y=x.^n./(a+x);%★注意:这里一定要'点'运算return%%--------------------------------------------【运行结果如下】:当a=0.05方案I结果方案II结果精确值I(1)0.8477739-919
6、648916620722180000.00000000.8477739I(2)0.457611345982445831036109000.00000000.4576113I(3)0.3104528-2299122291551805700.00000000.3104528I(4)0.2344774114956114577590290.00000000.2344776I(5)0.1882761-5747805728879515.00000000.1882761I(6)0.157252928739028
7、6443975.94000000.1572529I(7)0.1349945-14369514322198.65400000.1349945I(8)0.1182503718475716110.05774000.1182503I(9)0.1051986-35923785805.39177700.1051986I(10)0.09474011796189290.36958890.0947401I(11)0.0861721-89809464.42757040.0861724I(12)0.0790247449
8、0473.30471190.0790247I(13)0.0729718-224523.58831250.0729718I(14)0.067780011226.25084420.0677800I(15)0.0632777-561.24587550.0632777I(16)0.059336128.12479380.0593361I(17)0.0558567-1.34741620.0558567I(18)0.05276270.12292640.0527627I(19)0.04999340