jacobi 迭代法 matlab程序
时间: 2023-11-02 10:15:07 浏览: 86
以下是 Jacobi 迭代法的 MATLAB 程序示例:
```matlab
function [x, iter] = jacobi(A, b, x0, tol, maxiter)
% Jacobi 迭代法求解线性方程组 Ax = b
% A: 系数矩阵
% b: 常数列向量
% x0: 初始值列向量
% tol: 容差
% maxiter: 最大迭代次数
% x: 方程组的解列向量
% iter: 迭代次数
n = length(b); % 方程组的未知数个数
D = diag(diag(A)); % A 的对角线部分
L = -tril(A,-1); % A 的下三角部分
U = -triu(A,1); % A 的上三角部分
B = D \ (L + U); % 迭代矩阵
f = D \ b; % 常数向量
x = x0; % 初始值
for iter = 1:maxiter
x_new = B * x + f; % 迭代公式
if norm(x_new - x) < tol % 判断是否满足容差要求
break
end
x = x_new; % 更新 x
end
if iter == maxiter
warning('达到最大迭代次数,可能未收敛');
end
end
```
使用示例:
```matlab
A = [10 2 1; 1 5 1; 2 3 10];
b = [7; -8; 6];
x0 = [0; 0; 0];
tol = 1e-6;
maxiter = 100;
[x, iter] = jacobi(A, b, x0, tol, maxiter);
disp('解向量:');
disp(x);
disp(['迭代次数:', num2str(iter)]);
```
输出:
```
解向量:
0.637012
-1.824354
0.684672
迭代次数:25
```
阅读全文