二维泊松方程求解--点迭代法

article/2025/3/3 5:10:09

本文目录

  • 1. 问题描述
    • 1.1. 泊松方程
    • 1.2. 算例
  • 2. 区域离散和方程离散
    • 2.1. 边界条件
  • 3. 代数方程组求解
    • 3.1. 雅可比迭代
    • 3.2. 高斯-赛德尔迭代
    • 3.3. SOR迭代
    • 3.4. 迭代收敛标准
    • 3.5. 迭代法收敛的分析
    • 3.6. 上述迭代方法的计算结果
  • 4. 代码

1. 问题描述

本算例来自B站Up主“Red-Green鲤鱼”的系列教程。本文主要介绍计算代数方程组的三种点迭代方法。

1.1. 泊松方程

含有二阶偏导数的偏微分方程:
∂ 2 ϕ ∂ x 2 + ∂ 2 ϕ ∂ y 2 = f ( x , y ) \frac{\partial^2 \phi}{\partial x^2}+\frac{\partial^2 \phi}{\partial y^2}=f(x,y) x22ϕ+y22ϕ=f(x,y)

f = 0 f=0 f=0时,上述方程被称为拉普拉斯方程。许多物理过程都可以用泊松方程来描述,如热传导方程
∂ ϕ ∂ t = ∂ 2 ϕ ∂ x 2 + ∂ 2 ϕ ∂ y 2 \frac{\partial \phi}{\partial t}=\frac{\partial^2 \phi}{\partial x^2}+\frac{\partial^2 \phi}{\partial y^2} tϕ=x22ϕ+y22ϕ

在求解不可压缩流动的NS方程时,通常将已知压力场代入动量方程来预估速度场,然后将预估的速度场代入连续性方程中,由于预估的速度场中包含压力梯度项,因此代入连续性方程后会得到 ∇ ⋅ ( ∇ P ) \nabla \cdot(\nabla P) (P),即压力泊松方程

1.2. 算例

令上述泊松方程的源项为如下形式:
f ( x , y ) = − 4 ⋅ s i n ( x − y ) ⋅ e ( x − y ) f(x,y)=-4\cdot sin(x-y)\cdot e^{(x-y)} f(x,y)=4sin(xy)e(xy)

其解析解为
ϕ ( x , y ) = c o s ( x − y ) ⋅ e ( x − y ) \phi(x,y)=cos(x-y)\cdot e^{(x-y)} ϕ(x,y)=cos(xy)e(xy)

比较数值解与解析解在定义域 x ∈ [ − 1 , 1 ] , y ∈ [ − 1 , 1 ] x\in [-1,1], y\in [-1,1] x[1,1],y[1,1]上的差别。边界条件为Dirichlet,边界上的值由解析解求出。

2. 区域离散和方程离散

x x x方向设置 N N N个结点,编号从 1 − N 1-N 1N y y y方向上设置 M M M个结点,编号从 1 − M 1-M 1M,结点间距分别为 Δ x \Delta x Δx Δ y \Delta y Δy,将 ( i , j ) (i,j) (i,j)号结点记为 P P P,该结点上下左右四个结点分别记为 N , S , W , E N,S,W,E N,S,W,E

采用有限差分法计算泊松方程,二阶偏导数项采用二阶中心差分离散,
∂ 2 ϕ ∂ x 2 ∣ P = ϕ W + ϕ E − 2 ϕ P Δ x 2 \frac{\partial^2 \phi}{\partial x^2}\bigg|_P=\frac{\phi_W+\phi_E-2\phi_P}{\Delta x^2} x22ϕP=Δx2ϕW+ϕE2ϕP

∂ 2 ϕ ∂ y 2 ∣ P = ϕ N + ϕ S − 2 ϕ P Δ y 2 \frac{\partial^2 \phi}{\partial y^2}\bigg|_P=\frac{\phi_N+\phi_S-2\phi_P}{\Delta y^2} y22ϕP=Δy2ϕN+ϕS2ϕP

