用matlab写一个雅克比迭代法
时间: 2023-11-21 21:33:04 浏览: 33
function [x, k] = jacobi(A, b, x0, tol, maxit)
% JACOBI Jacobi iteration for solving A*x = b
% [x, k] = jacobi(A, b, x0, tol, maxit)
% A: coefficient matrix
% b: right-hand side vector
% x0: initial guess
% tol: tolerance
% maxit: maximum number of iterations
% x: solution vector
% k: number of iterations
% initialization
n = length(b);
x = x0;
k = 0;
converged = false;
% Jacobi iteration
while ~converged && k < maxit
x_new = zeros(n, 1);
for i = 1:n
x_new(i) = (b(i) - A(i,1:i-1)*x(1:i-1) - A(i,i+1:n)*x(i+1:n)) / A(i,i);
end
if norm(x_new - x) < tol
converged = true;
end
x = x_new;
k = k + 1;
end
if ~converged
warning('Jacobi iteration did not converge within maximum number of iterations.')
end
end