一维抛物方程的两层网格算法优越性研究*

2022-03-13 13:16李小珍
关键词:迭代法热传导抛物

李小珍

(安徽国防科技职业学院)

0 引言

抛物型方程属于一种偏微分方程,这一类方程往往与人类的生产生活密切相关,可以通过求解偏微分方程来解释一些自然现象和物理意义.求解偏微分方程的数值解,目前来说,主要归结为直接法和迭代法这两种常见的方法[1].其中,直接法是通过有限差分方式把微分方程中的微分形式用差商来代替,以此将一个抛物型偏微分方程转化为便于研究的代数方程或方程组.但这种方法也有着诸多不便.相较于迭代法来说,它占用内存大,运算速度慢[2].通过讨论两种较常见的迭代法,即雅可比迭代法、高斯-赛德尔迭代法剖析网格算法的优势.这两种迭代法均可收敛,但通过计算比较得出,在相同精度下,高斯-赛德尔迭代法所需迭代的次数更少,可节省更多时间[3-4].然而,高斯-赛德尔迭代法的计算量依然存在计算量较大和收敛速度慢的问题[5].因此,利用两重网格算法进行抛物方程迭代求解[6].两层网格方法的主要思想就是在细网格上迭代,再在粗网格上校正,如果没有达到所需误差精度便一直重复上述两步骤.这种方法运算速度快,占用内存少,一般来说,仅需很少的迭代次数便可达到所需的精度.

1 抛物方程及算法概述

1.1 抛物型偏微分方程

抛物型偏微分方程是偏微分方程的一种.通过判别式的符号来对偏微分方程进行分类,在微分方程[1]

(1)

在公式(1)中,x表示在一维平面中的位置,t表示时间.当f(x,t)=0的情况,即抛物型偏微分方程.一维抛物型微分方程中的典型例子是一维的热传导方程(在此处与扩散方程表达式相同,因为热扩散的方式是一样的).基本形式可表示为[5]:

(2)

有边值条件为u(0,t)=u(1,t)=0,并有初值条件u(x,0)=u0(x).一维的热传导方程可模拟杆中的热传导,在这种情况时,u(x,t)表示热流的密度,它与温度成正比;K表示热传导系数,它取决于材料和它自身导热的程度.为了后文研究和计算方便,(2)式中取热传导系数K=1,即化为

(3)

1.2 迭代法的基本概念

(1)迭代法的基本概念

对于任意一个给定的线性方程组Ax=b,其中矩阵A=(aij)n×n,b=(b1,…,bn)T.假设它有唯一解,可以通过迭代产生序列,并构造以下的向量序列

x(k+1)=Mx(k)+g

(4)

其中,k表示迭代次数(k=0,1,2,…,n),M为n阶矩阵,对于给定的线性方程组,用公式(4)逐步代入求近似解的方法称为迭代法[5].

(2)雅可比迭代法[3]

雅可比迭代法是以普鲁士的著名数学家雅可比(Carl Gustav Jacobi)来命名的.假设一个线性方程组为Ax=b,采用Jacobi的方法,则要将A分解为三部分,分别为下三角矩阵L,对角阵D,上三角矩阵U,A=L+U+D,如式(5)所示:

也就是说,b=(L+D+U)x,移项得:Dx=(L+U)x+b,解得:x=(D)-1(L+U)+(D)-1b.对于公式(4),经过如下一系列迭代:

(6)

得到迭代公式:

(3)高斯-赛德尔迭代法

高斯-赛德尔迭代法是以德国数学家卡尔·弗里德里希·高斯和路德维希·赛德尔来命名的,也称为李伯曼方法或连续位移方法[4].先假设一个线性方程组为Ax=b,同样将系数矩阵A分解为三部分,对角阵D,下三角矩阵L,上三角矩阵U.不同的是,A=D-L-U,故高斯-赛德尔迭代法的迭代公式为

(i=1,2,…,n;k=0,1,2,…,n)

(7)

(4)两层网格算法

两层网格方法主要思想是通过细网格迭代来减少误差中的高频部分,粗网格校正来减少误差的低频部分[6].通过这种方法,可以满足“收敛速度与网格步长h无关”这种要求.

抛物方程用有限差分法将其化作如下的矩阵形式:Au=f,然后用两层网格的方法进一步求解:

第一步:使用Jacobi迭代(也可用其他迭代如Gauss-Seidel迭代)迭代V1次(V1可以自由选取合适值,此处V1选取3),记得结果为un.