ϕ W + ϕ E − 2 ϕ P Δ x 2 + ϕ N + ϕ S − 2 ϕ P Δ y 2 = f P \frac{\phi_W+\phi_E-2\phi_P}{\Delta x^2}+\frac{\phi_N+\phi_S-2\phi_P}{\Delta y^2}=f_P Δx2ϕW+ϕE2ϕP+Δy2ϕN+ϕS2ϕP=fP

ϕ P = ( ϕ W + ϕ E ) Δ y 2 + ( ϕ N + ϕ S ) Δ x 2 − f P Δ x 2 Δ y 2 2 ( Δ x 2 + Δ y 2 ) \phi_P=\frac{(\phi_W+\phi_E)\Delta y^2+(\phi_N+\phi_S)\Delta x^2-f_P \Delta x^2 \Delta y^2}{2(\Delta x^2+\Delta y^2)} ϕP=2(Δx2+Δy2)(ϕW+ϕE)Δy2+(ϕN+ϕS)Δx2fPΔx2Δy2

Δ x = Δ y = h \Delta x=\Delta y=h Δx=Δy=h,则上式化为
ϕ P = 1 4 ( ϕ W + ϕ E + ϕ N + ϕ S − h 2 f P ) \phi_P=\frac{1}{4}(\phi_W+\phi_E+\phi_N+\phi_S-h^2f_P) ϕP=41(ϕW+ϕE+ϕN+ϕSh2fP)

2.1. 边界条件

左边界
ϕ 1 , j = c o s ( − 1 − y j ) ⋅ e ( − 1 − y j ) \phi_{1,j}=cos(-1-y_j)\cdot e^{(-1-y_j)} ϕ1,j=cos(1yj)e(1yj)

右边界
ϕ N , j = c o s ( 1 − y j ) ⋅ e ( 1 − y j ) \phi_{N,j}=cos(1-y_j)\cdot e^{(1-y_j)} ϕN,j=cos(1yj)e(1yj)

下边界
ϕ i , 1 = c o s ( x i + 1 ) ⋅ e ( x i + 1 ) \phi_{i,1}=cos(x_i+1)\cdot e^{(x_i+1)} ϕi,1=cos(xi+1)e(xi+1)

上边界
ϕ i , N = c o s ( x i − 1 ) ⋅ e ( x i − 1 ) \phi_{i,N}=cos(x_i-1)\cdot e^{(x_i-1)} ϕi,N=cos(xi1)e(xi1)

3. 代数方程组求解

上一篇文章介绍了代数方程组求解方法中的直接解法TDMA,本文介绍另一大类求解方法:迭代法。迭代法的思想也可以概况为“预测-校正”,给出初始值,通过不断迭代逐步改进,直到达到一定精度要求为止。
该方法需要首先构造迭代方式;其次是所构造的迭代序列是否收敛,如果收敛则要进一步提高收敛速度。

迭代法可分为点迭代、块迭代、交替方向迭代法以及强隐迭代法。在点迭代法中,每一步计算只能改进求解区域中一个结点的值,且该值是由一个显函数形式由其余各点的已知值来确定,因而点迭代法又称为显式迭代法。

下面将讨论点迭代法的三种实施方式。

3.1. 雅可比迭代

ϕ P n + 1 = 1 4 ( ϕ W n + ϕ E n + ϕ N n + ϕ S n − h 2 f P ) \phi_P^{n+1}=\frac{1}{4}(\phi_W^n+\phi_E^n+\phi_N^n+\phi_S^n-h^2f_P) ϕPn+1=41(ϕWn+ϕEn+ϕNn+ϕSnh2fP)
上式中上标 n n n为当前预测值, n + 1 n+1 n+1为代入迭代方程后的校正值

3.2. 高斯-赛德尔迭代

ϕ P n + 1 = 1 4 ( ϕ W n + 1 + ϕ E n + ϕ N n + ϕ S n + 1 − h 2 f P ) \phi_P^{n+1}=\frac{1}{4}(\phi_W^{n+1}+\phi_E^n+\phi_N^n+\phi_S^{n+1}-h^2f_P) ϕPn+1=41(ϕWn+1+ϕEn+ϕNn+ϕSn+1h2fP)

