jacobi迭代法求解线性方程组(Matlab)
函数文件(jacobi.m)
该函数不含停止的误差判断条件
function [x,n] = jacobi(A,b,x,it_max)
% 求线性方程组的Jacobi迭代法,调用格式为
% [x, n] = jacobi(A,b,x0,it_max)
% 其中, A 为线性方程组的系数矩阵,b 为常数项
% it_max 为最大迭代次数
% x 为线性方程组的解,n-1为迭代次数
D = diag(diag(A));%求A的对角矩阵
L = tril(A,-1);%求A的下三角矩阵
U = triu(A,1);%求A的上三角矩阵
M = -D\(U+L);
beta = D\b;
n = 1;%迭代次数
while n <= it_max
x_after = diag(diag(M*x+beta));
x = x_after; %储存计算的值
n = n+1;
end
end
主函数文件(jacobi_calculate.m)
clear
clc
%A为线性方程组的系数矩阵
A = [10,-1,2,0;
-1,11,-1,3;
2,-1,10,-1;
0,3,-1,8];
%b为常数项
b = [6,25,-11,15]';
%x0为迭代初始值
x0 = [0,0,0,0]';
%N为迭代次数
N = 2;
for i = 1:N
[x, n] = jacobi(A,b,x0,i);
fprintf('第%d次jacobi迭代计算的结果:\n',n-1);
disp(x);
end