雅可比迭代法和高斯赛德尔迭代法matlab代码
时间: 2024-12-13 11:22:28 浏览: 26
基于matlab实现高斯赛德尔迭代潮流计算
雅可比迭代法和高斯-赛德尔迭代法都是数值线性代数中用于求解线性方程组的迭代算法。以下是这两个方法的简单MATLAB代码示例:
**雅可比迭代法 (Jacobi Iteration)**
```matlab
function [x] = jacobi(A, b, x0, maxiter)
% A 系数矩阵,b 右侧向量,x0 初始猜测解,maxiter 最大迭代次数
n = length(b);
D = diag(diag(A)); % 阶主对角线元素构成的对角矩阵
L = triu(A - D); % 下三角部分,包括主对角线
U = tril(A - D,'-'); % 上三角部分,除了主对角线
for iter = 1:maxiter
if abs(norm((A - D)*x(iter) + L*b)) < tol || iter == maxiter
break; % 满足停止条件
end
x(iter+1) = x(iter) - D\(U*x(iter) + L*b); % 更新迭代解
end
```
其中`tol`是一个预设的小数精度阈值。
**高斯-赛德尔迭代法 (Gauss-Seidel Method)**
```matlab
function [x] = gauss_seidel(A, b, x0, maxiter)
% 同上,只是更新步骤稍有差异
n = length(b);
for iter = 1:maxiter
for i = 1:n
temp = sum(A(i,:) .* x(iter));
x(iter,i) = (b(i) - temp) / A(i,i);
end
if abs(norm((A - eye(n))*(x(iter) - x0))) < tol || iter == maxiter
break;
end
end
```
这两个函数都会返回迭代得到的解`x`。注意实际应用时需要检查收敛性和选择合适的停止条件。
阅读全文