在逐点计算过程中, W W W S S S点的值在本次迭代过程中已知,因此将已知值代入迭代方程中

3.3. SOR迭代

Successive Over Relaxation,逐次超松弛。SOR迭代法收敛的充要条件是松弛因子 0 < β < 2 0<\beta <2 0<β<2,当 β > 1 \beta>1 β>1时能够起到加速收敛的效果。
ϕ P n + 1 = β 4 ( ϕ W n + 1 + ϕ E n + ϕ N n + ϕ S n + 1 − h 2 f P ) + ( 1 − β ) ϕ P n \phi_P^{n+1}=\frac{\beta}{4}(\phi_W^{n+1}+\phi_E^n+\phi_N^n+\phi_S^{n+1}-h^2f_P)+(1-\beta)\phi_P^n ϕPn+1=4β(ϕWn+1+ϕEn+ϕNn+ϕSn+1h2fP)+(1β)ϕPn
β = 1 \beta=1 β=1,SOR迭代退化为Gauss-Seidel. 在《Computational Methods for Fluid Dynamics》第四版5.3.3节给出了一些关于SOR的讨论。

上述方程变换形式可得

ϕ n + 1 = ϕ n + β ( ϕ G S n + 1 − ϕ n ) \phi^{n+1}=\phi^n+\beta(\phi_{GS}^{n+1}-\phi^n) ϕn+1=ϕn+β(ϕGSn+1ϕn)
其中 ϕ G S \phi_{GS} ϕGS为Gauss-Seidel法求出的值。进一步移项, β \beta β用其他几项表示,可以得出 β > 1 \beta>1 β>1能够加速迭代,即缩小初始值变化到最终值所需时间。

3.4. 迭代收敛标准

本文使用如下标准来定义收敛标准
R e s i d u a l = 1 N ∑ i = 1 N ∣ ϕ i n + 1 − ϕ i n ∣ ∣ ϕ i n + 1 + ε ∣ < 1 0 − 5 Residual=\frac{1}{N}\sum_{i=1}^{N}\frac{|\phi_i^{n+1}-\phi_i^{n}|}{|\phi_i^{n+1}+\varepsilon|}<10^{-5} Residual=N1i=1Nϕin+1+εϕin+1ϕin<105
此处 N N N为全局结点个数,上式表示结点平均相对偏差小于 1 0 − 5 10^{-5} 105时,认为达到收敛。 ε \varepsilon ε为极小值,防止分母为0

除此之外,《数值传热学》还介绍了其他收敛标准。

3.5. 迭代法收敛的分析

《数值传热学》第二版7.4节写道,对于如下形式的方程:
a P T P = ∑ a n b T n b + b a_PT_P=\sum a_{nb}T_{nb} +b aPTP=anbTnb+b

Jacobi与Gauss-Seidel迭代法收敛的一个充分条件是:系数矩阵不可约且按行或按列弱对角占优。其中“弱对角占优”需满足:
∑ ∣ a n b ∣ ∣ a P ∣ ≤ 1 o r ∣ a P ∣ ≥ ∑ ∣ a n b ∣ \frac{\sum |a_{nb}|}{|a_P|}\leq 1 \quad or \quad |a_P| \ge \sum |a_{nb}| aPanb1oraPanb
对各行成立,且其中至少对一行不等号成立。在本文的算例中,系数矩阵的第一行和最后一行对应为不等号,其他各行均是等号成立,即 ∣ a P ∣ = ∑ ∣ a n b ∣ |a_P| = \sum |a_{nb}| aP=anb

3.6. 上述迭代方法的计算结果

两个方向各自的结点数 N = 101 N=101 N=101

MethodIteration number
Jacobi9141
GS5121
SOR, β = 1.5 \beta=1.5 β=1.52065
SOR, β = 1.9 \beta=1.9 β=1.9403

Jacobi
jacobi.png

Gauss-Seidel
gs.png

SOR, β = 1.5 \beta=1.5 β=1.5
sor-1.5.png

SOR, β = 1.9 \beta=1.9 β=1.9
sor-1.9.png

