数值分析实验题_第1页
数值分析实验题_第2页
数值分析实验题_第3页
数值分析实验题_第4页
数值分析实验题_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数值分析实验报告第一题 实验题1.21、实验内容实验1.2 体会稳定性在选择算法中的地位,误差扩张的算法不稳定,而误差衰竭的算法是稳定的。分别采用E.1.6(即E.1.4)E1=1e,En=1-nEn-1,n=2,3和算法算法E.1.7(即E.1.5)En-1=1-Enn,n=N-1,N-2,3,2两种算法。2、源程序%function t_charpt1%数值试验1.2:误差传播与算法稳定性%输入:递推公式选择与递推步数%输出:各步递推值及误差结果,以及递推值和误差与递推步数的关系图 clear;clc;promps = 请选择递推关系式,若选(1.4),请输人1,否则输入2:;result

2、 = inputdlg(promps,charpt 1_2,1,1);Nb = str2num(char(result);if(Nb= 1)&(Nb= 2) errordlg(请选择递推关系式,若选(1.4),请输人1,否则输人2!); return;endresult = inputdlg(请输人递推步数 n:,charpt 1_2,1, 10);steps = str2num(char(result);if(steps1) errordlg(递推步数错误!); return;endresult = inputdlg(请输入计算中所采用的有效数字位数:,charpt 1_2,1,5);Sd

3、= str2num(char(result);format long %设置显示精度result=zeros(1,steps) ; %存储计算结果err=result; %存储计算的绝对误差func=result; %存储用库函数quadl计算出的积分的近似值%用库函数quadl计算积分的近似值 for n= 1:steps fun=(x) x.n.* exp(x-1); func(n) = quadl(fun,0,1);endif(Nb=1) %用算法(1.4)计算 digits(Sd); %控制有效数字位数 result(1) = subs(vpa(1/exp(1); for n=2:1:

4、steps result(n)=subs(vpa(1-n * result(n-1); end err=abs(result-func);elseif(Nb=2) %用算法(1.5)计算 digits(Sd); %控制有效数字位数 result(steps)=0; for n=steps:-1:2 result(n-1) = subs(vpa(1-result(n)/n); end err=abs(result-func);endclf;%清除当前图像窗口 disp(递推值:);disp(sprintf(%e , result);disp(误差:);disp(sprintf( %e ,err)

5、;plot(1:steps,result,-,LineWidth,2);set(gca,linewidth,0.5,fontsize,16);grid on hold on;plot(1:steps,err,r-,LineWidth,2);xlabel(steps n,FontSize,18);ylabel(En-and ERR n-,FontSize,18);legend(En,err(n);title(Algorithm (1., num2str(Nb+3),) Significant Digits , num2str(Sd),FontSize,18);% text(2,err(2),up

6、arrow err(n);% text(4,result(4),downarrow En);3、实验结果(1)算法E1.6,有效数字5位递推值:3.e-01 2.e-01 2.e-01 1.e-01 1.e-01 1.e-01 1.e-01 7.e-02 2.e-01 -1.e+00 误差: 5.e-07 1.e-06 3.e-06 1.e-05 6.e-05 4.e-04 2.e-03 2.e-02 2.e-01 2.02(2)算法E1.6,有效数字6位递推值:3.e-01 2.e-01 2.e-01 1.e-01 1.e-01 1.e-01 1.e-01 1.e-01 -6.e-02 1.

7、e+00 误差: 4.e-07 8.e-07 2.e-06 1.e-05 5.e-05 3.e-04 2.e-03 1.e-02 1.e-01 1.60(3)算法E1.6,有效数字7位递推值:3.e-01 2.e-01 2.e-01 1.e-01 1.e-01 1.e-01 1.e-01 1.e-01 7.e-02 2.e-01 误差: 4.e-08 8.e-08 2.e-07 9.e-07 4.e-06 2.e-05 2.e-04 1.e-03 1.e-02 1.49(4)算法E1.7,有效数字5位递推值:3.e-01 2.e-01 2.e-01 1.e-01 1.e-01 1.e-01 1

8、.e-01 1.e-01 1.e-01 0.e+00 误差: 5.e-07 1.e-06 3.e-06 3.e-06 2.e-06 1.e-05 1.e-04 9.e-04 8.e-03 8.38(5)算法E1.7,有效数字6位递推值:3.e-01 2.e-01 2.e-01 1.e-01 1.e-01 1.e-01 1.e-01 1.e-01 1.e-01 0.e+00 误差: 5.e-07 1.e-07 3.e-07 4.e-07 3.e-06 1.e-05 1.e-04 9.e-04 8.e-03 8.38(6)算法E1.7,有效数字7位递推值:3.e-01 2.e-01 2.e-01

9、1.e-01 1.e-01 1.e-01 1.e-01 1.e-01 1.e-01 0.e+00 误差: 5.e-08 1.e-08 1.e-07 5.e-07 2.e-06 1.e-05 1.e-04 9.e-04 8.e-03 8.384、结果分析采用算法E1.7(即算法E1.5)能得到更精确的结果,当然,有效数字越多,结果越准确。当采用算法E.1.6(即算法E.1.4)时:设En的真实值为En*,则真实值 En*=1-nEn-1* (1)又有 En=1-nEn-1 (2)(1)-(2)得: En*-En=-n(En-1*-En-1) (3)对(3)式两边取绝对值得 en=nen-1 (4

10、)由(4)可计算得 en=n!e1 (5) 当采用算法E.1.7(即算法E.1.5)时:同理:设En的真实值为En*,则真实值 En-1*=1-En*n (6)又有 En-1=1-Enn (7)(6)-(7)得: En-1*-En-1=-(En*-En)n (8)对(8)式两边取绝对值得 n=1nn-1 (9)由(9)可计算得 n=1n1n+11N-11NN (10)算法E.1.6(即算法E.1.4)的e1很小,当n增大时,en增长速度很快,而算法E.1.7(即算法E.1.5)中的N虽然比较大,但是当n减小时,n呈现递减趋势。所以比较两个算法,当某一步产生误差后,算法E.1.6(即算法E.1.

11、4)对后面的影响是扩张的,而算法E.1.7(即算法E.1.5)对后面的影响是衰减的。通过理论分析与计算实验,算法E1.7(即算法E1.5)更加稳定。第二题 实验题3.11、实验内容实验3.1 编制以函数为基的多项式最小二乘拟合程序2、源程序function charpt3format long;%数值实验三:含实验3.1和实验3.2%子函数调用:dlsa%输入:实验选择%输出:原函数及求得的相应插值多项式的函数的图像以及参数alph和误差rresult=inputdlg(请选择实验,若选3.1,请输入1,否则输入2:,charpt_3,1,1);Nb= str2num(char(result)

12、;if(Nb=1)&(Nb=2) errordlg(实验选择错误!); return;endx0=-1:0.5:2;y0=-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552;n=3;%n为拟合阶次if(Nb=1)alph=polyfit(x0,y0,n);y=polyval(alph,x0);r=(y0-y)*(y0-y);%平方误差x=-1:0.01:2;y=polyval(alph,x);plot(x,y,k-);xlabel(x);ylabel(y);hold on;plot(x0,y0,*);title(离散数据的多项式拟合);grid on;el

13、se result=inputdlg(请输入权向量w:,charpt_3,1,1 1 1 1 1 1 1); w=str2num(char(result); a,b,c,alph,r=dlsa(x0,y0,w,n);enddisp(平方误差:,sprintf(%g,r);disp(参数alph:,sprintf(%gt,alph)%-functiona,b,c,alph,r=dlsa(x,y,w,n)%功能:用正交化方法对离散数据作多项式最小二乘拟合。%输入:m+1个离散点(x,y,w),x,y,w分别用行向量给出。%拟合多项式的次数n,0nm.%输出:三项递推公式的参数a,b,拟合多项式s(

14、x)的系数c和alph,%平方误差r=(y-s,y-s),并作离散点列和拟合曲线的图形m=length(x)-1;if(n=m) errordlg(错误:n=m!); return;end%求三项递推公式的参数a,b,拟合多项式s(x)的系数c,其中d(k)=(y,sk);s1=0;s2=ones(1,m+1);v2=sum(w);d(1)=y*w;c(1)=d(1)/v2;for k=1:n xs=x.*s2.2*w;a(k)=xs/v2; if(k=1) b(k)=0; else b(k)=v2/v1; end s3=(x-a(k).*s2-b(k)*s1; v3=s3.2*w; d(k+

15、1)=y.*s3*w;c(k+1)=d(k+1)/v3; s1=s2;s2=s3;v1=v2;v2=v3;end%求平方误差rr=y.*y*w-c*d;%,求拟合多项式s(x)的降幂系数alphalph=zeros(1,n+1);T=zeros(n+1,n+2);T(:,2)=ones(n+1,1);T(2,3)=-a(1);if(n=2) for k=3:n+1 for i=3:k+1 T(k,i)=T(k-1,i)-a(k-1)*T(k-1,i-1)-b(k-1)*T(k-2,i-2); end endendfor i=1:n+1 for k=i:n+1 alph(n+2-i)=alph(

16、n+2-i)+c(k) * T(k,k+2-i); endend%用秦九韶方法计算s(t)的输出序列(t,s)xmin=min(x);xmax=max(x);dx=(xmax-xmin)/(25*m);t=(xmin-dx):dx:(xmax+dx);s=alph(1);for k=2:n+1 s=s.*t+alph(k);end%输出点列x-y和拟合曲线t-s的图形plot(x,y,*,t,s,-);title(离散数据的多项式拟合);xlabel(x);ylabel(y);grid on;3、实验结果平方误差:2.17619e-05参数alph:1.99911-2.99767-3.9682

17、5e-050.4、结果分析利用最小二乘法作曲线的拟合,对实验3.1给出的数据作的三次多项式的图形和数据节点拟合得较好。平方误差的数量级是10的-5次方,因此拟合效果很好。最小二乘曲线拟合实际上是在离散情形下的最佳平方逼近.由于实验观测数据本身带有误差,所求的近似曲线并不要求过所有的给定点,只要求逼近函数能反映数据的变化趋势,最好的标准是要求观测函数(xi)与yi的偏差yi-(xi)的平方和i=1Nyi-(xi)2最小。第三题 实验题4.11、实验内容实验4.1 复化求积公式计算定积分2、源程序function charpt4%数值实验四:含“实验4.1:复化求积公式计算定积分”和“实验4.2:

18、高斯数值积分法用于积分方程求解”%子函数调用:CG_L_I function(复化Gauss_Legendre I)公式、CTrapezia(复化梯形公式)、CSimpson(复化Simpson公式)%输入:实验选择、积分法选择、积分式题号选择%输出:积分(实验4.1)或方程解(实验4.2)的精确值和数值解及误差 result=inputdlg(请选择实验,若选4.1,请输入1,否则输入2:,charpt4,1,1); Nt=str2num(char(result); if(Nt=1)&(Nt=2)errordlg(实验选择错误!);return;end promps=请选择积分法,若用复化梯

19、形,输入T,用复化Simpson,输入S,用复化Gauss_Legendre,输入GL:; result=inputdlg(promps,charpt4,1,T); Nb=char(result); if(Nb=T & Nb=S & Nb=GL)errordlg(积分公式选择错误!);return;end if(Nt=1) result=inputdlg(请输入积分式题号14:,实验4.1,1,1); Nb_f=str2num(char(result); if(Nb_f4)errordlg(没有该积分式!);return;end switch Nb_f case 1 fun=inline(-2

20、./(x.2-1);a=2;b=3; case 2 fun=inline(4./(x.2+1);a=0;b=1; case 3 fun=inline(3.x);a=0;b=1; case 4 fun=inline(x.*exp(x);a=1;b=2; end tol=0.5e-7;h=0.01; if(Nb=T)%用复化梯形公式 t=(fun(a)+fun(b)*(b-a)/2; k=1;t0=0; while(abs(t-t0)=tol*3) t0=t;h=(b-a)/2k; t=t0/2+h*sum(fun(a+h:2*h:b-h); k=k+1; end elseif(Nb=S)%用复化

21、Simpson公式 t=quad(fun,a,b,tol); elseif(Nb=GL)%用复化Gauss_Legendre I N=floor(b-a)/h);t=0;xk=0; for k=0:N xk=a+k*h+h/2; t=t+fun(xk-h/(2*sqrt(3)+fun(xk+h/(2*sqrt(3); end t=t*h/2; end elseif(Nt=2) result=inputdlg(请输入方程式题号1或2:,实验4.2,1,1); Nb_f=str2num(char(result); if(Nb_f=1 & Nb_f=2)errordlg(没有该方程式!);return;end result=inputdlg(请输入步长:,实验4.2,1,0.01); h=str2num(char(result); if(h 实验4.1题(1)的计算结果:-0.40547精确解:ln2-ln3=-0.绝对误差:1.3944e-008 实验4.1题(2)的计算结果:3.1416精确解:pi=3.979绝对误差:3.9736e-008 实验4.1题(3)的计算结果:1.82

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论