SOR方法matlab实现问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:44:38
具体问题是http://www.bsuc.cn/jpkc/dcx/resources/method/2603.htm#1上的例子下面的是网页上的SOR代码,可是我用matlab运行时总是提示“missing variable or function” ,哪位高手能帮帮忙呢!
hx=11;hy=11; %设置网格节点数
v1=ones(hy,hx); %设置行列二维数组
m=10;n=10; %横纵向网格数
%上下两行的Dirichlet条件边界值:
v1(1,:)=ones(1,hx)*50;
v1(hy,:)=ones(1,hx)*100;
%左右两列的Dirichlet条件边界值:
for i=1:hy
v1(i,1)=0;
v1(i,hx)=100;
end
%计算松弛因子
t1=(cos(pi/m)+cos(pi/n))/2;
w=2/(1+sqrt(1-t1*t1));
v2=v1;maxt=1;t=0; %初始化
k=0
while(maxt>1e-6) %由v1迭代,算出v2,迭代精度为0.000001
k=k+1 %计算迭代次数
maxt=0;
for i=2:hy-1 %从2到hy-1行循环
for j=2:hx-1 %从2到hx-1列循环
v2(i,j)=v1(i,j)+(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))*w/4; %拉普拉斯方程差分式
t=abs(v2(i,j)-v1(i,j));
if(t>maxt) maxt=t;end
end
end
v1

我可以很负责地告诉你,我这里能跑,能出结果,见附件的图片。

不行的话,你重新装一下MATLAB试试。我用的是matlab 6.5