Analytical solution
analytical.png

4. 代码

代码链接


http://chatgpt.dhexx.cn/article/L6kdPCgd.shtml

相关文章

【论文翻译】Clustering by Passing Messages Between Data Points

论文题目&#xff1a;Clustering by Passing Messages Between Data Points 论文来源&#xff1a;Clustering by Passing Messages Between Data Points 翻译人&#xff1a;BDMLCQUT实验室 Clustering by Passing Messages Between Data Points Brendan J. Frey* and Delbert…

数值计算:线性方程组求解及应用

文章目录 一. 实验目的二. 实验内容、过程及结果实验一&#xff1a;使用直接法求解线性方程组①高斯消去法&#xff1a;②列主元法&#xff1a; 实验二&#xff1a;使用迭代法求解线性方程组①Jacobi 迭代法②Gauss-Seidel 迭代法③逐次超松弛迭代法④共轭梯度法⑤令n10、50、1…

A Survey on Knowledge Graphs___Representation, Acquisition and Applications.知识图谱综述:表示,获取,应用

知识图谱综述&#xff1a;表示、获取及应用 这是研究生第一篇综述文章&#xff0c;第一次读也是花了好几天的时间。 摘要:人类的知识提供了对世界的一种形式的理解。表征实体之间结构关系的知识图已成为认知和人的智能研究的热门方向。在这个调查中&#xff0c;我们提供了一…

【中科院】分子生物学-朱玉贤第四版-笔记-第14-16讲 真核生物基因表达调控

第14-16讲 真核生物基因表达调控 文章目录 10. 真核生物基因表达调控10.1 转录水平的调控 (transcriptional regulation)10.1.1 转录起始调控 Transcriptional initiation10.1.2 组蛋白修饰10.1.3 DNA 甲基化 10.2 转录后水平的调控 (post-transcriptional regulation)10.2.1 前…

线性系统理论笔记

文章目录 三、系统的数学描述3.2 输入输出描述二、初始松弛概念三、线性性质四、因果律五、松驰性六、时不变性七、传递函数阵 小结3.3 状态变量描述3.4 输入输出描述和状态变量描述的关系3.5 组合系统的数学描述一、时变情形二、时不变情形 四、线性动态方程和脉冲响应矩阵4.2…

2.2 SIMPLE系列算法 | 2.3 PISO算法(OpenFOAM理论笔记系列)

2.2 SIMPLE系列算法 2.2.1标准SIMPLE算法 SIMPLE算法(Semi-Implicit Method for PressureLinked Equations)1最初被设计用来求解稳态问题&#xff0c;即控制方程中不包含瞬态项的计算。按照1.3.3节的约定&#xff0c;我们假设计算开始的时候有初始的压力和速度值 P o , U o ⃗…

8月20日计算机视觉理论学习笔记——图像分割

文章目录 前言一、图像分割1、传统图像分割(1)、基于阈值的分割方法(2)、基于边缘的分割方法(3)、基于区域的分割方法(4)、基于图论的分割方法 二、人脸检测1、级联分类器(1)、Boosting 分类器 三、行人检测1、梯度2、HOG 方向梯度直方图(1)、梯度计算(2)、Block 拆分(3)、HOG计…

智能反射面(IRS)在无线通信安全领域应用的论文复现

引言 Zhang Rui老师的将IRS引入无线通信安全的论文《Secure Wireless Communication via Intelligent Reflecting Surface》有较高的引用量&#xff0c;在此给出要论文的复现及代码。 主要问题 该论文的目的是引入IRS并联合优化基站的主动式波束和IRS的被动式波束&#xff0…

线性方程组6种数值解法的对比研究

线性方程组数值解法实验研究 一、实验目的 熟悉求解线性方程组的有关理论和方法&#xff1b;会编写Gauss消去法、LU分解法、Jacobi迭代法、Gauss-Seidel迭代法、超松弛(SOR)迭代法及共轭梯度法的程序&#xff1b;通过实际计算&#xff0c;进一步了解各种方法的优缺点&#xf…

