失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 电磁场与电磁波实验(MATLAB版)

电磁场与电磁波实验(MATLAB版)

时间:2024-06-14 09:59:15

相关推荐

电磁场与电磁波实验(MATLAB版)

实验一 梯度、散度、旋度的可视化

题目1:应用 MATLAB 编程计算标量函数f(x,y)=xe−x2−y2f(x,y) = xe^{-x^2-y^2}f(x,y)=xe−x2−y2的二维梯度,并在相同图形窗中绘制等高线和梯度向量。

实验程序:

v = -2:0.2:2;%定义向量v[x,y] = meshgrid(v);%利用v产生网格z = x.*exp(-x.^2-y.^2);%计算网格格点上的函数值[px,py] = gradient(z,.2,.2);%数值方法计算梯度figurecontour(x,y,z);%绘制函数z的等高线hold on;%保护模式打开quiver(x,y,px,py);%绘制梯度的箭头图hold off;%保护模式关闭

程序结果:

题目2:应用 MATLAB 编程计算标量函数f(x,y)=x2+y2f(x,y) = \sqrt{x^2+y^2}f(x,y)=x2+y2​的二维梯度,并在相同图形窗中绘制等高线和梯度向量。

实验程序:

x = linspace(-2,2,25);%在-2到2取25个点y = linspace(-2,2,25);%在-2到2取25个点[xx,yy] = meshgrid(x,y);%生成网格采样点zz = sqrt(xx.^2+yy.^2);%生成矩阵zh = contour(xx,yy,zz,12);%以12个等高线层级绘制矩阵z的等高线图clabel(h);%写等高线的值[dx,dy] = gradient(zz,.2,.2);%求梯度hold on;%做下一幅图时保持原来图像quiver(xx,yy,dx,dy);%画矢量图箭头axis equal;%等比例显示

程序结果:

题目3:应用 MATLAB 编程计算矢量函数f(x,y)=[cos(x+2y),sin(x−2y)]f(x,y) = [cos(x+2y),sin(x-2y)]f(x,y)=[cos(x+2y),sin(x−2y)]的散度,并绘制其结果。

实验程序:

syms x y z real%定义符号变量F = [cos(x+2*y),sin(x-2)*y];%定义函数Fg = divergence(F,[x y]);%求函数F的散度,符号形式divF = matlabFunction(g);%将散度转换为函数形式x = linspace(-2.5,2.5,20);[X,Y] = meshgrid(x,x);%定义网格Fx = cos(X+Y*2);%F的x变量Fy = sin(X-2*Y);%F的y变量div_num = divF(X,Y);%散度的数值形式pcolor(X,Y,div_num);%绘制散度shading interp;%差值colorbar;%绘制色条hold on;%保持绘图模式打开quiver(X,Y,Fx,Fy,'k','linewidth',1);%绘制箭头图

程序结果:

题目4:应用 MATLAB 编程计算矢量函数f(x,y)=[cos(x+2y),sin(x−2y)]f(x,y) = [cos(x+2y),sin(x-2y)]f(x,y)=[cos(x+2y),sin(x−2y)]的旋度,并绘制其结果。

实验程序:

syms x y z real%定义符号变量F = [cos(x+2*y),sin(x-2*y)];%定义函数FG = curl([F,0],[x y z])%计算F的旋度,并赋予GcurlF = matlabFunction(G(3));%将G的z分量赋予curlFx = linspace(-2.5,2.5,20);[X,Y] = meshgrid(x,x);%定义网格Fx = cos(X+2*Y);%计算F的x分量Fy = sin(X-2*Y);%计算F的y分量rot = curlF(X,Y);%计算旋度的值pcolor(X,Y,rot);%绘制旋度shading interp;%颜色做插值colorbar;%绘制色条hold on;%保持模式打开quiver(X,Y,Fx,Fy,'k','linewidth',1);%绘制箭头图,并设置颜色为黑色,线宽为1

程序结果:

实验二 电力线、等势线的可视化

