算法步骤

  1. 输入矩阵A,常数项b,初始迭代向量x1,迭代后向量x2,容许误差error
  2. x(i)=(b(i)-∑(a(i,j)*x(j)))/a(i,i) j!=i1
  3. 若x2-x1的每一项都小于error,则输出x2,结束程序;否则转步骤2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
% assignment4.m

function [x2] = assignment4(A,b,x1,error)
% inputs:
% A:系数矩阵,维度为n*n
% b:载荷矩阵,维度为n*1
% error:容许误差
% outputs:
% x2:迭代后矩阵,维度n*1
% x1:迭代前矩阵,维度n*1

[A_row,A_col] = size(A);
e=1;
x2=x1;

while e>error
for i1=1:A_row
x2(i1)=b(i1);
for i2=1:A_col
if i1~=i2
x2(i1)=x2(i1)-x2(i2)*A(i1,i2);
end
end
x2(i1)=x2(i1)/A(i1,i1);
end

e=x2(1)-x1(1);
for i1=2:A_row
if x2(i1)-x1(i1)>e
e=x2(i1)-x1(i1);
end
end
x1=x2;
end
end

% 命令行输入
% assignment4([10 -1 -2; -1 10 -2; -1 -1 5],[7.2 8.3 4.2],[0 0 0],0.0001)
% assignment4([10 -1 -2; -1 10 -2; -1 -1 5],[7.2 8.3 4.2],[1 1 1],0.0001)