姓名:梁鸿宇 学号:19 班级:10通信
实验目的:
通过用MATLAB等软件编程计算电磁场问题,掌握有限差分法的基本思想,掌握电磁场数值计算的基本思想和方法,掌握MATLAB等软件编程技巧,学会用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=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^2));
v2=v1;maxt=1;t=0; %初始化 k=0
while(maxt>1e-6) %由V1迭代V2.迭代精度为 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) %画等电位线图 hold on
x=1:1:hx;y=1:1:hy
[xx,yy]=meshgrid(x,y); %形成栅格 [Ex,Ey]=gradient(v2,,; %计算梯度
AE=sqrt(Ex.^2+Ey.^2);Ex=Ex./AE;Ey=Ey./AE; % 场强归一化,使箭头等长 quiver(xx,yy,Ex,Ey, %根据梯度数据画箭头 axis([,hx+,-2,13]) %设置坐标边框 plot([1,1,hx,hx,1],[1,hy,hy,1,1],'k') %画导体边框 text(hx/,hy+,'100V','fontsize',11); %上标注 text(hx/2,,'50V','fontsize',11); %下标注 text,hy/2,'0V','fontsize',11); %左标注
text(hx+,hy/2,'100V','fontsize',11); %右标注
hold offhx=11;hy=11;
输出图形(MATLAB)
总结和体会:
这次仿真实验,是自己学习NATLAB的基本操作的,在了解这个全英版的软件之前,觉得很茫然。后来看了教程,有点了解之后,才发现MATLAB软件处理问题的强大之处。