第1个回答 2019-12-14
给你写了一个程序
function
[x,n]=SOR(A,b,x0,w,eps,M)
if
nargin==4
eps=
1.0e-6;
M
=
200;
elseif
nargin<4
error('参数不够');
return
elseif
nargin
==5
M
=
200;
end
if(w<=0
||
w>=2)
error('参数范围错误');
return;
end
D=diag(diag(A));
%求A的对角矩阵
L=-tril(A,-1);
%求A的下三角阵
U=-triu(A,1);
%求A的上三角阵
B=inv(D-L*w)*((1-w)*D+w*U);
f=w*inv((D-L*w))*b;
x=B*x0+f;
n=1;
%迭代次数
while
norm(x-x0)>=eps
x0=x;
x
=B*x0+f;
n=n+1;
if(n>=M)
disp('Warning:
迭代次数太多,可能不收敛!');
return;
end
end
一下是调用方法:
A=[-4
1
1
1
1
-4
1
1
1
1
-4
1
1
1
1
-4];
b=[1
1
1
1
];
x0=[0
0
0
0];
w=1.34;
>>
[x,n]=SOR(A,b,x0,w)
x
=
-1
-1
-1
-1
n
=
16
经过16次计算成功
第2个回答 2009-12-24
A=solve('-4*x1+x2+x3+x4=1','x1-4*x2+x3+x4=1','x1+x2-4*x3+x4=1','x1+x2+x3-4*x4=1');
[A.x1 A.x2 A.x3 A.x4]
>>ans =
[ -1, -1, -1, -1]
可以运行。