源程序
%用简单跌代法求矩形平行电容板内的电位分布
hx=37;hy=80;%设置网格节点数
v1=ones(hy,hx);%设置行列二维数组
%上下两行的Dirichlet边界条件值
v1(hy,:)=ones(1,hx)*100;
v1(1,:)=zeros(1,hx);
%左右两行的Dirichlet边界条件值
for i=1:hy
v1(i,hx)=0;
end
for i=1:hy/2
v1(i,1)=0;
end
for i=hy/2:hy
v1(i,1)=100;
end
v2=v1;maxt=1;t=0;%初始化
k=0
while(maxt>1e-6)
k=k+1%计算迭代次数
maxt=0;
for i=2:hy-1
for j=2:hx-1
v2(i,j)=(v1(i,j-1)+v1(i,j+1)+v1(i-1,j)+v1(i+1,j))/4;
t=abs(v2(i,j)-v1(i,j));
if(t>maxt) maxt=t;end
end
end
v1=v2
end
subplot(1,2,1),mesh(v2)%画三维曲面图
xlabel('x')
ylabel('y')
zlabel('v')
subplot(1,2,2),contour(v2,15)%画等位线图
hold on
x=1:1:hx;y=1:1:hy
[xx,yy]=meshgrid(x,y);%形成栅格
[Gx,Gy]=gradient(v2,0.6,0.6);%计算梯度
quiver(xx,yy,Gx,Gy,-0.8,'r')%设置坐标边框
plot([1,1,hx,hy,1],[1,hy,hy,1,1],'k')%画导体边框
text(hx/2,0.3,'0v','fontsize',11);%下标注
text(hx/2-0.5,hy+0.5,'100v','fontsize',11);%上标注
text(-0.5,hy/2,'0v','fontsize',11);%左标注
text(hx+0.3,hy/2,'0v','fontsize',11);%右标注
hold off
分离变量法:
[x,y]=meshgrid(0:0.1:10,0:0.1:10); %建立网格
U0=100;a=10;z=0; %设定参数
for n=1:100;
j=U0/pi.*(((-1)^n)/n).*sin(2*n*pi.*y/a).*exp(-2*n*pi.*x/a); z=z+j;
end
subplot(1,2,1),mesh(v2)%画三维曲面图
xlabel('x')
ylabel('y')
zlabel('v')
subplot(1,2,2),contour(v2,15)%画等位线图
%用超松弛法求矩形平行电容板内的电位分布
hx=37;hy=80;%设置网格节点数
v1=ones(hy,hx);%设置行列二维数组
m=36;n=79;
%上下两行的Dirichlet边界条件值
v1(hy,:)=ones(1,hx)*100;
v1(1,:)=zeros(1,hx);
%左右两行的Dirichlet边界条件值
for i=1:hy
v1(i,hx)=0;
end
for i=1:hy/2
v1(i,1)=0;
end
for i=hy/2:hy
v1(i,1)=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)
k=k+1%计算迭代次数
maxt=0;
for i=2:hy-1
for j=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=v2
end
subplot(1,2,1),mesh(v2)%画三维曲面图
xlabel('x')
ylabel('y')
zlabel('v')
subplot(1,2,2),contour(v2,15)%画等位线图
hold on
x=1:1:hx;y=1:1:hy
[xx,yy]=meshgrid(x,y);%形成栅格
[Gx,Gy]=gradient(v2,0.6,0.6);%计算梯度
quiver(xx,yy,Gx,Gy,-0.8,'r')%设置坐标边框
plot([1,1,hx,hy,1],[1,hy,hy,1,1],'k')%画导体边框
text(hx/2,0.3,'0v','fontsize',11);%下标注
text(hx/2-0.5,hy+0.5,'100v','fontsize',11);%上标注
text(-0.5,hy/2,'0v','fontsize',11);%左标注
text(hx+0.3,hy/2,'0v','fontsize',11);%右标注
hold off
因篇幅问题不能全部显示,请点此查看更多更全内容