资源描述:
《数值分析MATLAB编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、题目1:用Gauss消去法解方程组x1+2x2+3x3=143x1+x2+5x3=202x1+5x2+2x3=18解:用MATLAB编写的程序如下:A=[123;315;252];b=[142018]';[m,n]=size(A);ifrank(A)~=rank([A,b])errorreturn;endc=n+1;A(:,c)=b;fork=1:n-1A(k+1:n,k:c)=A(k+1:n,k:c)-(A(k+1:n,k)/A(k,k))*A(k,k:c);endx=zeros(length(b),1);x(n)=A(n,c)/A(n,n);fork=
2、n-1:-1:1x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k);enddisp('x=');x=disp(x);题目2:已知4=2,9=3,用线性插值法求7的近似值。>>x0=4:9;>>y0=x0.^0.5;>>x=4:1:9;>>y=x.^0.5;>>y2=interp1(x0,y0,x);>>figure(2),plot(x,y,'b',x,y2,'k:'),grid>>disp('y2=')y2=>>disp(y2)2.00002.23612.44952.64582.82843.0000题目三:设fx=ex,在[-
3、1,1]上用Legendre多项式作fx的3次最佳平方逼近多项式。>>a=-1;b=1;>>n=3;>>symsx;>>fx=exp(x);>>exp(x);>>fork=3F=x^k*fx;d(k+1)=int(F,a,b);end>>d=reshape(d,n+1,1);>>H=hilb(n+1);>>a=Hda=-3696*exp(-1)+536*exp(1)42900*exp(-1)-6180*exp(1)-105240*exp(-1)+15120*exp(1)69300*exp(-1)-9940*exp(1)>>vpa(a)ans=97.316
4、6454843974255360582301282-1016.9536736220239580786068330332384.788857418174033934624995061-1525.676101701956752911460193057题目四:用Gauss-Legendre求积公式(n=1,2)计算积分I=01x2exdx。>>f=inline('((1+t)/2)^2*exp((1+t)/2)')f=Inlinefunction:f(t)=((1+t)/2)^2*exp((1+t)/2)>>I1=1*feval(f,-0.57735)+1*fe
5、val(f,0.57735);>>I1=I1/2I1=0.7119%n=1,两点Gauss-Legendre公式求解%>>f=inline('((1+t)/2)^2*exp((1+t)/2)')f=Inlinefunction:f(t)=((1+t)/2)^2*exp((1+t)/2)>>x=[0.7745966692,-0.7745966692,0]x=0.7746-0.77460>>A=[0.555555556,0.555555556,0.888888889]A=0.55560.55560.8889>>I2=0;>>fori=1:length(x)I2
6、=I2+feval(f,x(i))/2*A(i);end>>I2I2=0.7183%n=2,三点Gauss-Legendre公式求解%题目五:用J法和GS法分别求解方程组10312-1031310x1x2x3=14-514其准确解为x*=1,1,1T。解:J法:>>A=[103114;2-103-5;131014]>>MAXTIME=50;>>eps=1e-5;>>[n,m]=size(A);>>x=zeros(n,1);>>y=zeros(n,1);>>k=0;>>disp('X=');>>while1disp(x');fori=1:1:ns=0.0;f
7、orj=1:1:nifj~=is=s+A(i,j)*x(j);endy(i)=(A(i,n+1)-s)/A(i,i);endendfori=1:1:nmaxeps=max(0,abs(x(i)-y(i)));endifmaxeps<=eps%fori=1:1:nx(i)=y(i);endreturn;endfori=1:1:nx(i)=y(i);y(i)=0.0;endk=k+1;ifk>MAXTIMEerrorreturn;endendGS法:>>formatlong;A=[103114;2-103-5;131014]>>[n,m]=size(A);>>
8、Maxtime=50;>>Eps=10E-5;>>x=zeros(