题目1:应用 MATLAB 编程绘制两个不等量同号电荷对应的电力线分布。

实验程序:

x = -4:0.02:4;%生成一系列坐标x,yy = x;[X,Y] = meshgrid(x,y);%生成网格数据R1 = sqrt((X+1).^2+Y.^2);%场点距离左侧电荷的距离R2 = sqrt((X-1).^2+Y.^2);%场点距离右侧电荷的距离phi = 1./R1+2./R2;%计算电势(Q* = q2/q1 = 2)[Ex,Ey] = gradient(-phi);%取梯度计算电场hold on;%叠加绘图模式r0 = 0.1;%电场线起点所在圆半径th = 20:20:360-20;%以20度为间隔,均分圆周th = th * pi / 180;%转换角度为弧度x1 = r0 * cos(th) - 1;%左侧电荷起点横坐标y1 = r0 * sin(th);%左侧电荷起点纵坐标h = streamline(X,Y,Ex,Ey,x1,y2);%绘制左侧电荷对应的流线,即为电场xr = -x1;%右侧电荷对应的起始点横坐标yr = y1;%右侧电荷对应的起始点纵坐标h = streamline(X,Y,Ex,Ey,xr,yr);%绘制右侧电荷对应的流线axis image;%等比例绘制图像

程序结果:

题目2:应用 MATLAB 编程绘制两个不等量异号电荷对应的电力线分布。

实验程序:

x = -4:0.02:4;%生成一系列坐标x,yy = x;[X,Y] = meshgrid(x,y);%生成网格数据R1 = sqrt((X+1).^2+Y.^2);%场点距离左侧电荷的距离R2 = sqrt((X-1).^2+Y.^2);%场点距离左侧电荷的距离phi = 1./R1-2./R2;%计算电势(Q* = q2/q1 = -2)[Ex,Ey] = gradient(-phi);%取梯度计算电场hold on;%叠加绘图模式r0 = 0.1;%电场线起点所在圆的半径th = 20:20:360-20;%以20°为间隔均分圆周th = th * pi / 180;%转换角度为弧度x1 = r0 * cos(th) - 1;%左侧电荷起点横坐标y1 = r0 * sin(th);%左侧电荷起点纵坐标h = streamline(X,Y,Ex,Ey,x1,y2);%绘制左侧电荷对应的流线,即为电场线xr = -x1;%右侧电荷对应的起始点横坐标yr = y1;%右侧电荷对应的起始点纵坐标h = streamline(X,Y,-Ex,-Ey,xr,yr);%绘制右侧电荷对应的流线axis image;%等比例绘制图像

程序结果:

题目3:应用 MATLAB 编程绘制三维等势面。例如对于放置在(−a,0,0),(a,0,0)(-a,0,0),(a,0,0)(−a,0,0),(a,0,0)处的两个点电荷,其带电量均为 2,绘制其对应的等势面。

实验程序:

①绘制单一等势面。

q1 = 2;%电荷1的电量q2 = 2;%电荷2的电量a = 2;%两个电荷之间的位置,(-a,0,0),(a,0,0)x = linspace(-5,5,50);%x轴范围,从-5到5,划分成50个点[X,Y,Z] = meshgrid(x);%在xyz坐标系内,构建一个立体网络r1 = sqrt((X-a).^2+Y.^2+Z.^2);%计算到右边电荷(a,0,0)的距离r2 = sqrt((X+a).^2+Y.^2+Z.^2);%计算到左边电荷(-a,0,0)的距离U = q1./r1+q2./r2;%电势的分布[f,v] = isosurface(X,Y,Z,U,1.6);%计算等势面对应的面元和顶点p = patch('Faces',f,'Vertices',v);%绘制等势面set(p,'FaceColor','red','EdgeColor','none');%修饰等势面,这里面元为红色,无边沿色view(3);%默认为三维视角axis equal;%等比例显示camlight;%设置光线

②多个等势面同时绘制。