高阶查找算法第二篇

目录 平衡二叉树AVLtree数据结构插入左旋右旋右左双旋左右双旋完整AVLTree插入代码如下 AVLTree的验证AVLTree删除【了解】AVLTree性能分析 红黑树红黑树性质RBTree数据结构插入情况一&#xff1a;cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;u存在且为红情况二&…

基于有限体积法 (FVM) 和 SIMPLE 算法求解平行板之间层流的速度、压力和温度附 MATLAB 代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

【论文笔记】AP聚类算法解读

文章目录 引子自己体会吸引信息更新公式归属信息更新公式松弛因子引入 缺点评估 论文原文 引子 网络上已经有很多关于AP算法的介绍了&#xff0c;托他们的福&#xff0c;我更快地理解了AP算法。但是感觉他们不说人话&#xff0c;只说了很抽象的概念&#xff0c;公式理解起来还…

r语言 支持向量机实现_支持向量机解密:R中的实现

r语言 支持向量机实现 Support Vector Machine, popularly abbreviated as SVM is a supervised learning algorithm used for both regression and classification but more commonly used for classification. SVMs have been shown to outperform well in a variety of sett…

2017华为软件精英挑战赛小结

// 2017华为软件精英挑战赛小结 // 不说废话&#xff0c;直接上货&#xff01;希望对目前的参赛者&#xff0c;或日后学习的人&#xff0c;提供一些参考和思路。 #include <赛题说明.pdf> // 见附录文件 赛题说明.pdf 或网址传送门&#xff1a;http://codecraft.hua…

19华为软件精英挑战赛止步复赛

2019年华为软件精英挑战赛&#xff0c;京津东北赛区初赛第13&#xff0c;复赛第18&#xff0c;呦车还没我跑的快。 历时一个多月的华为软件精英大赛落下帷幕&#xff0c;很遗憾的止步了三十二强&#xff0c;从初赛到复赛更改了大大小小的版本将近50多个&#xff0c;通过改进调度…

2021CCPC华为云挑战赛热身赛A题(思维)

题目链接 题意&#xff1a;简单来说必须立足于当前值等于A序列中的一个值才能去增加 【0&#xff0c;ki】范围内的值并且k- -。贪心的想法就是尽可能的让最终自己的数大&#xff0c;我们先从A序列中选一个最大的数且处于【0,m】以内&#xff0c;然后每次转移的时候判断a[i]-a[…

2018华为软件精英挑战赛-复赛赛题

以下描述部分主要是相对初赛赛题的变化点&#xff0c;其他描述和条件均一致&#xff1a; 通用性描述变化点&#xff1a; 物理服务器&#xff1a;为了满足不同虚拟机规格的需求&#xff0c;实际物理服务器规格也有多种&#xff0c;假设云平台共有三种类型的物理服务器&#xff0…

2017华为精英挑战赛总结

大赛官网&#xff1a;http://codecraft.huawei.com/ 赛题解读&#xff1a;http://mp.weixin.qq.com/s/on_l5Rc3Be-DjgUOXftaNw 赛题案例以及编译官方软件包&#xff1a;HUAWEI_Code_Craft_2017_初赛软件包(readme.txt中有详细介绍) 从2017.3.15到2017.4.6&#xff0c;花费三个…

2017华为精英挑战赛64强总结

比赛最后一周的时候每天到凌晨2-3点&#xff0c;最后通宵了一两次&#xff0c;提交大概100多版的版本&#xff0c;使用KWM网络流遗传算法&#xff0c;最终获得了西北赛区49名的成绩。 虽说不是很好&#xff0c;但对我来说是一份难得的经历&#xff0c;这里把比赛心得和体会总结…

华为2019挑战赛

华为软件精英挑战赛总结&#xff08;初赛&#xff09; 赛题&#xff1a; 评分标准&#xff1a; 思路&#xff1a;这是一个典型的动态负载均衡算法的设计&#xff0c;对于每一辆车来说&#xff0c;时间最短意味着路程最优&#xff0c;首先想到迪杰斯特拉来求出每一辆车的最优路径…