电磁场实验一_有限差分法的matlab实现.doc
电磁场与电磁波实验报告实验项目:_______有限差分法______班级:_______12电子2______实验日期:__2014年12月23日姓名:______陈奋裕____学号:______1215106003_____组员姓名:__________组员学号:___________指导教师:_____张海______一、实验目的及要求1、学习有限差分法的原理与计算步骤;2、学习用有限差分法解静电场中简单的二维静电场边值问题;3、学习用Matlab语言描述电磁场与电磁波中内容,用matlab求解问题并用图形表示出了,学习matlab语言在电磁波与电磁场中的编程思路。二、实验内容理论学习:学习静电场中边值问题的数值法中的优先差分法的求解知识;实践学习:学习用matlab语言编写有限差分法计算二维静电场边值问题;三、实验仪器或软件电脑(WIN7)、Matlab7.11四、实验原理基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。简单迭代法:这一方法的求解过程是,先对场域内的节点赋予迭代初值,这里上标(0)表示0次(0),ij(初始)近似值。然后按Laplace方程(i,j=1,2,…)(k1)(k)()(k)(),1,,1,,1[]4ijijijijij进行反复迭代(k=0,1,2,…)。若当第N次迭代以后,所有的内节点的相邻两次迭代值之间的最大误差不超过允许范围,即(N)-1),,max||Accuracy)v_pre=v;t=t+1;fori=2:x-1forj=2:y-1v(i,j)=(v_pre(i-1,j)+v_pre(i,j-1)+v_pre(i+1,j)+v_pre(i,j+1))/4;endendend%输出fprintf( 节点电势值矩阵:\n );disp(fliplr(flipud(v)));fprintf( 迭迭代次数:%d\n ,t);%绘制等势线contour(v,hv, linewidth ,2);axis([0.5x+0.50.5y+0.5]);holdon;plot([1,1,x,x,1],[1,y,y,1,1], k , linewidth ,2);text((x+1)/2,0.8, 0V , fontsize ,11);text((x+1)/2,y+0.2, 100V , fontsize ,11);text(0.7,(y+1)/2, 0V , fontsize ,11);text(x+0.1,(y+1)/2, 0V , fontsize ,11);title( 无限长直金属槽的等势线图 , fontsize ,16, color , k );holdoff;输出结果:0V100V0V0V势势势势势势势势势势势势0.511.522.533.544.555.50.511.522.533.544.555.5可见点数太少,等势线不够平滑。重新设置步长hx=0.1;%设置x步长hy=0.1;%设置y步长可得下图:势势势势势势势势势势势势0V100V0V0V相对可以得出比较准确的等势线图。当然,这里也可以通过插值的方法实现。2.算法比较以允许误差为0.001为准,将场域16等分。输出如下:可见迭代次数为28次。发现迭代次数明显减少了。