4
o
第一类边界问题的有限差分法探讨
摘要:本次重点是对于第一类边界问题的两种不同方法的对比研讨,
通过计算机仿真有限差分法和计算分离变量法对同一问题的求解,对
结果进行对比,能够发现有限差分法更加快捷简便,只要迭代次数
0a
04
14
f
o
3
x
之后,利用二维拉普拉斯方程的有限差分形式用围绕它的四个点的电位的平均值作为它的新值,当所有的点计算完后,用它们的新值代替旧值,即完成了一次迭代。然后再进行下一次迭代,如此循环。如下式:
9(k+i)=丄(p(k+i)+q(k+i)+q(k)+q(k))i,j=1,2,・・・i,J4L1,jiJ—1i+1,ji,J+1
(迭代公式1)
其式中的上角标(k)表示k次近似值,下脚标i,j表示节点所在位置,即第i
行第j列的交点。其中要特别注意:在迭代过程中遇到边界点式,需将边界条件申=f带入。
i,ji,j
循环迭代时当所有内节点满足以下条件时停止迭代:
q(k+1)—甲(k)<W
••••
i,ji,j
其中,W是预定的最大允许误差。
方法二:逐次超松弛法
简单迭代法在解决问题时收敛速度比较慢,实用价值不大。实际中常
采用逐次超松弛法(又称高斯——赛德尔迭代法变形),相比之下它
有两点重大的改进,第一是计算每一网格点时,把刚才计算得到的临近点的新值代入,即在计算(i,j)点的电位时,把它左边的点(i-1,j)和
下面的点(i,j-1)的电位用刚才算过的新值代入,即:
a(
Q(k+1)=Q(k)+
i,ji,j~4
Q(k+1)+Q(k+1)+Q(k)+Q(k)-4Q(k))
i-1,ji,j-1i+1,ji,j+1i,j
(迭代公式2)
第二,是引入“加速收敛因子”上式中的a即为“加速收敛因子”且1《a<。特别关注的是逐次超松弛法收敛的快慢与a有明显关系。并且最佳a的取值随着条件的不同而不同,如何选择最伽,是个复杂问题。在计算时可以尝试求取最佳a值,以使计算快速。
五、应用计算机仿真有限差分法解决具体问题本次讨论我选择第四题为具体实例进行研究。题目:
如图所示,有一长方形的导体槽,a=20,b=15,设槽的长度为无限长,槽上有一块与槽绝缘的盖板,电位为100V,其他板电位为零,求槽内的电位分布。
b,
O=100
ax
通过MATLAB进行仿真,运用有限差分法,源代码如下:
u=zeros(15,20);
i=2:14;
u(i,20)=100;
forj=1:20
fori=2:14
u(i,j)=100/19*(j-1);
end
end
a=input('pleaseinputa(1<a<2);a=');
m=input('pleaseinputm(1<m);m=');
forn=1:m;
fori=2:14;
forj=2:19;
b=u(i,j);
c=u(i,j+1);
d=u(i+1,j);
e=u(i-1,j);
f=u(i,j-1);g=.*(c+d+e+f);u(i,j)=b+a.*(g-b);
end
end
end
mesh(u);
通过对相关资料的查询及学习,我认为运用MATLAB编程就是要将有限差分法的基本公式实现。以此为出发点可以让解析和编写过程相对简单化。
首先,先要对电场的边界条件进行设定:u=zeros(15,20);
i=2:14;
u(i,20)=100;
使其满足题目的要求右侧边界电位为100,其余三边为0,由此
也可以判断出此题目为第一类边界条件的问题。同时,此处,也要特别注意,因为在MATLAB程序中,编写一个矩阵的默认顺序是从左到右,从上到下。另外,命名矩阵时是先编写行,后编写列,因此,对于u(i,j)中,i代表的是第i行即对应纵坐标,j代表的是第j列即对应横坐标,与坐标表示有一定的差别,需要区分和注意。
之后是相对关键的编写部分,就是对电场内部的电位设定,此处,我通过分离变量法将
u分解为u(x)和u(y),分别求解。为让计算简便,我设定其内电场为线性变化的,即u(x)=kx+b,u(y)=0作为初值进行计算(应用分离变量法得到的结果是u(x)=Bsinhmn/15u(y)=Asinmn/15。可以通过此处在得出结果后进行对比和误差分析。)又因为要在MATLAB中进行运算,所以首先要转化为i和j的形式,因此可得:u(j)二kj+b和u(i)=0。从而得到方程组:u(1)=k+b=0;
u(20)=20k+b=100。
解得:u(j)=100/19*(j-l),即:u(i,j)=100/19*(j-l)。由此得到
第一类边界问题的有限差分法探讨 来自淘豆网m.daumloan.com转载请标明出处.