作业帮 > 综合 > 作业

..matlab仿真特殊边界电场分布..

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 12:13:56
..matlab仿真特殊边界电场分布..
用超松弛迭代法在matlab仿真特殊边界电场分布.
求matlab代码.
%用超松弛法求二维静电场域的电位分布
%电位函数为φ(x,y) ,边界条件φ(x,y)=0(x=0);φ(x,y)=50(y=0);
% φ(x,y)=100(x=a);φ(x,y)=100(y=a);
hx=21;hy=21; %设置网格节点数
v1=ones(hy,hx); %设置行列二维数组
m=20;n=20; %横纵向网格数
%上下两行的Dirichlet条件边界值:
v1(1,:)=ones(1,hx)*10;
v1(hy,:)=ones(1,hx)*10;
%左右两列的Dirichlet条件边界值:
for i=1:hy
v1(i,1)=10;
v1(i,hx)=0;
end
%计算松弛因子
%t1=(cos(pi/m)+cos(pi/n))/2;
%w=2/(1+sqrt(1-t1^2));
w=1.8;
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=v2
end
contour(v2,20) %画等电位线图
title('特殊边界的电场分布 '),hold on
x=1:1:hx;y=1:1:hy
[xx,yy]=meshgrid(x,y); %形成栅格
[Ex,Ey]=gradient(v2,0.6,0.6); %计算梯度
AE=-sqrt(Ex.^2+Ey.^2);Ex=Ex./AE;Ey=Ey./AE; % 场强归一化,使箭头等长
quiver(xx,yy,Ex,Ey,0.7) %根据梯度数据画箭头
axis([-1.5,hx+2.5,-2,23]) %设置坐标边框
plot([1,1,hx,hx,1],[1,hy,hy,1,1],'k') %画导体边框
text(hx/2-0.5,hy+0.4,'10V','fontsize',11); %上标注
text(hx/2,0.3,'10V','fontsize',11); %下标注
text(-0.3,hy/2,'10V','fontsize',11); %左标注
text(hx+0.1,hy/2,'0V','fontsize',11); %右标注
hold off