jacobi迭代法 MATLAB程序以及使用案例
时间: 2024-05-10 07:14:26 浏览: 128
雅可比迭代法使用matlab
Jacobi迭代法是求解线性方程组的一种迭代方法,其基本思想是将系数矩阵分解为对角矩阵和非对角矩阵两部分,然后通过迭代求解得到方程组的解。以下是Jacobi迭代法的MATLAB程序及使用案例。
MATLAB程序:
```
function [x,iter]=jacobi(A,b,x0,tol,maxiter)
% Jacobi迭代法求解线性方程组Ax=b
% A:系数矩阵
% b:常数向量
% x0:初始解向量
% tol:容许误差
% maxiter:最大迭代次数
% x:方程组的解向量
% iter:实际迭代次数
n=size(A,1);
x=x0;
for iter=1:maxiter
x_old=x;
for i=1:n
x(i)=(b(i)-A(i,[1:i-1,i+1:n])*x_old([1:i-1,i+1:n]))/A(i,i);
end
if norm(x-x_old,inf)<tol
return;
end
end
```
使用案例:
假设有如下线性方程组:
```
3x1 + 2x2 - x3 = 1
2x1 - 2x2 + 4x3 = -2
-x1 + 0.5x2 - x3 = 0
```
则其系数矩阵A和常数向量b为:
```
A=[3 2 -1;2 -2 4;-1 0.5 -1];
b=[1;-2;0];
```
假设初始解向量x0=[0;0;0],容许误差tol=1e-6,最大迭代次数maxiter=1000,则可以通过以下代码使用Jacobi迭代法求解该线性方程组:
```
x0=[0;0;0];
tol=1e-6;
maxiter=1000;
[x,iter]=jacobi(A,b,x0,tol,maxiter);
```
得到方程组的解为:
```
x =
0.999999994544353
-0.999999998318033
-0.499999997272176
```
迭代次数为:
```
iter =
37
```
阅读全文