1、大连理工矩阵与数值分析上机作业矩阵与数值分析(上机作业)Matrix and numerical analysis学 院(系): 学 生 姓 名: 指 导 老 师: 学 号: 完 成 日 期: 2012.11.24 大连理工大学Dalian University of Technology1.给定n阶方程组,其中, 则方程组有解。对和,分别用Gauss消去法和列主元消去法解方程组,并比较计算结果。1)程序代码:输入A,bfunction X,A,b,ep = gauss(A,b)n=length(A);%选主元for k=1:n-1 ,p=max(abs(A(k:n,k); p=p+k-1;
2、if pk y=A(k,:);A(k,:)=A(p,:);A(p,:)=y; y2=b(k);b(k)=b(p);b(p)=y2; end if abs(A(k,k)ep X=B*X0+f; t=max(abs(X-X0); X0=X; k=k+1; if k1000 disp(不收敛) break endend end2)结果分析:情况一:对于b=(1,1,1),X0=(0,0,,0);Jacobi迭代收敛,迭代次数20;G-S收敛,迭代次数13;X0=(1,2,3,10),Jacobi迭代收敛,迭代次数23;G-S收敛,迭代次数16情况二:对于b=(1,2,10),X0=(0,0,,0)
3、;Jacobi迭代收敛,迭代次数23;G-S收敛,迭代次数16;X0=(1,2,3,10),Jacobi迭代收敛,迭代次数22;G-S收敛,迭代次数15在这两种情况下,两种方法均收敛,且G-S收敛速度较快3. 用迭代法求方程的全部根,要求误差限为。1)程序代码:二分法:cleart=1;ep=0.5*10-8;%求根区间a=-10000;b=10000;m=0;p=3;c(10000)=0;cc(10000)=0;c(1)=a;c(2)=b;c(3)=(a+b)/2;d(6)=0;while m3 m=0; for i=1:p-1 cc(2*i-1)=c(i); cc(2*i)=(c(i)+c
4、(i+1)/2; end cc(2*i+1)=c(p); c=cc; p=2*p-1; for i=1:p-1if(f(c(i)*f(c(i+1)1e3 disp(error) break endend%求根for i=1:3 a=d(2*i-1);b=d(2*i); z=(a+b)/2; while abs(a-b)2*ep if f(z)*f(a)ep) n=n+1; x=linspace(0,1,n+1); dx=1/n; %g=(f1(x(1)+2.*sum(f1(x(2:n)+f1(x(n+1)/(2*n); %k1=n+1; %d1=abs(g-pi/4); %x50=x(2:n+
5、1)-ones(1,n).*dx/2; %g=(f1(x(1)+4.*sum(f1(x50)+2*sum(f1(x(2:n)+f1(x(n+1)/(6*n); %k2=2*n+1; %d2=abs(g-pi/4); x25=x(2:n+1)-ones(1,n).*dx*3/4;x50=x(2:n+1)-ones(1,n).*dx/2;x75=x(2:n+1)-ones(1,n).*dx/4; g=(7*f1(x(1)+32*sum(f1(x25)+12*sum(f1(x50)+32*sum(f1(x75)+14*sum(f1(x(2:n)+7*f1(x(n+1)/(90*n); d3=abs(
6、g-pi/4); k3=4*n+1;end 2)结果分析:a) 用梯形公式计算,积分间距,h=8.94-4,达到要求精度,误差为4.99*10-8,需要计算1120个函数值;用simpson公式计算,积分间距h=0.0667,达到要求精度,误差为3.85*10-8,需要计算31个函数值;用Cotes公式计算,积分间距h=0.25,达到要求精度。误差为1.37*10-8,需要计算17个函数值;b) 用梯形公式计算,积分间距,h=0.0011,达到要求精度,误差为5.00*10-8,需要计算914个函数值;用simpson公式计算,积分间距h=0.25,达到要求精度,误差为3.78*10-8,需要
7、计算9个函数值;用Cotes公式计算,积分间距h=0.3333,达到要求精度。误差为1.10*10-8,需要计算13个函数值;综上可以看出,梯形公式计算收敛最慢,计算量非常大;应用cotes公式计算,收敛最快,但计算量并不总是最少,在b)中由于每个区间中需要计算三个函数值,计算量反而比simpson公式大,并且它代码复杂。在两例中,simpson均表现较好的收敛性和较小的计算量,并且代码不很复杂。7. 用4阶Runge-Kutta法求解微分方程:分别用和计算,并比较两个近似值与精确解1)程序代码% 4阶Runge-Kutta法:h=0.1;yy=zeros(1,2/h+1);yy(1)=1;f
8、or i=1:(2/h)yk=yy(i);xk=(i-1)*h; k1=-yk+cos(2*xk)-2*sin(2*xk)+2*xk*exp(-xk);k2=-(yk+k1*h/2)+cos(2*(xk+h/2)-2*sin(2*(xk+h/2)+2*(xk+h/2)*exp(-(xk+h/2);k3=-(yk+k2*h/2)+cos(2*(xk+h/2)-2*sin(2*(xk+h/2)+2*(xk+h/2)*exp(-(xk+h/2);k4=-(yk+k3*h)+cos(2*(xk+h)-2*sin(2*(xk+h)+2*(xk+h)*exp(-(xk+h);yy(i+1)=yk+h*(k1+2*k2+2*k3+k4)/6;endx=linspace(0,2,2/h+1);y=x.2.*exp(-x)+cos(2.*x);dy=y-yy;max(abs(dy)plot(x,y,-,x,yy,-)2)结果分析h1=0.1最大误差为1.01*10-6。实线为真实值,圆圈为近似值h2=0.05 最大误差为6.34*10-8,可见步长缩短一倍,结果精度提高O(h1/h2)4)倍。实线为真实值,圆圈为近似值
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2