hx=25;hy=17; %设置网格节点数
v1=ones(hy,hx); %设置行列二维数组
v1(6:12,8:18)=zeros(7,11);
m=24;n=16;%横纵向网格数
%边界的Dirichlet边界条件值
v1(1,1:25)=0; %上边界
v1(17,1:25)=0;%下边界
v1(2:16,1)=0;%左边界
v1(2:16,25)=0;%右边界
v1(6,9:18)=ones(10,1)*100;%中间上边界
v1(7:11,18)=ones(5,1)*100;%中间上边界
%计算松弛因子
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:16%从2到16行循环
for j=2:7%从2到7列循环
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
for i=2:5%从2到5行循环
for j=8:18%从8到18列循环
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
for i=13:16%从13到16行循环
for j=8:18%从8到18列循环
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
评论0