主题:[讨论]如何编写这个周期性边界条件,请高人指点,谢谢!!
如何编写这个程序的周期性边界条件,请高人指点,谢谢a=5;p=3;qq=0;
A=(rand(a,a)-0.5)/10; %%得到一个a*a的初始矩阵
for x=1:a
for y=1:a
q(x,y)=A(x-1,y)+A(x+1,y)+A(x,y-1)+A(x,y+1)+A(x,y-1)-4*A(x,y)+A(x-1,y-1)+A(x+1,y-1)+A(x-1,y+1)+A(x+1,y+1)+A(x,y-1)-4*A(x,y);
qq=qq+q(x,y);
end
end
%周期性边界条件:
x,y的取值范围都是1到a;即
x=1:a
y=1:a
内部点: x,y只要不取1或a,则x,y取值不变,即A(x,y)=A(x,y);
边界取值:x,y只要有一个或两个都取1或a,则
x+1,x-1,y+1,y-1中可能有超过1至a的范围,x+1,x-1,y+1,y-1中取值在1至a的范围内的,则不变;超范围的,处理方法如下:
x+1,x-1,y+1,y-1中,只要值等于0的,其值变成a;
若x+1,x-1,y+1,y-1中,只要值等于a+1的,其值取1;
例如:
若x=1,y=1,则A(x,y)=A(x,y);A(x-1,y)=A(a,y);A(x-1,y-1)=A(a,a);A(x,y-1)=A(x,a);A(x+1,y+1)=A(x+1,y+1);
若x=a,y=1,则A(x,y)=A(x,y);A(x-1,y)=A(x-1,y);A(x-1,y-1)=A(x-1,a);A(x,y-1)=A(x,a);A(x+1,y+1)=A(1,y+1);
若x=a,y=a,则A(x,y)=A(x,y);A(x-1,y)=A(x-1,y);A(x-1,y-1)=A(x-1,y-1);A(x,y-1)=A(x,y-1);A(x+1,y+1)=A(1,1);
若x=1,y=a,则A(x,y)=A(x,y);A(x-1,y)=A(1,y);A(x-1,y-1)=A(1,y-1);A(x,y-1)=A(x,y-1);A(x+1,y+1)=A(x+1,1);
不知道如何编写这个周期性边界条件,请高人指点,谢谢!!
A=(rand(a,a)-0.5)/10; %%得到一个a*a的初始矩阵
for x=1:a
for y=1:a
q(x,y)=A(x-1,y)+A(x+1,y)+A(x,y-1)+A(x,y+1)+A(x,y-1)-4*A(x,y)+A(x-1,y-1)+A(x+1,y-1)+A(x-1,y+1)+A(x+1,y+1)+A(x,y-1)-4*A(x,y);
qq=qq+q(x,y);
end
end
%周期性边界条件:
x,y的取值范围都是1到a;即
x=1:a
y=1:a
内部点: x,y只要不取1或a,则x,y取值不变,即A(x,y)=A(x,y);
边界取值:x,y只要有一个或两个都取1或a,则
x+1,x-1,y+1,y-1中可能有超过1至a的范围,x+1,x-1,y+1,y-1中取值在1至a的范围内的,则不变;超范围的,处理方法如下:
x+1,x-1,y+1,y-1中,只要值等于0的,其值变成a;
若x+1,x-1,y+1,y-1中,只要值等于a+1的,其值取1;
例如:
若x=1,y=1,则A(x,y)=A(x,y);A(x-1,y)=A(a,y);A(x-1,y-1)=A(a,a);A(x,y-1)=A(x,a);A(x+1,y+1)=A(x+1,y+1);
若x=a,y=1,则A(x,y)=A(x,y);A(x-1,y)=A(x-1,y);A(x-1,y-1)=A(x-1,a);A(x,y-1)=A(x,a);A(x+1,y+1)=A(1,y+1);
若x=a,y=a,则A(x,y)=A(x,y);A(x-1,y)=A(x-1,y);A(x-1,y-1)=A(x-1,y-1);A(x,y-1)=A(x,y-1);A(x+1,y+1)=A(1,1);
若x=1,y=a,则A(x,y)=A(x,y);A(x-1,y)=A(1,y);A(x-1,y-1)=A(1,y-1);A(x,y-1)=A(x,y-1);A(x+1,y+1)=A(x+1,1);
不知道如何编写这个周期性边界条件,请高人指点,谢谢!!