有限差分法求不同介质下的二维静电场
一、 有限差分法概述
有限差分法是一种微分的方法,是历史上最悠久、理论最完整的数值分析方
法。虽然各种新的数值方法不断出现,但是有限差分法仍然是用的最为广泛的一
种数值方法。
用微分代替差分,使有限差分法的基本出发点。这一点由微分方程保证,当
自变量的差分趋于 0 时,差分也就变成了微分,即
分法的一般过程是首先是要推导出微分方程,其实,用规则网格切割定义域使之
。有限差
0h
x
时,
dx
既相邻又不重叠,然后再构造对应的差分方格式,最后计算求解并给出物理解释。
用规则网格切割定义域是获得高效率差分格式的重要环节,在定义域划分网格时
主要是为了获得网格交叉产生的结点。
二、 两个问题的描述
课程设计着重于解决两个问题。
问题 1(单一介质):
长接地金属槽,横截面积如图 1,其侧壁与底电位均为零,顶盖电位为 10V,
底部的长度为 4,侧面的长度为 2,该金属槽的填充介质仅有一种,主要讨论以
下几个问题:槽侧面的电位分布、电场强度、等位线,数值计算的误差及迭代次
数。
槽横截面区段电位分布,可理想化为二维问题。选定直角坐标系,槽内电位
函数满足拉普拉斯方程,构成一类边值问题。只需要划分网格,编程求解即可。
图 1. 单一介质下的金属槽横截面
2
2
2
2
x
y
0
x
4,
y
2
0
10
V
问题 2(多种介质):
长接地金属槽,横截面积如图 2,其侧壁与底电位均为零,顶盖电位为 10V,
底部的长度为 4,侧面的长度为 2,该金属槽的填充介质有两种,左侧的介电常
数为 1 ,右侧的介电常数为 2 ,并在离左侧 1/4 处隔开。讨论填充介质的介电常
数不同时,槽面左右两侧的电位分布、电场强度、等位线的变化情况,数值计算
的误差及迭代次数。
1
图 2. 两种介质下的金属槽横截面
槽横截面区段的左右两侧,均可理想化为二维问题。选定直角坐标系,槽内
电位函数满足拉普拉斯方程,构成一类边值问题。但是考虑到左右两侧填充介质
的不同,还必须要处理的一个问题便是 1/4 分界处的边值问题。
2
2
2
2
y
x
0
x
4,
y
2
0
10
V
3.1 差分
三、 问题分析
设函数 ( )
f x ,当其独立变量 x 有很小的 x
,所以相应地函数 ( )
f x 的增
h
量为:
( )
f x
(
f x h
)
( )
f x
( )
f x 被称为函数 ( )
f x 的差分(一阶)。它与微分不同,因为差分是有限量的
差,故通常也被称为有限差分。但只要增量 h 很小,差分 f 与微分 df 之间的差
异将很小,根据差分的定义,在差分运算中还常用一阶中心差分,其公式为:
( )
f x
(
f x
)
(
f x
h
2
h
2
)
一阶差分仍是独立变量 x 的函数。二阶差分的用类似的差分方法求,得到
( )
( )
f x
f x
f x 的二阶差分。同样,当 h 非常小时,二阶差分 2
( )
,称为原始函数 ( )
d f x 。
2
很接近于二阶微分 2
3.2 建立差分格式
建立二维泊松方程和拉普拉斯方程的差分格式,首先要离散化定义域,通常
是用规则的网格,如三角形,矩形,正方形,多角形,等进行切割,产生的网格
交点称之为节点,小网格单元称为元素。然后,用有限差分法把节点上的偏倒数
表达出来。
在偏微分方程中常常提出如下的第一边值问题:即在平面区域内(G )上
分别给出了微分方程和边值条件:
u
2
x
,
当(x,y)
u
2
y
u
u
2
2
( ,
f x y
),
当(x,y) G
2
其中: 是边界 上的连续函数,边界包含了三类,即狄利克莱边界条件,
诺埃曼边界条件,以及拉宾边界条件。
差分格式的构造:我们在区域G上讨论最简单的泊松方程
2
2
2
y
x
2
( ,
f x y
)
通过差分可以得到泊松方程的二阶差分表达式“五点格式”或称为“菱形格
式”,具体坐标如图3所示。
i
1,
j
i
1,
j
i
,
j
1
i
,
j
1
4
i
,
j
2
h f
i
,
j
令 ,i
jf =0,就得到拉普拉斯方程的差分格式,如下:
,4
i
1,
1,
1
1
i
j
i
j
i
j
i
j
j
,
,
0
(1)
3.3 迭代
图 3. 差分网格的节点坐标
差分方程确定之后,一般选用迭代法求解,这是由于方程组系数矩阵之中有
大量元素为0,并且系数矩阵形成比较简单,有规律和重复。在迭代过程中常常
可以一边形成系数矩阵一边计算,以节省内存,因而迭代法比直接法更常用,而
且在实际计算中为了保证精确度,步长往往取得较小,因此网格区域的结点很多,
所以差分方程是一个高阶的线性代数方程组,由于对所列五点差分格式,每一内
结点只依赖周围相邻的四点,因此采用迭代法就可以充分利用这一优点。
1) 雅克比法:
1)
n
n
n
n
n
(
]
i
,
j
1
2
h f
0
1
4
1
4
[
i
,
j
i
1,
j
i
1,
j
i
,
j
1
2) 高斯-赛德尔法:
在电子计算机上采用同步迭代法求解,必须要有两套工作单元来存储网格区
域结点上的解在迭代过程中的新值与旧值。而异步迭代法其收敛速度比同步迭代
法要快一倍左右。
(
n
1 [
4
3) 逐次超松弛迭代法:
1)
,
i k
n
1
i
,
j
1
n
1
i
1,
j
n
i
1,
j
n
i
,
j
1
]
2
h f
4
0
3
通过实际计算证明,在结点个数较多的情况下,异步迭代法的收敛速度仍然
很慢,为了加快迭代收敛的速度,就在异步迭代法的基础上提出了逐次超松弛迭
代的方法,即SOR方法。方法的基本思想是:
n
1)
n
n
n
n
n
(
1
i
,
j
1
1
i
1,
j
i
,
j
w
4
[
i
1,
j
]
i
1,
j
i
,
j
其中w是一个常数,称为超松弛因子,且1
针对问题 1 和问题 2,求解过程可具体化如下:
1、网格划分,编程时,考虑到矩形的长宽比是 2:1,故划分为 28*14 等分
2、采用逐次超松弛迭代法,超松弛因子的计算,根据划分的网格数,代入
公式(3),即可求得较好的超松弛因子为 1.7998。
3、问题 1 只需要根据公式(1)求解即可,问题 2 则需要根据公式(1)和(3)共同
求解。根据要求的精度确定迭代次数,从而求得数值解。
问题 1 的求解:
4.1 先求得离散后平面各点的电位,再进行相应的处理,利用 MATLAB 自带的
函数 surf ( )、contour ( ) 和 quiver ( ) 就可绘出电势、等位线及电场强度分布图。
matlab 仿真源程序如下:
%Part 1: lianghua kongjian
Nx=28;
Ny=14;
Lx=4;
Ly=2;
Hx=Lx/Nx;
Hy=Ly/Ny;
alpha=1.7998;
u=zeros(Ny+1,Nx+1);
%Part 2: dianwei fuzhi;
j=2:Nx;
u(Ny+1,j)=10;
i=1:Ny+1;
u(i,1)=0;
i=1:Ny+1;
u(i,Nx+1)=0;
for i=1:Ny
%chao songchi yinzi
for j=2:Nx
u(i,j)=10/Ny*(i-1);
end
end
u
%Part 3: jisuan dianwei;
Error_max=0;
Precision=1e-05;
Nmax=1000;
for k=1:Nmax
Error_max=0;
for i=2:Ny
for j=2:Nx
%dayin shuzu
u1=u(i,j);
u(i,j)=u(i,j)+alpha*(u(i+1,j)+u(i,j+1)+u(i-1,j)+u(i,j-1)-4*u(i,j))/4;
u2=u(i,j);
5
if abs(u2-u1)>Error_max
Error_max=abs(u2-u1);
end;
end
end
if Error_max
end;
for i=1:(Ny+1)
yu(i)=y0+(i-1)*Hy;
end;
[X,Y]=meshgrid(xu,yu);
surf(u);
%surf(X,Y,abs(Ex));
%surf(X,Y,abs(Ey));
%surf(X,Y,E);
%deng gao xian
figure
contour3(u,10);
figure
[Dx,Dy]=gradient(u,Hx,Hy);
quiver(-Dx,-Dy);
figure
contour(X,Y,u)
hold on
quiver(-Dx,-Dy);
hold off
4.2 matlab 仿真结果及其分析:
10
8
6
4
2
0
15
16
14
12
10
8
6
4
2
0
-5
可以看出,电势分布比较平滑,在
三个边上的电势为 0,在第四个边
上的电势为 10V,满足边界条件。
10
5
10
0
0
30
20
图 5. 电势分布图
可以看出,电场强度呈对称分布。
0
5
10
15
20
25
30
35
7
图 6. 场强分布图
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0
可以看出,等位线为平滑的凹形两侧
呈现出明显的对称,同一高度时,中
间位置处的电位要强于两侧。这符合
截面的电位分布初始条件。
0.5
1
1.5
2
2.5
3
3.5
4
图 7. 区域内电场等位线分布
问题 2 的求解:
4.3 先求得离散后平面各点的电位,再进行相应的处理,在编程时需要特别注
意离左侧 1/4 分界处的电位处理。利用 MATLAB 自带的函数 surf ( )、contour ( ) 和
quiver ( ) 就可绘出电势、等位线及电场强度分布图。编程比较填充介质不同时
的结果,matlab 仿真源程序如下:
%Part 1: lianghua kongjian
Nx=28;
Ny=14;
Lx=4;
Ly=2;
Hx=Lx/Nx;
Hy=Ly/Ny;
alpha=1.7998;
u=zeros(Ny+1,Nx+1);
%Part 2: dianwei fuzhi;
j=2:Nx;
u(Ny+1,j)=10;
i=1:Ny+1;
u(i,1)=0;
i=1:Ny+1;
u(i,Nx+1)=0;
for i=1:Ny
%chao songchi yinzi
for j=2:Nx
u(i,j)=10/Ny*(i-1);
end
end
u
%Part 3: jisuan dianwei;
%dayin shuzu
8