华中科技大学数值分析-数值分析实验程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Functiont_charpt1_1%数值试验1.1病态问题%输入:[020]之间的扰动项及小的扰动常数%输出:加扰动后得到的全部根Result=inputdlg({‘请输入扰动项:在[020]之间的整数:’},’charpt1_1’,1’{‘19’});Numb=str2num(char(result));if((Numb20)|(Numb0))errordlg(‘请输入正确的扰动项:[020]之间的整数!’);return;endresult=inputdlg({‘请输入(01)之间的扰动常数:’},’charpt1_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));functioncharpt3%数值实验三:含“实验3.1”和“实验3.2”%子函数调用:dlsa%输入:实验选择%输出:原函数及求得的相应插值多项式的函数的图像以及参数alph和误差rresult=inputdlg({‘请选择实验,若选3.1,请输入1,否则输入2:’},’charpt_3’,1,{‘1’});Nb=str2num(char(result));if(Nb~=1&(Nb~=2)errordlg(‘实验选择错误!’));return;endx0=-1:0.5:2y0=[-4.447-0.4520.5510.048-0.4470.5494.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(‘y0*andployfit.y-’);holdon;plot(x,y,’k-’);title(‘离散数据的多项式拟合’);gridon;elseresult=inpurdlg({‘请输入权向量w:’},’charpt_3,1,{‘[1111111]’});w=str2num(char(result));[a,b,c,alph,r]=dlsa(x0,y0,w,n);enddisp([‘平方误差:’,sprint(‘%g,r’)]);disp([‘参数alph:’,sprint(‘%\t’,alph)])%------------------------------------------------------------------------------------------------------------------------------function[a,b,c,alph,r]=dlsa(x,y,w,n)%功能:用正交化方法对离散数据作多项式最小二乘拟合。%输入:m+1个离散点(x,y,w),x,y,w分别用行向量给出。%拟合多项式的次数n,0nm.%输出:三项递推公式的参数a,b,拟合多项式s(x)的系数c和alph,%平方误差r=(y-s,y-s),并作离散点列和拟合曲线的图形m=length(x)-1;if(n1|n=m)errordlg(‘错误:n1或者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;fork=1:nxs=x.*s2.^2*w’;a(k)=xs/v2;if(k==1)b(k)=0;elseb(k)=v2/v1;ends3=(x-a(k)).*s2-b(k)*s1;v3=s3.^2*w’;d(k+1)=y.*s3*w’;c(k+1)=d(k+1)/v3end%求平方误差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)fork=3:n+1fori=3:k+1T(k,i)=T(k-1,i)-a(k-1)*T(k-1,i-1)-b(k-1)*T(k-2,i-2);endendendfori=1:n+1fork=i:n+1alph(n+2-i)=alph(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);fork=2:n+1s=s.*t+alph(k);end%输出点列x-y和拟合曲线t-s的图形plot(x,y,’*’,t,s,’-’);title(‘离散数据的多项式拟合’);xlabel(‘x’);ylbel(‘y’);gridon;functioncharpt5_1%数值实验5.1:常微分方程性态和R-K法稳定性实验%输入:参数a,步长h%输出:精确解和数值解图形对比clf;result=inputdlg({‘请输入[-5050]间的参数a:’},’实验5.1’,1,{‘40’});a=str2num(char(result));if((a-50)|(a50))errordlg(‘请输入正确的参数a!’);return;endresult=inputdlg({‘请输入(01)之间的步长:’},‘实验5.1’,1,{‘0.01’});h=str2num(char(result));if((h=1)|(h=0))errordlg(‘请输入正确的(01)间的步长!’);return;endx=0:h:1;y=x;N=length(x);y(1)=1;func=inline(‘1+(y-x).*a’);forn=1:N-1k1=func(a,x(n),y(n));k2=func(a,x(n)+h/2,y(n)+k1*h/2);k3=func(a,x(n)+h/2,y(n)+k2*h/2);k4=func(a,x(n)+h/2,y(n)+k3*h/2);y(n+1)=y(n+h*(k1+2*k2+2*k3+k4)/6;endy0=exp(a*x)+x;plot(x,y0,’g+’);holdon;plot(x,y,’b--’);xlabel(‘x’);ylabel(‘y0=exp(ax)+x:+andR-K(x)--’)

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功