Gauss-Seidel迭代矩阵求法的思考
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab代码:
%求Gauss-Seidel矩阵
function G_SB(A)
[m,n]=size(A);
if m~=n
disp('系数矩阵不是方阵')
return
end
%% 用矩阵运算求Gauss-Seidel迭代矩阵
D=diag(diag(A));
U=-triu(A,1);
L=tril(A,-1);
disp('矩阵运算求出的迭代矩阵')
B1=inv(D+L)*U,
%%
B=zeros(m,n);
for j=2:n
B(1,j)=-A(1,j)/A(1,1);
end
for i=2:m
for j=2:n
k=1:i-1;
if i>=j
B(i,j)=sum(-A(i,k)*B(k,j))/A(i,i);
continue
end
B(i,j)=(sum(-A(i,k)*B(k,j))-A(i,j))/A(i,i);
end
end
disp('直接法求出的迭代矩阵')
B,
end
给定系数矩阵,并得结果:
>> A=[5 1 -1 -2;2 8 1 3;1 -2 -4 1;-1 3 2 7];G_SB(A)矩阵运算求出的迭代矩阵
B1 =
0 -0.2000 0.2000 0.4000
0 0.0500 -0.1750 -0.4750
0 -0.0750 0.1375 0.5875
0 -0.0286 0.0643 0.0929
直接法求出的迭代矩阵
B =
0 -0.2000 0.2000 0.4000
0 0.0500 -0.1750 -0.4750
0 -0.0750 0.1375 0.5875
0 -0.0286 0.0643 0.0929
B与B1是两种方法得出的,但其结果完全相同。