第二步:计算余量rh,通过等式rh=fn-An·un.并做余量限制r2h=Rh*rh.

第三步:解粗网格方程:A2h·E2h=r2h得到E2h,其中A2h可由之前定义的差值矩阵和约束矩阵得到,为:A2h=Rh·Ah·Ih;

第四步:做粗网格校正,并将校正量加到uh上,即此时的近似解u=uh+Eh.校正量Eh可通过粗网格计算Eh=Ih·E2h得到;

第五步:计算此时的误差精度是否达到要求,如达到,则已完成所有步骤,上一步骤中的u即为所需要的解;如没有达到,则返回第一步中的细网格迭代,迭代方程中的un用最新得到的u来代替.如此循环几次,直到达到接近真实值为止.

2 结果与讨论

2.1 不同算法的数值解和精确解比较

利用Matlab软件使用Jacobi迭代法、Gauss-Seidel迭代法和两层网格算法对一维热传导抛物方程进行求解.当n=10,k=1时的数值解和精确解结果如图1所示.

图1 一维热传导抛物方程不同算法的数值解与精确解

由图1可知,Jacobi迭代法、Gauss-Seidel迭代法和两层网格法的数值解与精确解走势图变化趋势非常接近,未出现多峰等现象,说明三者计算结果的准确度相差不大.

2.2 Jacobi和Gauss-Seidel迭代法中n与k的关系

(1)当k=1时的迭代次数

为剖析Jacobi迭代法和Gauss-Seidel迭代法中n值和k值对迭代次数的影响.先固定k=1,取不同的n值,如10,20,40,80,160,320,取误差值精度为0.01,比较此时Jacobi迭代的次数.由Matlab软件计算,结果见表1.

表1 k=1时不同算法的迭代次数结果

(2)当n=160时的迭代次数

然后固定n=160,取不同的k值1,2,3,4,5,6,取误差值为0.01,比较此时Jacobi迭代的次数,结果见表2.

表2 n=160时不同算法的迭代次数结果

由表1和表2可以看出,当k值固定时,n值越大,则达到误差精度所需迭代的次数越多;当n值固定,k值越大,达到误差精度所需迭代的次数反而越少.但通过比较两种迭代法所需迭代次数发现,Gauss-Seidel迭代所需次数远远少于Jacobi迭代的次数.

2.3 两层网格算法运算结果

两层网格方法与Jacobi迭代及Gauss-Seidel的迭代方法不同,它的收敛速度不会随着h的减小而变慢,也就是说,它的迭代次数与h的取值无关.为验证这一点,对h分别取值10,20,40,80,160,320,再计算其迭代次数,结果见表3.

表3 两层网格算法迭代次数运算结果

从表3可以看出,两层网格方法所需的迭代次数的确与n值无关,这就证明了它的收敛速度不会随着h的减小而变慢.同时,这种方法所需的迭代次数很少,当n值达到20后只需要迭代一次,由此可看出两层网格方法在运算速度和占用运行空间方面的优越性和高效性远远高于经典的迭代方法.

3 结论

偏微分方程及抛物型的偏微分方程的研究,对物理科学和其他自然科学具有重要意义.通过比较三种迭代法(Gauss-Seidel迭代法、Jacobi迭代法和两层网格法)求解一维抛物方程的精度与影响因素,得到以下结论:

(1)在相同误差精度条件下,Gauss-Seidel迭代法比Jacobi迭代法的迭代次数少,收敛速度更快.

(2)取不同的n值和k值时所造成的对迭代次数的影响.发现了n值越大,即h越小时,迭代次数越多;k值越大,所需的迭代次数反而越少.

(3)两层网格算法可以解决h对方程收敛速度的影响问题,通过细网格上迭代,再在粗网格上校正,仅需很少的迭代次数便可达到所需的精度.

猜你喜欢
迭代法热传导抛物
迭代法求解一类函数方程的再研究
高空抛物罪的实践扩张与目的限缩
一类三维逆时热传导问题的数值求解
冬天摸金属为什么比摸木头感觉凉?
H-矩阵线性方程组的一类预条件并行多分裂SOR迭代法
具有非线性边界条件的瞬态热传导方程的二择一结果
关于抛物-抛物Keller-Segel类模型的全局解和渐近性
不要高空抛物!
高空莫抛物
热传导方程的解的衰减性质研究