分别用雅克比迭代法和高斯-赛德尔迭代法计算下列方程组,均取相同的初值x0=[1 1 1]’,观察其计算结果,并分析其收敛性。
function [y,m]=jcb2(A,b,x0,n,tol)
D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1)
B=inv(D)*(L+U);f=inv(D)*b;
x=x0;
if max(abs(eig(B)))>=1
disp('雅克比迭代公式不收敛');
end
for k=1:n
x(:,k+1)=B*x(:,k)+f;
if norm(A*x(:,k+1)-b)
end
end
y=x(:,k+1);m=k;
return
function [y,m]=jcb3(A,b,x0,n,tol)
D=diag(diag(A));L=-tril(A,-1);
U=-triu(A,1);
B=(D-L)\U;f=(D-L)\b
x=x0;
if max(abs(eig(B)))>=1
disp('高斯-赛德尔迭代公式不收敛');
end
for k=1:n
x(:,k+1)=B*x(:,k)+f;
if norm(A*x(:,k+1)-b)
end
end
y=x(:,k+1);m=k;
return
x0=[1 1 1]';
n=200;
tol=1e-6;
A1=[1 -9 -10;-9 1 5;8 7 1];
b1=[1 0 4]';
A2=[5 -1 -3; -1 2 4; -3 4 15];
b2=[-1 0 4]';
A3=[10 4 5;4 10 7;5 7 10];
b3=[-1 0 4]';
jcb2(A1,b1,x0,n,tol)
jcb3(A1,b1,x0,n,tol)
jcb2(A2,b2,x0,n,tol)
jcb3(A2,b2,x0,n,tol)
jcb2(A3,b3,x0,n,tol)
jcb3(A3,b3,x0,n,tol)
ans=
U =
0 9 10
0 0 -5
0 0 0
雅克比迭代公式不收敛
ans =
1.0e+275 *
-3.0926
3.1794
-0.3000
f =
1
9
-67
高斯-赛德尔迭代公式不收敛
ans =
NaN
NaN
NaN
U =
0 1 3
0 0 -4
0 0 0
ans =
-0.0985
-1.1637
0.5575
f =
-0.2000
-0.1000
0.2533
ans =
-0.0984
-1.1639
0.5574
U =
0 -4 -5
0 0 -7
0 0 0
雅克比迭代公式不收敛
ans =
1.0e+006 *
2.3148
2.6977
2.8280
f =
-0.1000
0.0400
0.4220
ans =
-0.3658
-0.5132
0.9421