# Matlab实现——严格对角占优三对角方程组求解（高斯赛尔德Gauss-Seidel迭代、超松弛）

——(1)

其系数矩阵是对角的，且元素满足严格对角占优：

1)追赶法：

——(2)

——(3)

——(4)

function X=trisys(A,D,C,B)

%Input- A is the subdiagonal of the coefficient matrix

%     - D is the main diagonal of the coefficient matrix

%     - C is the superdiagonal of the coefficient matrix

%     - B is the constant vector of the linear system

%Output - X is the solution vector

N=length(B);

X=zeros(N,1);

for k=2:N

mult=A(k-1)/D(k-1);

D(k)=D(k)-mult*C(k-1);

B(k)=B(k)-mult*B(k-1);

end

X(N)=B(N)/D(N);

for k= N-1:-1:1

X(k)=(B(k)-C(k)*X(k+1))/D(k);

end



2)迭代法(采用改进的Gauss-Seidel迭代)（这个方法是看了超松弛迭代后，得出的类似方法）：

——(1)

【1】      给一个初始列向量：

2】利用迭代公式：

(注意：当ω=1时，就是我们所熟悉的Gauss-Seidel迭代)

ω是迭代加速的相关系数——松弛因子

function X=acc(A,D,C,B,P,delta, max1,w)

%Input- A is the subdiagonal of the coefficient matrix

%     - D is the main diagonal of the coefficient matrix

%     - C is the superdiagonal of the coefficient matrix

%     - B is the constant vector of the linear system

%     - P is an N x 1 matrix; the initial guess

%     - w is the convergence multiplicate

%     - delta is the tolerance for P

%     - max1 is the maximum number of iterations

% Output - X is an N x 1 matrix: the gauss-seidel approximation

%           to the solution of AX = B

N = length(B);

L=P;                   %L is a mediut

for k=1:max1          %max1th iteration

X=L;               %initial the X=[x1;x2;…;xN]=L=[d01;d02;…;d0N]

% the kth iteration of valuing the X

for j=1:N

if j==1

X(1)=(1-w)*X(1)+w*(B(1)-C(1)*X(2))/D(1);

elseif j==N

X(N)=(1-w)*X(N)+w*(B(N)-A(N-1)*X(N-1))/D(N);

else

%X contains the kth approximations

X(j)=(1-w)*X(j)+w*(B(j)-A(j-1)*X(j-1)-C(j)*X(j+1))/D(j);

end

end

err=abs(norm(X-L));  %get the error

L=X;

relerr=err/(norm(X)+eps);

if (err<delta)|(relerr<delta) %fit the over condition of iteration

break

end

end



在求解该问题的过程中，对于求解方程组的方法选择是一个很重要的因素，注意到这个系数矩阵是50阶严格对角占优三对角稀疏矩阵，查询了相关知识后，我个人认为，50阶的严格对角占优三对角稀疏矩阵，完全可以用高斯消去法，这是因为高斯消去后的上三角(或者下三角)仍然是严格对角占优，而对于这个稀疏矩阵，迭代法是一个非常不错的选择，而我采取的迭代法受限制的就是这个松弛因子w，注意到0<w≤1的时候，该方法是任何初始向量P都收敛，于是采取了w=0：0.2：1的选择方式，最后发现w=1附近的时候误差相对较小(有点郁闷，针对这个三对角矩阵时没能达到加速的目的)。总之，迭代法的舍入误差随着迭代次数的增加，能达到相当高的精度；而且收敛速度令人满意。

#### SOR和SSOR迭代

2017-11-16 09:55:05

#### 《用Python学习数值分析--解方程组》

2017-10-25 16:14:32

#### 数值计算——线性方程组的迭代法

2017-03-30 16:53:36

#### 线性方程组迭代法--一个综述

2017-09-01 15:17:39

#### 数学方面资料（一）：泰勒展开证明…

2017-04-21 10:53:42

#### 高斯迭代法的c++源程序

2014年05月17日 793B 下载

#### matlab对角化

2017-03-17 18:23:30

#### 将矩阵转化为主对角占优矩阵

2015年05月02日 1KB 下载

#### 高斯-赛尔德迭代法求线性方程组Ax=b

2017年11月30日 524B 下载

#### 盖尔金圆定理及严格对角占优矩阵（SDD）

2018-05-09 17:44:45