前言
这个代码的实现,其实主要是因为所修课程当中老师要求,所以自己就写了这么一个代码,具体原理就不提及了,各处文献都写的很清楚了,如果想要从原理仔细学习,可以参照各种数值分析课本。
这里讲一下这里面的一些问题:
·首先,这其中关于迭代是否收敛的判断有一点小问题,就是关于迭代矩阵(D-L)\U求其谱半径作为判断标准的问题:我只采用了迭代矩阵谱半径为判断标准,但是遇到了有一些矩阵该值比1稍大小数点后一点点,被判断不收敛,但实际上可以收敛;
·其次,关于高斯-赛德尔迭代法的实现形式,我并非采用的是矩阵分解的形式,而是以方程组的解法来进行迭代。
嘛,总的来说,只算作一个样例供大家参考~(Kira)
代码
function [X1]=GS(A_matrix, B)
%取得n并给输出向量留一个初值
[row_a,col_a] = size(A_matrix);
X1=zeros(row_a,1);
%取得对角矩阵、严格上三角矩阵、严格下三角矩阵
D=zeros(row_a,col_a);
for i=1:row_a
D(i,i)=A_matrix(i,i);
end
U=-A_matrix;
for i=1:row_a
for j=1:i
U(i,j