1 / 20
文档名称:

矩阵分析MATLAB.doc

格式:doc   大小:265KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

矩阵分析MATLAB.doc

上传人:小枷 2018/10/31 文件大小:265 KB

下载得到文件列表

矩阵分析MATLAB.doc

相关文档

文档介绍

文档介绍:《矩阵与数值分析》课程数值实验作业
教学班号:5班
任课教师:董波
报告人:王振
专业院系:建设工程学部土木工程学院岩土工程专业
学号:20906015
(注:作业中所有程序均用Matlab编写)
一、解线性方程组
-Seidel迭代法求解
迭代法计算停止的条件为:
用Jacobi迭代法的程序为:()
clear;
A=[8 -3 2;4 11 -1;2 1 4];
b=[20 33 12]';
x0=[0 0 0]';
tol=1e-6;
M=200;
dv=0;
D=diag(diag(A));
U=-triu(A,1);
L=-tril(A,-1);
B=inv(D)*(U+L);
f=inv(D)*b;
for k=1:M
x=B*x0+f;
e=norm(x-x0,inf);
x0=x;
if e<=tol
dv=1;break
end
end
if dv==1
G=['迭代次数',num2str(k)]
y=vpa(x,8)
else
y=['迭代',num2str(M),'次失败']
end
运行结果为:
G =
迭代次数16
y =



用Gause-Seidel迭代法的程序为:()
clear;
A=[8 -3 2;4 11 -1;2 1 4];
b=[20 33 12]';
x0=[0 0 0]';
tol=1e-6;
dv=0;M=100;
D=diag(diag(A));
U=-triu(A,1);
L=-tril(A,-1);
B=inv(D-L)*U;
f=inv(D-L)*b;
for k=1:M
x=B*x0+f;
e=norm(x-x0,inf);
x0=x;
if e<=tol
dv=1;break
end
end
if dv==1
G=['迭代次数:',num2str(k)]
y=vpa(x,8)
else
y=['迭代',num2str(M),'次失败'];
end
运行结果为:
G =
迭代次数:9
y =



分析:用Gause-Seidel迭代法的收敛速度明显高于Jacobi迭代法。
2. 用Gauss列主元消去法、QR方法求解如下方程组:
解:
Causs列主元消去法
Function x=Gauss(A,b)
[n,m]=size(A);
nb=length(b);
%当方程组列与行的维数不相等时,停止计算,并输出出错信息
if n~=m
error(‘The rows and columns of matrix A must be equal!’);
return;
end
%当方程组与右端项的维数不匹配时,停止计算并输出出错信息
if n~=nb
error(‘The columns of A must be equal the length of b!’);
return;
end
%开始计算,先赋初值
x=zeros(n,1);
for k=1:n-1
%选主元
max1=0;
for i=k:n
if abs (A(i,k))>max1
max1= abs (A(i,k));r=i;
end
end
if max1<1e-10
return;
end
%交换两行
if r>k
for j=k:n
z=A(k,j); A(k,j)= A(r,j); A(r,j)=z;
end
z=b(k); b(k)=b(r); b(r)=z;
end
%消元过程
for i=k+1:n
m= A(i,k)/ A(k,k);
for j= k+1:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)= b(i)-m*b(k);
end
end
%回带过程
if abs(A(n,n))<1e-10
return;
end
for k=n-1:1
for j=k+1:n
b(k)=b(k)-A(k,j)*x(j);
end
x(k)=b(k)/A(k,k);
end
x(k)= b(k)/A(k,k);
end
>>A=[2 4 3 1;8 2 0 0;5 0 4 0;9 0 0 5];
>>b=[12 6 23 16];
>>gauss(A,b)
计算结果:
方程组