jacobi迭代法求解线性方程组Matlab代码
时间: 2023-06-22 10:20:25 浏览: 300
以下是Jacobi迭代法求解线性方程组的Matlab代码:
```matlab
function [x,k] = jacobi(A,b,x0,tol,maxit)
% Jacobi迭代法求解线性方程组Ax=b
% A: 系数矩阵
% b: 右端向量
% x0: 初始解向量
% tol: 相对误差容限
% maxit: 最大迭代次数
% x: 迭代解向量
% k: 迭代次数
n = length(b); % 线性方程组的阶数
x = x0(:); % 将初始解向量转化为列向量
D = diag(diag(A)); % 取出系数矩阵A的对角线元素
L = tril(A,-1); % 取出系数矩阵A的下三角部分(不包含对角线)
U = triu(A,1); % 取出系数矩阵A的上三角部分(不包含对角线)
M = D; % Jacobi迭代法的迭代矩阵
N = L+U; % Jacobi迭代法的常数向量
for k = 1:maxit
x_old = x; % 保存上一次的迭代解向量
x = M\(N*x+b); % Jacobi迭代公式
if norm(x-x_old,inf) < tol*norm(x,inf) % 判断是否达到精度要求
return;
end
end
warning('Jacobi迭代法未收敛'); % 警告:未达到精度要求
end
```
使用方法:
假设要求解线性方程组Ax=b,其中A为系数矩阵,b为右端向量,x0为初始解向量,tol为相对误差容限,maxit为最大迭代次数,则可以调用jacobi函数:
```
[x,k] = jacobi(A,b,x0,tol,maxit);
```
其中,x为迭代解向量,k为迭代次数。
阅读全文