jacobi迭代法matlab代码
时间: 2023-06-10 10:07:35 浏览: 46
下面是Jacobi迭代法的Matlab代码:
```matlab
function [x, iter] = jacobi(A, b, x0, tol, max_iter)
% Jacobi迭代法求解线性方程组Ax=b
% A: 方程组系数矩阵
% b: 方程组右端向量
% x0: 初始解向量
% tol: 迭代精度
% max_iter: 最大迭代次数
% x: 方程组的解向量
% iter: 迭代次数
n = length(b);
x = x0;
iter = 0;
while iter < max_iter
x_new = zeros(n, 1);
for i = 1:n
temp = b(i);
for j = 1:n
if i ~= j
temp = temp - A(i, j) * x(j);
end
end
x_new(i) = temp / A(i, i);
end
if norm(x_new - x) < tol
x = x_new;
break;
end
x = x_new;
iter = iter + 1;
end
end
```
使用方法:
假设我们要求解以下线性方程组:
$$
\begin{cases}
2x_1-x_2+x_3 = 1 \\
-x_1+2x_2-x_3 = 2 \\
x_1-x_2+2x_3 = 3
\end{cases}
$$
可以将其转化为矩阵形式:
$$
\begin{pmatrix}
2 & -1 & 1 \\
-1 & 2 & -1 \\
1 & -1 & 2
\end{pmatrix}
\begin{pmatrix}
x_1 \\
x_2 \\
x_3
\end{pmatrix}
=
\begin{pmatrix}
1 \\
2 \\
3
\end{pmatrix}
$$
则可以使用以下代码求解:
```matlab
A = [2, -1, 1; -1, 2, -1; 1, -1, 2];
b = [1; 2; 3];
x0 = [0; 0; 0];
tol = 1e-6;
max_iter = 1000;
[x, iter] = jacobi(A, b, x0, tol, max_iter);
```
其中,A为系数矩阵,b为右端向量,x0为初始解向量,tol为迭代精度,max_iter为最大迭代次数,x为方程组的解向量,iter为迭代次数。
相关推荐















