班级:通信13-4 姓名:学号:指导教师:**成绩:电子与信息工程学院信息与通信工程系求解金属槽的电位分布1.实验原理利用有限差分法和matlab软件解决电位在金属槽中的分布。
有限差分法基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解.然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解.在采用数值计算方法求解偏微分方程时,若将每一处导数由有限差分近似公式替代,从而把求解偏微分方程的问题转换成求解代数方程的问题。
2.有限差分法方程的定解问题就是在满足某些定解条件下求微分方程的解。
在空间区域的边界上要满足的定解条件称为边值条件。
如果问题与时间有关,在初始时刻所要满足的定解条件,称为初值条件。
不含时间而只带边值条件的定解问题,称为边值问题。
与时间有关而只带初值条件的定解问题,称为初值问题。
同时带有两种定解条件的问题,称为初值边值混合问题。
定解问题往往不具有解析解,或者其解析解不易计算。
所以要采用可行的数值解法。
有限差分方法就是一种数值解法,它的基本思想是先把问题的定义域进行网格剖分,然后在网格点上,按适当的数值微分公式把定解问题中的微商换成差商,从而把原问题离散化为差分格式,进而求出数值解。
此外,还要研究差分格式的解的存在性和唯一性、解的求法、解法的数值稳定性、差分格式的解与原定解问题的真解的误差估计、差分格式的解当网格大小趋于零时是否趋于真解(即收敛性),等等。
有限差分方法具有简单、灵活以及通用性强等特点,容易在计算机上实现。
2.1有限差分法原理图1-1 有限差分法的网格划分导体槽中静电场的边值问题的拉普拉斯方程为:22220x y ϕϕ∂∂+=∂∂ (1-1) 为简单起见,将场域分成足够小的正方形网格,网格线之间的距离为h ,0h →。
节点0、1、2、3、4上的电位分别用0ϕ、1ϕ、2ϕ、3ϕ和4ϕ表示。
点1、点3在x 0处可微,沿x 方向在x 0处的泰勒级数展开式为2323100002311()()()()().2!3!h h h x x x ϕϕϕϕϕ∂∂∂=-+-+-+∂∂∂ (1-2)2323300002311()()()()().2!3!h h h x x xϕϕϕϕϕ∂∂∂=-+-+-+∂∂∂ (1-3)点2、点4在y 0处可微,沿y 方向在y 0处的泰勒级数展开式为2323200002311()()().2!3!h h h y y yϕϕϕϕϕ∂∂∂=++++∂∂∂ (1-4)2323400002311()()()()().2!3!h h h y y yϕϕϕϕϕ∂∂∂=-+-+-+∂∂∂ (1-5)忽略高次项22212340000224()()()4h xy ϕϕϕϕϕϕϕϕ⎡⎤∂∂+++=++=⎢⎥∂∂⎣⎦ (1-6)稍作变化得到拉普拉斯方程的五点差分格式:123404ϕϕϕϕϕ+++=(1-7)可通过迭代法求解以上差分方程。
2.2有限差分法步骤高斯—赛德尔迭代法图2-1网络下标标示1,,1,11,,4i j i j i j i ji j ϕϕϕϕϕ--+++++=(1-8)进行迭代时可写为 ,1,111,,11,14i j i j k k k k i j i j i j k ϕϕϕϕϕ-++-++++++=(1-9)1,2.......i M =,为行数,1,2.......j N =,为列数,k 为迭代次数,k ϕ为前次迭代的结果,1k ϕ+为当次迭代的结果,由于迭代从第一行、第一列开始,(1,i j -)、(,1i j -)点的迭代较(,i j )点进行得早,顾可使用当次迭代的结果。
直到所有的点电位满足,,1i j i j k k ϕϕε+-<(ε为所设定精度)时迭代停止。
3.问题描述设有一个长直接地金属矩形槽,如图2-1所示,其侧壁与底面点位均为零,顶盖电位为100V (相对值),求槽内点位分布。
图3-1 金属槽4.程序设计4.1全场域问题对于问题(1)(2)(3)而言,以步距的正方形网格离散化场域。
每个网格对应于矩阵中的单个元素。
由此通过矩阵中的值的计算并指定相邻两次的迭代值误差不超过,应用matlab中的矩阵操作。
利用ones(x,y)建立一个且每个元素初值都为为1的矩阵A。
再对矩阵进行狄利克雷边界初始化,并且设置矩阵的左右边界为0,上下边界分别为100和0。
在保证精度的情况下以拉普拉斯差分式进行下一级的数值计算。
最终得到一个满足迭代要求的矩阵A。
具体程序实现见附录A。
4.2程序流程图图4-1 程序设计流程图通过函数contour(A)可以绘制出等电位分布图,这样可以观察出与理论情况的分布是否相同,分布图如图2-3所示:图4-2 金属槽等电位图4.3半场域问题对于问题(4),在程序设计中利用ones(x,y)建立一个且每个元素初值都为为1的矩阵A。
再对矩阵进行狄利克雷边界初始化,并且设置矩阵的左边界为0,左边界为初值为由式子100:-5:0产生的一个单位矩阵向量。
上下边界分别为100和0。
在保证精度的情况下以拉普拉斯差分式进行下一级的数值计算。
最终得到一个满足迭代要求的矩阵A。
具体程序实现见附录B 。
运行附录B 中的程序就可以得到半场域的数值解。
通过函数contour(A)可以绘制出等电位分布图,分布图如下:图4-3 半场域金属槽等电位图4.4中心点处的讨论对于问题(7),取中心点P()。
求解其电位的解析解,因为该点位置处于高度对称位置,所以该点所在的对称线上可视为匀强电场。
故有:E · L = φ (4-1)得:φ/2 = L/2 · E (4-2) 所以该点电位。
由附录A 中的程序运行得出该点的数值解为49.516V 。
由此可以得出误差范围为:0.4840V ,相对误差为:0.9700%。
5.收敛因子作用5.1超松弛迭代法为了加快收敛速度,常采用超松弛迭代法。
计算时,将某点的新老电位值之差乘以一个因子以后,再加到该点的新老电位值上,作为这一点的新电位值。
超松弛迭代法的表达式:,1,,,111,,11,1(4)4i j i j i ji jk k k k ki j i j i j k k ϕϕϕϕϕϕϕα-++-++++++-=+ (5-1)式中α称为松弛因子,其值介于1和2之间。
其中最佳收敛因子:21sin()o p απ=+ (5-2)其中p 为每边的节点数减去1。
其中M 、N 分别是x 、y 两个方向的内节点数。
对于本项目中,M=41、N=21,计算得:表4-1 最佳收敛因子迭代次数1.7516 迭代次数89取若干个收敛因子求得的迭代次数得表4-2和表4-3中的数据。
表4-2 收敛因子迭代次数和中心数值1.0 1.1 1.2 1.3 1.4 1.5 迭代次数 740 615 508 416 335 262 中心点电位值49.516749.516849.516949.517049.517149.5171表4-3 收敛因子迭代次数和中心数值1.6 1.7 1.74 1.78 1.8 1.9 迭代次数 196 133 106 73 80 161 中心点电位值49.517249.517249.517349.517349.517349.5173其中:中心点的解析解为50V 。
由收敛因子映射到中心电位值可以得到一个利用Excel 绘制的走势图。
如图:图4-1 中心点电势趋势图5.2关于收敛因子的结论5.2.1从迭代次数角度分析从迭代次数上看,收敛因子存在一个最佳值。
由表可以看出,当迭代因子从1开始趋近于最佳迭代因子时,收敛次数减少,进而使收敛速度较简单迭代法加快。
当收敛因子远离最佳收敛因子时,收敛次数又开始减少,进而使收敛速度较简单迭代法变慢。
即收敛因子影响收敛速度。
5.2.2从迭代次数角度分析从数值解的角度来说,由图3-7可知,随着加速收敛因子的增加,所得到的数值解就越接近于也随之增加。
到达一定的数值后,呈现出一种稳定的状态。
由此可知,收敛因子可以的增加会使数值解接近于解析解,而又不会等于解析解。
参考文献[1] 司守奎,孙玺箐.数学建模算法与应用.国防工业出版社,2015.2:411—424[2] 王家礼,朱满座,路宏敏.电磁场与电磁波.西安电子科技大学出版社,2009.8:118—122附录A:简单差分法求解电位分布%将待求区域化成20*40个边长为1的正方体% 顶板100V,左右底为0Vx=21;y=41;%网格节点数x行,y列A=ones(x,y);%设置21行,41列的矩阵A(1,:)=ones(1,y)*100;% 设置上基板的值A(x,:)=zeros(1,y);% 设置下基板的值A(:,1)=zeros(x,1);% 设置左基板的值A(:,y)=zeros(x,1);% 设置右基板的值disp(A);%命令行输出矩阵A瞅瞅A1=A;%初始化一级近似值A1max=1;%初始化最大绝对误差值,用于进入while循环k=0;%迭代次数while(max>1e-5)%由A迭代,算出·A1,迭代精度为1e-6k=k+1;%计算迭代次数max=0;%误差回归最小temp=0;%单次计算的前后两次迭代中的同元素的误差初始值for i=2:1:x-1 %从第2行到底20行for j=2:1:y-1 %从第2列到底40列A1(i,j)=( A(i,j+1)+A(i,j-1)+A(i+1,j)+A(i-1,j) )/4;%拉普拉斯方程差分式disp('A1(i,j)='),disp(A1(i,j));%log输出temp=abs(A1(i,j)-A(i,j));%相邻两次迭代解之间的误差disp('temp='),disp(temp);%log输出%控制精度的最大值,得到误差计算中的最大值if temp>maxmax=temp;endendendA=A1;%赋值给下次用enddisp('输出A1===='),disp(A);disp('输出迭代次数k===='),disp(k);附录B:收敛因子作用程序设计%比较最佳收敛因子和收敛因子的差异x=21;y=41;%网格节点数x行,y列A=ones(x,y);%设置21行,41列的矩阵A(1,:)=ones(1,y)*100;% 设置上基板的值A(x,:)=zeros(1,y);% 设置下基板的值A(:,1)=zeros(x,1);% 设置左基板的值A(:,y)=zeros(x,1);% 设置右基板的值disp(A);%命令行输出矩阵A瞅瞅A1=A;%初始化一级近似值A1max=1;%初始化最大绝对误差值,用于进入while循环k=0;%迭代次数a0=2-pi*sqrt((2/(41^2))+(2/(21^2)));%最佳收敛因子%------------------------------注意事项----------------------------%修改下面a的值就可以任意设定收敛因子%取值需要满足:1<=a<2%------------------------------注意事项----------------------------a=a0 ;% 收敛因子while(max>1e-5)%由A迭代,算出·A1,迭代精度为1e-6k=k+1;%计算迭代次数max=0;%误差回归最小temp=0;%单次计算的前后两次迭代中的同元素的误差初始值for i=2:1:x-1 %从第2行到底20行for j=2:1:y-1 %从第2列到底40列A1(i,j)=A(i,j)+( A(i,j+1)+A1(i,j-1)+A(i+1,j)+A1(i-1,j)-4*A(i,j) )*a/4;%超松弛迭代法表达式disp('A1(i,j)='),disp(A1(i,j));%log输出temp=abs(A1(i,j)-A(i,j));%相邻两次迭代解之间的误差disp('temp='),disp(temp);%log输出%控制精度的最大值,得到误差计算中的最大值if temp>maxmax=temp;endendendA=A1;%赋值给下次用enddisp('输出A1===='),disp(A1);disp('输出迭代次数k===='),disp(k);附录C:半场域程序设计%半场域的计算x=21;y=21;%网格节点数x行,y列A=ones(x,y);%设置21行,21列的矩阵A(1,:)=ones(1,y)*100;% 设置上基板的值A(x,:)=zeros(1,y);% 设置下基板的值A(:,1)=zeros(x,1);% 设置左基板的值right=100:-5:0;%建立一个100开头的行向量A(:,y)=right;% 设置右基板的值disp(A);%命令行输出矩阵A瞅瞅A1=A;%初始化一级近似值A1max=1;%初始化最大绝对误差值,用于进入while循环k=0;%迭代次数while(max>1e-5)%由A迭代,算出·A1,迭代精度为1e-6k=k+1;%计算迭代次数max=0;%误差回归最小temp=0;%单次计算的前后两次迭代中的同元素的误差初始值for i=2:1:x-1 %从第2行到底21行for j=2:1:y-1 %从第2列到底21列A1(i,j)=( A(i,j+1)+A(i,j-1)+A(i+1,j)+A(i-1,j) )/4;%拉普拉斯方程差分式disp('A1(i,j)='),disp(A1(i,j));%log输出temp=abs(A1(i,j)-A(i,j));%相邻两次迭代解之间的误差disp('temp='),disp(temp);%log输出%控制精度的最大值,得到误差计算中的最大值if temp>maxmax=temp;endendendA=A1;%赋值给下次用enddisp('输出A1===='),disp(A1);disp('输出迭代次数k===='),disp(k);。