你能用matlab写一段雅可比迭代的代码吗
时间: 2023-05-25 07:02:30 浏览: 53
当然可以,以下是一个简单的雅可比迭代的 MATLAB 代码:
```matlab
function [x, iter] = jacobi(A, b, x0, maxiter, tol)
% Jacobi iterative method for solving A*x = b
% Inputs:
% A - coefficient matrix
% b - constant matrix
% x0 - initial guess
% maxiter - maximum number of iterations
% tol - tolerance level
% Outputs:
% x - solution vector
% iter - number of iterations performed
% extract diagonal elements of A
D = diag(diag(A));
% extract off-diagonal elements of A
L = -tril(A,-1);
U = -triu(A,1);
% initialize iteration counter and error
iter = 0;
err = norm(b - A*x0);
% begin iteration
x = x0;
while (iter < maxiter) && (err > tol)
iter = iter + 1;
x = inv(D)*(b + L*x + U*x);
err = norm(b - A*x);
end
end
```
使用该函数,可以输入系数矩阵 A,常数向量 b,初始猜测 x0,最大迭代次数 maxiter 和容差 tol 级别。该函数将返回解 x 和迭代次数 iter。