Godunov's theorem

转自Wiki

简介

在数值计算和计算流体动力学中,Godunov定理(Godunov's theorem 或 Godunov's order barrier theorem)是采用高精度数值方法计算偏微分方程中的重要数学定理。

定理陈述为:

采用线性数值格式求解偏微分方程时,如果数值解不产生新的极值,那么格式精度最多为1阶。

Sergei K. Godunov 教授首先在其博士阶段(莫斯科国立大学)证明这个定理。这是他在应用数学研究中最具影响的工作,对科学与工程及其他领域特别是计算流体力学(CFD)有深刻的影响。

定理

同样可参考Wesseling (2001)。

假设一个连续体问题由PDE描述,并且使用数值方法在进行计算,只进行一步,均匀网格,\(M\)个节点,积分算法,显式或者隐式。如果 \(x_j = j\Delta x\),\(t^n = n\Delta t\),那么一个数值格式可以表示为

\[\begin{equation}
\sum^{M}_{m = 1}\beta_m \varphi_{j+m}^{n+1} = \sum^{M}_{m = 1}\alpha_m \varphi_{j+m}^{n}
\end{equation}\]

换句话说,计算值 \(\varphi_{j}^{n+1}\) 在时刻 \(n+1\) 节点 \(j\) 是当前时刻解 \(n\) 的线性函数形式。我们假设 \(\beta_m\) 唯一的决定了 \(\varphi_{j}^{n+1}\)。现在,既然上述方程代表了 \(\varphi_{j}^{n+1}\) 与 \(\varphi_{j}^{n}\) 之间线性关系,那么我们可以采用线性转换得到下面等价形式,

\[\begin{equation}
\varphi_{j}^{n+1} = \sum^{M}_{m = 1}\gamma_m \varphi_{j+m}^{n}
\end{equation}\]

定理1. 单调保持性(Monotonicity preserving)

若格式(2)是单调保持的,那么

\[\begin{equation}
\gamma_m \ge 0
\end{equation}\]

证明:Godunov (1959)

case 1:充分性

假设 \(\varphi_{j}^{n}\) 是随 \(j\) 单调递增的,那么,由于 $\varphi_{j}^{n} \le \varphi_{j+1}^{n} \le \cdots \le \varphi_{j+m}^{n} $,因此

\[\begin{equation}
\varphi_{j}^{n+1} - \varphi_{j-1}^{n+1} = \sum^{M}_{m = 1}\gamma_m (\varphi_{j+m}^{n} - \varphi_{j+m-1}^{n}) \ge 0
\end{equation}\]

即 $\varphi_{j}^{n+1} \le \varphi_{j+1}^{n+1} \le \cdots \le \varphi_{j+m}^{n+1} $,得证。

case 2:必要性

由矛盾证明必要性。

假设 \(\gamma_p < 0\),\(p\) 为某个节点,采用如下单调增加的序列 \(\varphi_{j}^{n}\)

\[\begin{equation}
\varphi_{j}^{n} = 0, \quad i < k; \quad \varphi_{j}^{n} = 1, \quad i \ge k.
\end{equation}\]

根据方程(2)可以得到

