能否提供一个使用MATLAB编写的Jacobi迭代法求解线性方程组的详细代码示例?
时间: 2024-12-18 22:17:13 浏览: 0
当然可以,以下是使用MATLAB编写的一个简单的Jacobi迭代法求解线性方程组的代码示例:
```matlab
% 定义系数矩阵A和常数向量b
A = [2 1; 1 2]; % 例如,对于 Ax = b 的形式,这里是一个2x2的例子
b = [5; 7];
% 确定初始猜测值,比如选择全零向量作为起始点
x0 = zeros(size(A, 2), 1);
% 设置收敛阈值和最大迭代次数
tol = 1e-6;
max_iter = 100;
% 定义Jacobi迭代函数
function x = jacobiIteration(A, b, x, iter)
D = diag(diag(A)); % 提取对角元素
U = A - D; % 计算上三角部分
for i = 1:length(x)
x(i) = (b(i) - sum(U(:,i).*x))/D(i); % 更新当前迭代的解
end
end
% 迭代开始
iter = 1;
while max(abs(A*x0 - b)) > tol && iter < max_iter
x0 = jacobiIteration(A, b, x0, iter);
disp(['Iteration ', num2str(iter), ': ' num2str(A*x0 - b)]);
iter = iter + 1;
end
if iter == max_iter
disp('Maximum iterations reached without convergence.');
else
disp(['Solution found after ', num2str(iter), ' iterations: ' num2str(x0)]);
end
阅读全文