预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

解(1):采用Jacobi迭代法时,Matlab计算程序为:clearclci=1;a=[521;-142;2-310];d=diag(diag(a));l=d-tril(a);u=d-triu(a);d0=inv(d);b=[-12;20;3];x0=[1;1;1];B=d0*(l+u);f=d0*b;x=B*x0+f;whilenorm(x-x0,inf)>=1e-4x0=x;x=B*x0+f;i=i+1;endxi采用Gauss-Seidel迭代法计算时,Matlab计算程序为:clearclci=1;a=[521;-142;2-310];d=diag(diag(a));l=d-tril(a);u=d-triu(a);b=[-12;20;3];x0=zeros(3,1);B=inv(d-l)*u;f=inv(d-l)*b;x=B*x0+f;whilenorm(x-x0,inf)>=1e-4x0=x;x=B*x0+f;i=i+1;endxi习题6.7function[n,x]=sor22(A,b,X,x1,nm,w,ww)%用超松弛迭代法求解方程组Ax=b%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,x1为方程的精确解,nm为最大迭代次数,w为误差精度,ww为松弛因子%输出:x为求得的方程组的解构成的列向量,n为迭代次数n=1;m=length(A);D=diag(diag(A));%令A=D-L-U,计算矩阵DL=tril(-A)+D;%令A=D-L-U,计算矩阵LU=triu(-A)+D;%令A=D-L-U,计算矩阵UM=inv(D-ww*L)*((1-ww)*D+ww*U);%计算迭代矩阵g=ww*inv(D-ww*L)*b;%计算迭代格式中的常数项%下面是迭代过程whilen<=nmx=M*X+g;%用迭代格式进行迭代ifnorm(x1-X,'inf')<wdisp('迭代次数为');ndisp('方程组的解为');xreturn;%上面:达到精度要求就结束程序,输出迭代次数和方程组的解endX=x;n=n+1;end%下面:如果达到最大迭代次数仍不收敛,输出警告语句及迭代的最终结果(并不是方程组的解)disp('在最大迭代次数内不收敛!');disp('最大迭代次数后的结果为');xa=[4-10;-14-1;0-14];b=[1;4;-3];c=200;d=5e-3;f=1.03;k=[0;0;0];x1=[1/2;1;-1/2];g=sor22(a,b,k,x1,c,d,f)习题6.8function[n,x]=sor(A,b,X,nm,w,ww)%用超松弛迭代法求解方程组Ax=b%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为最大迭代次数,w为误差精度,ww为松弛因子%输出:x为求得的方程组的解构成的列向量,n为迭代次数n=1;m=length(A);D=diag(diag(A));%令A=D-L-U,计算矩阵DL=tril(-A)+D;%令A=D-L-U,计算矩阵LU=triu(-A)+D;%令A=D-L-U,计算矩阵UM=inv(D-ww*L)*((1-ww)*D+ww*U);%计算迭代矩阵g=ww*inv(D-ww*L)*b;%计算迭代格式中的常数项%下面是迭代过程whilen<=nmx=M*X+g;%用迭代格式进行迭代ifnorm(x-X,'inf')<wdisp('迭代次数为');ndisp('方程组的解为');xreturn;%上面:达到精度要求就结束程序,输出迭代次数和方程组的解endX=x;n=n+1;end%下面:如果达到最大迭代次数仍不收敛,输出警告语句及迭代的最终结果(并不是方程组的解)disp('在最大迭代次数内不收敛!');disp('最大迭代次数后的结果为');xa=[521;-142;2-310];b=[-12;20;3];c=200;d=5e-6;f=0.9;k=[0;0;0];g=sor(a,b,k,c,d,f)