时间:2024-09-03
湖南大学电气与信息工程学院 林昊宇
基于MATLAB的超松弛迭代法的电位研究
湖南大学电气与信息工程学院 林昊宇
有限差分法作为静态场电位求解问题的有效数值解法,它将场域划分为有限个网格节点,用差分方程组求得近似解。本文由此出发,详细介绍了用有限差分法求解场域电位的基本原理,并详细阐述了几种常用的迭代方法,并用实例重点分析了运用超松弛迭代法求解场域电位的方法。本文运用MATLAB语言进行计算,简单、易读,摆脱了传统C语言程序的不足,最后通过绘制电位分布图像仿真验证了算法和程序的正确性与有效性。
有限差分法;超松弛迭代法;静态场电位问题;MATLAB
随着计算机技术、实验研究技术的迅速发展,电磁场学科在教研、工程上的应用也在逐步加深。而经典电磁学理论作为电磁技术发展的理论基础,其核心麦克斯韦方程组的重要性不言而喻。因此在工程上求解电磁场的基本任务,便是根据电磁场域的特性建立数学模型,利用麦克斯韦方程列出方程,利用边界条件,求解出磁场的分布。
电位的计算则是静电场计算的基本问题。只要计算出电位,包括电场强度在内的电磁场物理量都可以由其求得。在以往的区域电位求解中,主要有解析法和数值法两大类。解析法所求得的结果较为精准,但是在实际的工程问题中往往因为条件过于复杂而无法求得。故在此情况下,用数值法求解电磁场电位便是良方。近年来,随着计算机技术的发展和各种算法技术的进步,数值方法有了很大的飞跃,主要内容包括:有限差分法、有限元法、蒙特卡洛法等。本文将使超松弛迭代法,通过MATLAB研究区域磁场的电位问题。
超松弛迭代法是在有限差分法的基础上为提高收敛速度,采用加权平均而得到的新算法。因此我们需要先了解运用有限差分法求解区域磁场的基本原理。所谓有限差分法(finite difference method),是一种求偏微分(或常微分)方程和方程组定解问题的数值解的方法,它以差分原理为基础,具有简单、直观的特点,是最早广泛应用于电磁场数值分析领域的方法。用此方法时,采用离散化思想,计算的步骤通常如下:
采用一定的网格划分格式,把实际连续的的磁场离散为有限的多个点。
使用差分原理,对磁场域内偏微分方程以及磁场域边界条件进行差分离散化处理,即用差商替代偏导数,写出相应的差分格式。
结合代数方程组的求解,可通过计算机程序,求出由以上的步骤得到的代求边界问题的差分方程的解,即可求出网格节点的位函数值,进一步求得电位分布。
下面以二维泊松方程的第一类边值问题为例介绍用有限元差分法求解区域电位的基本原理。
二维静电场的边值条件满足:
将如图1的场域分成足够小的正方形网络,网络之间的距离为步长h,节点A,B,C,D,E上的电位分别用φ0,φ1,φ2,φ3和φ4表示。
图1 区域磁场网格划分
设函数φ在x0处可微,则沿x方向在x0处的泰勒公式展开为:
由(3)+(4)得:
同理,在y方向上有:
将式(5)、(6)代入式(1)的边界条件中,得到泊松方程的五点差分格式:
式(8)表明,任意点的电位等于它周围四个点电位的平均值。当求解区域很大时,划分的网格点很多,那么求解的方程组中,未知数也将很多。此时采用迭代法较为简便。下面将就常用的几种迭代法作简要分析。
1.简单迭代法
在图1中,将包含界别在内的节点均以下标(i,j)表示,用上标n表示某点电位的第n次迭代值。由式(8)得出点(i,j)的第n+1次电位的计算公式为:
在以式(9)进行迭代计算时,迭代顺序可按先行后列,或先列后行进行,逐级求出近似值。迭代过程如遇到边界节点时,代入边界值或边界差分格式,直到连续两次迭代求得的电位差值在允许误差范围内,结束迭代。
2.高斯-赛德迭代法
为了节约计算时间,对简单迭代法进行适当改进,即每计算出一个节点的高一次近似值,就立即用它参与其他节点的差分方程的计算,它的表达式可以写为:
由于高一级迭代值的提前使用,高斯-赛德迭代法比简单迭代法快一倍左右,数据容量也小。
3.超松弛迭代法
为了进一步加快收敛速度,采用超松弛迭代法。这里引入收敛因子α,将某节点的新旧电位值之差乘以收敛因子,在加到该节点的旧电位值上,以之作为该节点的新电位值。表达式如下所示:
研究可知,迭代收敛的速度与收敛因子有明显关系,如下表所示:
表1 收敛因子与迭代次数关系表
由于收敛因子的选取一般依经验而定,对于正方形磁场场域,可由下面的经验公式计算最佳收敛因子:
除此之外,迭代收敛的速度还与电位初始值的给定、网格剖分精细和工程精度误差有关。
下面用实例阐述通过MATLAB使用超松弛迭代法求解场域电位的方法。例:在一个长直接地金属槽中,其横截面如图2所示,其侧壁与底面电位均为零,底盖电位的相对值为10,试求槽中间区段的电位分布。
图2 长直接地金属槽
对于金属槽中间区段的电场分析,可理想为二维平行平面场的问题,选定直角坐标系,槽内电位函数满足拉普拉斯方程,构成如下所示的第一类边值问题:
为了全面了解超松弛迭代法的应用,本例先在粗略的网格剖分下,计算槽内九点区域电位的近似解,再推算区域内任意点的电位情况。解题过程如下:
(1)场域离散化。用正方形网格对场域进行粗略剖分,使得步距,方向的等分数均为,使场域内存在九个点。
(4)给定初值:进取零值为初始值。
(5)给定迭代解收敛的指标。规定,当各网格内点相邻二次迭代的近似值的绝对误差的绝对值均小于10-5时,迭代终止。
经计算可知,迭代次数为13,用MATLAB求解出九点的电位值和电位分布图像如下所示:
图3 用MATLAB计算得到的九点电位值
图4 用MATLAB绘制得到的电位分布图
下面研究如何求出任意点的电位。该问题的关键在于如何设置合适的程序终止条件。为此提出如下思路:引入一个判断矩阵P和两个计算矩阵Va、Vb,其中Vb作为初始矩阵,Va作为迭代矩阵,判断矩阵则作为循环执行与否的条件,而迭代矩阵与初始矩阵之差作为是否满足误差限的判断条件。当某一次迭代使得迭代矩阵与初始矩阵之差的绝对值小于误差限,则令判断矩阵P=0,以此跳出循环。给出MATLAB代码实现如下:
N=100;
Va=zeros(N);
Vb=zeros(N);
for i=2:N-1
Va(1,i)=10;
end
e=1e-5;
p=ones(N);
p(:,N)=0;
p(N,:)=0;
p(1,:)=0;
p(:,1)=0;
while sum(abs(p(:)))~=0
Vb=Va;
for i=N-1:-1:2
for j=2:N-1
Va(i,j)=Vb(i,j)+1.17/4*(Vb(i-1,j)+Va(i+1,j)+Vb(i,j+1)+Va(i,j-1)-4*Vb(i,j));
if abs(Va(i,j)-Vb(i,j)) p(i,j)=0; end end end end contour(Va); grid on 通过更改程序中的N值,可以求出场域点阵中任意点的电位值。假令N=100,绘制出电位分布曲线如图5所示: 图5 用MATLAB绘制得到100×100点阵的电位分布图 [1]谢处方,饶克谨.电磁场与电磁波(第四版)[M].北京:高等教育出版社,2006. [2]倪光正.工程电磁场原理(第二版)[M].北京:高等教育出版社,2009. [3]葛哲学.精通MATLAB[M].北京:电子工业出版社,2008. [4]王飞,裴永祥.有限差分方法的MATLAB编程[J].新疆师范大学学报(自然科学版),2003,22(4):22-27.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!