注册 登录
编程论坛 Matlab

[求助]用matlab编写的sor法?

discipleyu 发布于 2006-06-06 00:45, 1319 次点击
刚接触matlab编程不久,
编了个sor法的程序
如下:
A=[4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1;
-2 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1;
-1 -2 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1;
-1 0 -2 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1;
-1 0 0 -2 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1;
-1 0 0 0 -2 6 1 0 0 0 0 0 0 0 0 0 0 0 0 1;
-1 0 0 0 0 -2 6 1 0 0 0 0 0 0 0 0 0 0 0 1;
-1 0 0 0 0 0 -2 6 1 0 0 0 0 0 0 0 0 0 0 1;
-1 0 0 0 0 0 0 -2 6 1 0 0 0 0 0 0 0 0 0 1;
-1 0 0 0 0 0 0 0 -2 6 1 0 0 0 0 0 0 0 0 1;
-1 0 0 0 0 0 0 0 0 -2 6 1 0 0 0 0 0 0 0 1;
-1 0 0 0 0 0 0 0 0 0 -2 6 1 0 0 0 0 0 0 1;
-1 0 0 0 0 0 0 0 0 0 0 -2 6 1 0 0 0 0 0 1;
-1 0 0 0 0 0 0 0 0 0 0 0 -2 6 1 0 0 0 0 1;
-1 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 1 0 0 0 1;
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 1 0 0 1;
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 1 0 1;
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 1 1;
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 1;
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 4];
B=[82 -32 -14 -14 -14 -14 -14 -14 -14 -14 -14 -14 -14 -14 -14 -14 -14 -14 -15 -18]';
x=ones(20,1);
rept=10000;
p=1.000001;
while p>=0.000001
while rept>0
p=0;
for i=1:20
s=B(i);
for k=1:20
if k~=i
s=s+A(i,k)*x(k);
end
end
t=(1-1.87)*x(i)+1.87/A(i,i)*(B(i)-s);
if abs(x(i)-t)>p
p=abs(x(i)-t);
end
x(i)=t;
end
rept=rept-1;
end
end
x



但运行出来结果全是NaN

帮帮忙啊
5 回复
#2
discipleyu2006-06-06 10:25

请大家帮忙

#3
jellyku2006-06-06 10:31
for k=1:20
if k~=i
s=s+A(i,k)*x(k);
end
end

if条件中的条件有点问题。
应该为(好像): ~k==i
#4
discipleyu2006-06-06 18:16

不对,改了之后,不管如何设初始值,结果都全为零
不管怎么说,还是谢谢

#5
discipleyu2006-06-06 21:16

请大家帮忙

#6
discipleyu2006-06-06 23:21

突然开窍,已经完成了,谢谢

1