q1 = 2;%电荷1的电量q2 = 2;%电荷2的电量a = 2;%两个电荷之间的位置,(-a,0,0),(a,0,0)x = linspace(-5,5,50);%x轴范围,从-5到5,划分成50个点[X,Y,Z] = meshgrid(x);%在xyz坐标系内,构建一个立体网络r1 = sqrt((X-a).^2+Y.^2+Z.^2);%计算到右边电荷(a,0,0)的距离r2 = sqrt((X+a).^2+Y.^2+Z.^2);%计算到左边电荷(-a,0,0)的距离U = q1./r1+q2./r2;%电势的分布[f,v] = isosurface(X,Y,Z,U,1.6);%计算等势面对应的面元和顶点p = patch('Faces',f,'Vertices',v);%绘制等势面set(p,'FaceColor','red','EdgeColor','none');%修饰等势面,这里面元为红色,无边沿色hold on;%叠加绘制模式p = patch(isosurface(X,Y,Z,U,1.2));%计算等值面并绘制,返回句柄pset(p,'FaceColor','none','EdgeColor','green');%对等值面进行修饰,无面元色,边沿为绿色view(3);%默认为三维视角axis equal;%等比例显示camlight;%设置光线

程序结果:

①绘制单一等势面。

②多个等势面同时绘制。

实验三 静态场问题求解及可视化

题目1:考虑一个静电场问题,其对应的定解问题如下:{Δu=0u∣x=0=0,u∣x=1=0u∣y=0=0,u∣y=1=sin(2πx)\left\{\begin{matrix}\Delta u = 0 \\ u |_{x=0} = 0,u |_{x=1} = 0 \\ u |_{y=0} = 0,u |_{y=1} = sin(2\pi x)\end{matrix}\right.⎩⎨⎧​Δu=0u∣x=0​=0,u∣x=1​=0u∣y=0​=0,u∣y=1​=sin(2πx)​题目给出了一个正方形边界四条边上的电磁分布值,然后计算正方形区域内部的电势分布。

(1)解析解:用分离变量法对该问题进行求解,得到严格的解析解为u=1sinh(2π)sin(2πx)sinh(2πy)u = {1\over sinh(2\pi)}sin(2\pi x)sinh(2\pi y)u=sinh(2π)1​sin(2πx)sinh(2πy)请使用 surf 函数和 pcolor 函数绘制该函数的图像。

实验程序:

x=linspace(0,1,100);%x取从0到1区间的100个点y=linspace(0,1,100);%y取从0到1区间的100个点[X,Y]=meshgrid(x,y);%绘制网格,并将给单坐标赋予X,Yu=1/(sinh(2*pi))*sin(2*pi*X).*sinh(2*pi*Y);%计算电势值surf(X,Y,u);%绘制曲面图shading interp;%曲面彩色做插值figure;%创建新的图形窗口pcolor(X,Y,u);%绘制伪彩色图shading interp;%色彩做插值处理colorbar;%绘制带色阶的颜色条

程序结果:

(2)数值解:采用 MATLAB 中的 PDETool 进行数值求解,并与解析法得到的结果做对比。具体步骤如下:

第一、在 MATLAB 命令行下,输入 PDETool,进入图形界面。

第二、在工具栏上单击矩形绘制按钮,绘制一个边长为 1 的正方形。

第三、单击边界条件设定按钮,进入边界条件设置状态;用鼠标双击正方形的边,根据题目设置边界条件。注意,对于第四个边界条件,应该输入对应的函数表达式。

第四、单击方程类型设置按钮,选择椭圆类型,并设置 f 为零,表示齐次方程。

第五、单击网格生成按钮,产生有限元网格。

第六、单击细化网格按钮二次,对产生的网格进行细化。

第七、单击求解按钮,则系统进行数值求解过程,并给出所得解的伪彩色示意图。

第八、单击绘图按钮,选择 Height,可以得到解的高度图,即曲面图。

最后:如果有帮助就来个点赞、收藏、评论鼓励一下吧!

如果觉得《电磁场与电磁波实验(MATLAB版)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。