二维电磁场泊松方程差分格式
由泰勒公式:
以及:
两式做和,截断于项,得到二阶差商:
二维场域内泊松方程为:
于是在等距五点格式下,点的差分方程为
对于拉普拉斯方程,则有:
差分方程组的解法
1直接迭代
由于
于是任意给出各节点处函数值然后带入上式右端,得到第一次函数近似值.
依次循环,以第n次迭代值求得第n+1次近似值,即:
由于此法收敛慢,又消耗两套储存单元,占用内存大,实际中并不采用。
2高斯—赛德尔迭代法
这一方法的基本思想是:在第n+1次迭代时,如果某些相关节点上的第n+1次迭代值已经得到,便可直接将这些新值代入进行运算。因此,高斯—赛德尔迭代法的公式与计算顺序是有关的。在从左到右,从上到下的逐点计算顺序中,高斯—赛德尔公式如下:
可以证明,这一方法迭代次数近似与成反比。但网格节点数目很大时,这一方法收敛速度仍很慢。
3超松弛迭代法
为了加快收敛,引入松弛因子,把高斯—赛德尔迭代法的值作为一个中间结果
取n+1次迭代为和上次迭代值的加权平均,即
整理得:
取值范围一般为[1,2),其具体值依靠经验。当=1时,还原为高斯—赛德尔迭代法。
应用示例:
对于这一题,编写matlab函数实现功能:输入长、宽节点数以及松弛因子,输出最终迭代结果与迭代次数。这是一个简单矩形无源空间的迪利克雷边界条件问题。不难根据上述原理写出matlab代码如下:
function [Phi2,n] = DSOR(a,b,w)
%a列数
%b行数
%w松弛因子
Phi = [100*ones(1,a);zeros(b-1,a)]; %生产点阵并配置边界条件
Phi(2:round(b/2-0.5),2:a-1) = 100; %稍微填充一下内部,减少迭代次数
Phi2 = Phi;
Phi1=Phi2; %生成两个矩阵迭代
n=0; %迭代次数
p=1; %判断条件,前后两次迭代各元素之差的绝对值的最大值,初始化为1
while p>10E-10 %判断条件,p大于10E-10时继续迭代
for i = 2:b-1
for j = 2:a-1
Phi2(i,j) = Phi1(i,j)+w*0.25*(Phi1(i+1,j)+Phi1(i,j+1)+Phi2(i-1,j)+Phi2(i,j-1)-4*Phi1(i,j));
end
end %完成一次迭代
n=n+1;
p=max(max(abs(Phi2-Phi1))); %判断条件,前后两次迭代各元素之差的绝对值的最大值
Phi1=Phi2;
end
如下图参数调用此函数
得到结果
下图是在51*51个节点时, 与迭代次数的关系:
待更新 ……