\[\begin{equation}
\varphi_{j}^{n+1} - \varphi_{j-1}^{n+1} = \sum^{M}_{m = 1}\gamma_m (\varphi_{j+m}^{n} - \varphi_{j+m-1}^{n}) = \left\{
\begin{array}{ll}
0, & [j+m \ne k] \cr
\gamma_m, & [j+m =k]
\end{array}
\right.
\end{equation}\]

现在令 \(j = k - p\), 那么

\[\begin{equation}
\varphi_{k-p}^{n+1} - \varphi_{k-p-1}^{n+1} = \gamma_p(\varphi_{k}^{n} - \varphi_{k-1}^{n}) < 0
\end{equation}\]

这与 \(\varphi_{j}^{n+1}\) 的单调性矛盾,得证。

定理2. Godunov’s Order Barrier Theorem

若使用单步,二阶精度求解对流方程

\[\begin{equation}
\frac{\partial \varphi}{\partial t} + c \frac{\partial \varphi}{\partial x} = 0, \quad t>0
\end{equation}\]

只有当

\[\begin{equation}
\sigma = |c|\frac{\Delta t}{\Delta x} \in \mathcal{N}
\end{equation}\]

时,格式才是单调保持的,

其中 \(\sigma\) 为柯朗数(Courant–Friedrichs–Lewy condition number)

证明:Godunov (1959)

假设初始解为

\[\begin{equation}
\varphi(0,x) = \big(\frac{x}{\Delta x} - \frac{1}{2} \big)^2 - \frac{1}{4}
\end{equation}\]

那么其精确解为

\[\begin{equation}
\varphi(t,x) = \big(\frac{x - ct}{\Delta x} - \frac{1}{2} \big)^2 - \frac{1}{4}
\end{equation}\]

假设格式至少有二阶精度,那么第0步与第1步精确解如下

\[\begin{equation}
\varphi_j^1 = \big(j - \sigma - \frac{1}{2} \big)^2 - \frac{1}{4}, \quad \varphi_j^0 = \big(j - \frac{1}{2} \big)^2 - \frac{1}{4}
\end{equation}\]

将方程(2)代入,得:

\[\begin{equation}
\big(j - \sigma - \frac{1}{2} \big)^2 - \frac{1}{4} = \sum_m^M \gamma_m \big[ \big(j+m - \frac{1}{2} \big)^2 - \frac{1}{4} \big]
\end{equation}\]

假设格式具有单调保持性质,那么根据定理1,\(\gamma_m \ge 0\)

因此

\[\begin{equation}
\big(j - \sigma - \frac{1}{2} \big)^2 - \frac{1}{4} \ge 0
\end{equation}\]

假设 \(\sigma>0\),并且 \(\sigma \notin \mathcal{N}\),那么存在 \(j\) 使得 \(j>\sigma>(j-1)\),这使得

\[\begin{equation}
\big(j - \sigma - \frac{1}{2} \big)^2 - \frac{1}{4} = (j- \sigma)(j - \sigma - 1) < 0
\end{equation}\]

这与方程(16)矛盾,因此得证。

这里 \(\sigma = |c|\frac{\Delta t}{\Delta x} \in \mathcal{N}\) 仅是用于理论证明,并无法将其当作实际计算时系数,CFL为整数情况在实际计算中并不实用。


这里,单调保持的格式即保证不出现新的极值

参考

Godunov's 定理的更多相关文章

  1. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  2. Mittag-Leffler定理,Weierstrass因子分解定理和插值定理

    Mittag-Leffler定理    设$D\subset\mathbb C$为区域,而$\{a_{n}\}$为$D$中互不相同且无极限点的点列,那么对于任意给定的一列自然数$\{k_{n}\}$, ...

  3. 【转】Polya定理

    转自:http://endlesscount.blog.163.com/blog/static/82119787201221324524202/ Polya定理 首先记Sn为有前n个正整数组成的集合, ...

  4. hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)

    题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3.                  ...

  5. poj1006Biorhythms(同余定理)

    转自:http://blog.csdn.net/dongfengkuayue/article/details/6461298 本文转自head for better博客,版权归其所有,代码系本人自己编 ...

  6. CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)

    Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...

  7. 大组合数:Lucas定理

    最近碰到一题,问你求mod (p1*p2*p3*……*pl) ,其中n和m数据范围是1~1e18 , l ≤10 , pi ≤ 1e5为不同的质数,并保证M=p1*p2*p3*……*pl ≤ 1e18 ...

  8. SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元

    [题目分析] Matrix-Tree定理+高斯消元 求矩阵行列式的值,就可以得到生成树的个数. 至于证明,可以去看Vflea King(炸树狂魔)的博客 [代码] #include <cmath ...

  9. 洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理

    题目描述 在本题中,格点是指横纵坐标皆为整数的点. 为了圈养他的牛,农夫约翰(Farmer John)建造了一个三角形的电网.他从原点(0,0)牵出一根通电的电线,连接格点(n,m)(0<=n& ...

随机推荐

  1. 微信小程序的登录流程

    一.背景 传统的web开发实现登陆功能,一般的做法是输入账号密码.或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行后续的交互,每当t ...

  2. ShardingJdbc基于Zookeeper实现分布式治理

    随着数据规模的不断膨胀,使用多节点集群的分布式方式逐渐成为趋势.在这种情况下,如何高效.自动化管理集群节点,实现不同节点的协同工作,配置一致性,状态一致性,高可用性,可观测性等,就成为一个重要的挑战. ...

  3. NOIP模拟83(多校16)

    前言 CSP之后第一次模拟赛,感觉考的一般. 不得不吐槽多校联测 OJ 上的评测机是真的慢... T1 树上的数 解题思路 感觉自己思维有些固化了,一看题目就感觉是线段树. 考完之后才想起来这玩意直接 ...

  4. Flutter的环境配置以及一些常见问题

    flutter & AndroidStudio flutter的下载与配置 flutter是Google推出的基于Dart语言开发的跨平台开源UI框架,能够支持安卓与iOS. flutter框 ...

  5. Noip模拟47 2021.8.25

    期望得分:55+24+53 实际得分:0+0+3 乐死 累加变量清零了吗? 打出更高的部分分暴力删了吗? 样例解释换行你看见了吗? T1 Prime 打出55分做法没删原来的暴力,结果就轻松挂55分 ...

  6. 上拉电阻大小对i2c总线的影响

    漏极开路上拉电阻取值为何不能很大或很小? 如果上拉电阻值过小,Vcc灌入端口的电流(Ic)将较大,这样会导致MOS管V2(三极管)不完全导通(Ib*β<Ic),有饱和状态变成放大状态,这样端口输 ...

  7. 算法:N-皇后问题

    一.八皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在8 × 8 的国际象棋棋盘上放置八个皇后(Queen),使得任何一个皇后都无法直接吃掉其他的皇后.为了达到此目的,任两个皇后都不能处于 ...

  8. 【JavaScript基础】Js的定时器(你想看的原理也在哟)

    [JavaScript基础]Js的定时器(你想看的原理也在哟) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 本章是经历 ...

  9. linux 启动过程以及如何将进程加入开机自启

    linux 启动流程 系统启动主要顺序就是: 1. 加载内核 2. 启动初始化进程 3. 确定运行级别 4. 加载开机启动程序 5. 用户登录 启动流程的具体细节可以看看Linux 的启动流程 第4步 ...

  10. 2万字|30张图带你领略glibc内存管理精髓(因为OOM导致了上千万损失)

    前言 大家好,我是雨乐. 5年前,在上家公司的时候,因为进程OOM造成了上千万的损失,当时用了一个月的时间来分析glibc源码,最终将问题彻底解决. 最近在逛知乎的时候,发现不少人有对malloc/f ...