数值分析7 - Jacobi迭代法、Gass-Seidel迭代法 (Matlab代码实现)

一、 Jacobi迭代法

% Matlab 代码
close all; clear all; clc;
A = [9,  -1, -1;
     -1, 10, -1;
     -1, -1, 15];%方程系数矩阵
 
b = [7; 8; 13];    %方程右端常数项
D = diag(diag(A))  %对角线
L = -( tril(A) - diag(diag(A)) ); %下三角矩阵
U = -( triu(A) - diag(diag(A)) ); %上三角矩阵
X = [0;0;0];
X_New = [0;0;0];
i=0;
while i<10
    X_New = inv(D)*(L+U)*X + inv(D)*b;
    X = X_New;
    i = i + 1;
end
X %输出线性方程组的解

 

二、Gass-Seidel迭代法

 

% Matlab 代码
close all; clear all; clc;
A = [9,  -1, -1;
     -1, 10, -1;
     -1, -1, 15];%方程系数矩阵
 
b = [7; 8; 13];    %方程右端常数项
D = diag(diag(A));  %对角线
L = -( tril(A) - diag(diag(A)) ); %下三角矩阵
U = -( triu(A) - diag(diag(A)) ); %上三角矩阵
X = [0;0;0];
X_New = [0;0;0];
i=0;
while i<10
    X_New = inv(D-L)*U*X + inv(D-L)*b;
    X = X_New;
    i = i + 1;
end
X


%加入循环中值准则
close all; clear all; clc;
A = [9,  -1, -1;
     -1, 10, -1;
     -1, -1, 15];%方程系数矩阵
 
b = [7; 8; 13];    %方程右端常数项
D = diag(diag(A));  %对角线
L = -( tril(A) - diag(diag(A)) ); %下三角矩阵
U = -( triu(A) - diag(diag(A)) ); %上三角矩阵
B = inv(D-L)*U;
f = inv(D-L)*b;
X = [0;0;0];
X_New = [0;0;0];
C = norm(B,2) / (1 - norm(B,2)); 
Out = 1;
while Out > 0.0000001
    X_New = B*X + f;
    Out = C*norm(X_New-X,2)
    X = X_New;
end
X %输出线性方程组的解

%计算B的谱半径看是否小于1收敛
[V,Dig] = eig(B);
max(max(abs(Dig)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值