班级:通信13-2姓名:闫振宇学号:1306030222指导教师:徐维老师成绩:电磁场与电磁波项目训练报告计算金属槽内电位分布电子与信息工程学院信息与通信工程系1项目训练二计算金属槽内电位分布1.实验目的和任务1)利用有限差分法计算金属槽内电位分布。2)学会并掌握利用MATLAB软件计算求解电位分布问题。3)学会简单利用MATLAB软件解决数学物理问题。2.实验内容1)利用MATLAB编写一个计算机程序;2)以步距为40的正方形网格离散化场域,然后应用有限差分法求电位的数值解;3)求相邻两次迭代值得指定的最大允许误差小于105的迭代收解。4)根据场分布的对称性,试以半场域为计算对象,并以步距40将给半场域以正方形网格予以分割,然后应用有限差分法求电位的数值解;5)分别取为n个不同的值和最佳解o,求电位的数值解,以此分析加速收敛因子的作用,从迭代收敛时的迭代次数和最终数值解这两方向总结自己的看法;6)用计算机描绘等位线的分布;7)取中心点)2,2(bap处的电位的精确值与数值解进行比较,说明误差范围。3.实验原理有限差分法原理:有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似。于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。差分表达式:(有限差分方程)在x0y平面把所求解的区域划分成若干的小正方形格子,每个格子的边长都为h,假设某顶点的0上的电位是0,周围四个顶点的电位分别为1,2,3和4。将这几点的电位用泰勒级数展开,化简,近似可得:2)(4143210上式表明,任一点的电位等于它周围四个点电位的平均值。图3-1差分网格差分方程的数值解法:平面内有多少个节点,就能得到多少个差分方程,当这些节点数目较大时,使用迭代法求解差分方程组比较方便。a.简单迭代法:用迭代法解二维电位分布时,将包含边界在内的节点均以下标(i,j)表示,i,j分别表示沿x,y方向的标点。次序是x方向从左到右,y方向从上到下,我们用上标n表示某点电位的第n次的迭代值。下式得出点(i,j)的第n+1次电位的计算公式:)(411,,11,,11,njinjinjinjinji上式叫做简单迭代法,收敛速度较慢。计算时,先任意指定各个节点的电位值,作为零点近似,将零点近似值及其边界上的电位值代入上式中求出一级近似值,再由一级近似值求出二级近似值。以此类推,直到连续两次迭代所得电位的差值在允许的范围内时,结束迭代。b.赛德尔迭代法:通常为了节约时间,对简单迭代法进行改进。每当算出一个节点的高一次的近似值,就立即用它参与其他节点的差分方程的迭代,这种迭代法叫做赛德尔迭代法,此迭代法的表达式:)(4111,1,11,,11,njinjinjinjinji此式也称为异步迭代法,异步迭代法比简单迭代法收敛速度加快一倍左右。c.超松弛迭代法:为了加快收敛速度,常采用超松弛迭代法。计算时,将某点的新老电位值之差乘以一3个因子以后,再加到改点的老电位值上,作为这一点的新电位值1,nji。超松弛迭代法的表达式:)4(411,1,11,,11,nijnjinjinjinjinijnji式中称为松弛因子,因子的选取一般依据经验进行。但对于矩形区域,当M,N都很大,计算最佳收敛因子0:NM220222其中,M,N分别是沿x,y两个方向的内节点数。求解最佳收敛因子,计算求得有限差分方程的解。4.实验步骤题目:金属矩形槽,其侧壁与底面电位均是0,顶盖的电位为100V。图4-1矩形接地金属槽4.1步距为40,应用有限差分法求电位的数值解:利用MATLAB软件编写程序:4.1.1初值设定:lx=41;ly=21;以步距为40的正方形网格离散化场域,在二维图内,建立x0y直角坐标系,因为题目中,金属槽的长为,宽为2,所以,以长边为x轴,在场域内有41个节点,以宽边为y轴,在场域内有21个节点v1=zeros(ly,lx);运用zeros函数,将v1置成全零矩阵,共有ly行,lx列4forj=1:lxv1(ly,j)=100;将ly一行置成100,其余节点为0,这就完成了初值的设定4.1.2迭代操作:v2=v1;v1为一级近似值,将它代入二级近似值内,进行迭代t=0;k=0;while(max10e-5)max为相邻两次迭代值指定的最大允许误差,小于105,运用while语句,使两次的迭代值最大误差小于105k=k+1设k初值为0,记录迭代的次数max=0;fori=2:ly-1forj=2:lx-1;v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;运用简单迭代法,迭代求解t=abs(v2(i,j)-v1(i,j));将两次的迭代值的误差的绝对值(abs函数取绝对值),代入t中if(tmax)max=t;If语句判断每一次循环得到的误差是否是最大误差,用以得到最大误差v1=v2;循环继续,直到误差大于105为止得到k=1103至此,可以得到应用简单的有限差分法计算的电位的数值解。4.2有限差分法的程序流程图根据有限差分法的操作步骤,整理出关于本题的差分程序流程。5图4-2有限差分法程序流程图4.3以半场域为计算对象,应用有限差分法求电位的数值解:4.3.1初值设定:lx=21;ly=21;6以步距为40的正方形网格离散化场域,在二维图内,建立x0y直角坐标系,因为题目中,金属槽的长为2,宽为2,所以,以长边为x轴,在场域内有21个节点,以宽边为y轴,在场域内有21个节点forj=1:lxv1(1,j)=100;i=1;m=100;while(i22)v1(i,lx)=mm=100-5*ii=i+1根据场分布的对称性,以半场域为计算对象,边值发生了改变。右半边的初值呈递减状,根据所分得节点数,得出边值每个节点递减5V,从100V到0V4.3.2迭代操作:同上,迭代过程,运用简单迭代法进行迭代求解。k=722至此,可以得到应用简单的有限差分法计算的电位的数值解。4.4分析加速因子的作用为了加快收敛速度,需采用超松弛迭代法。其中称为松弛因子。最佳收敛因子0:NM220222代入M=41,N=21,求出最佳收敛因子0=1.76≈1.8为分析加速因子(收敛因子)的加速作用,代入不同数值的,观察迭代次数k的变化,在迭代过程中运用超松弛迭代法:为了使迭代次数减少,考虑让每次迭代或等更多的增量将:v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;7改写成:v2(i,j)=v1(i,j)+m*(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))/4;其中m为加速因子a.迭代次数分析:表4-1迭代次数k值表m1.21.31.41.51.61.71.81.9》2.0k42034628222417112082149不收敛分析可得,随着收敛因子的增大,迭代次数不断减少。当到达最佳收敛因子时,收敛次数最少。再增大m值,收敛次数又会增大。b.最终数值解分析:分别取m=1.2,m=1.8时第21列20至12行的数值解,进行比较。表4-2m取值对应下第21列20至12行的数值解m=1.294.096288.218082.389676.633770.970065.415259.982154.679849.5133m=1.894.096888.219182.391376.635970.972765.418459.985754.683649.5173分析可得,m=1.2和m=1.8取值下,数值有变化。电位从上到下是呈逐渐递减状。观察表格,每组对应的差值不断地再增大。说明随着m取值更趋向最佳值,电位数值解的下降速度加快。4.5描绘等位线分布运用MATLAB软件编写:subplot(1,2,1),mesh(v2)Subplot函数使得在一个屏幕上可以分别显示n个不同坐标系,可以分别在每一个坐标系中绘制曲线。Subplot(r,c,p)将命令屏幕分成r×c个子窗口,而p表示激活第p个子窗口。调用子窗口1,绘制三维矩阵曲线图。Mesh函数,画网格曲面。Mesh(x,y,z)这里,x,y,z是三个同维数的数据矩阵,分别表示横坐标,纵坐标,竖坐标。axis([0,41,0,21,0,100])8Axis函数,标注横纵竖坐标的比例尺,和范围。subplot(1,2,2),contour(v2,21)Subplot调用第二个子窗口,绘制等位线图。Contour函数,绘制等位线函数。Contour(x,y)x为调用的矩阵,y为你总需要的等位线条数。本题中,共有21行,所以就设置21条等位线。图4-3三维电位分布图等位线分布图4.6中心点电位的数值解和精确解的比较4.6.1中心点)2,2(bap的数值解:因为电位是从上至下逐渐呈递减状,中间点的所在等位线的2,2ba为50V。4.6.2中心点)2,2(bap的精确解:在不同的m取值下,2,2ba的取值会不同。m=1.2,2,2ba=49.5133Vm=1.4,2,2ba=49.5149VM=1.6,2,2ba=49.5161V9m=1.8,2,2ba=49.5173V说明随着m值的增加,更加接近于数值解。4.6.3误差范围:M=1.2,误差为50-49.5133=0.4867V,误差最大值M=1.8,误差为50-49.5173=0.4827V,误差最小值所以误差范围为:0.4867至0.4827之间。5.心得体会通过本次的学习,了解了有限差分法的计算应用,学会利用MATLAB软件解决有限差分的问题。了解了数值解和精确解的区别。在学习和操作的过程中,遇到了很多问题。比如不会使用MATLAB软件编写程序,未了解有限差分法的解题思想。但是经过查阅参考书,与同学进行讨论还是得到了解决。整个过程下来,有过困难,有过疑惑,但是解决过后,还是很开心的。希望还有机会得到学习。