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. QQ消算轰炸,我好无聊真的

    from pynput.keyboard import Key,Controller import time from random import choice time.sleep(5) # 创建键 ...

  2. pagelayout在py中的引用不支持size_hint和pos_hint

    from kivy.uix.pagelayout import PageLayout from kivy.uix.button import Button from kivy.app import A ...

  3. [敏捷软工团队博客]Beta阶段事后分析

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决的问题是:现在的软工课程的作业分布在博客园.GitHub上,没有一个集成多种功能的一体化 ...

  4. Alpha阶段初始任务分配

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-计划-Alpha阶段说明书 一.Alpha阶段总体规划 进行服务器相关部署 进行开发相关技术学习 ...

  5. Noip模拟59 2021.9.22

    新机房首模拟变倒数 T1 柱状图 关于每一个点可以做出两条斜率分别为$1,-1$的直线, 然后题意转化为移动最少的步数使得所有点都在某一个点的两条直线上 二分出直线的高度,判断条件是尽量让这条直线上部 ...

  6. hdu 3047 Zjnu Stadium(并查集)

    题意: 300个座位构成一个圈. 有N个人要入座. 共有M个说明 :A B X ,代表B坐在A顺时针方向第X个座位上.如果这个说明和之前的起冲突,则它是无效的. 问总共有多少个无效的. 思路: 并查集 ...

  7. Win powershell执行策略配置

    参考连接:https://blog.csdn.net/jeffxu_lib/article/details/84710386 参考连接:http://www.cragsman.org/index.ph ...

  8. Laravel 中输出 SQL 语句的到 log 日志

    在 AppServiceProvider.php 中的 boot 方法中添加如下代码 即可 public function boot() { //数据库监听 DB::listen(function ( ...

  9. axios 基于拦截器的取消(重复)请求

    axios 基于拦截器的取消(重复)请求 // 添加请求拦截器 axios.interceptors.request.use((config) => { // 准备发请求之前, 取消未完成的请求 ...

  10. rabbitMQ报错:Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method:

    1.输入的机器的 IP:15672进入Raabitmq的登陆管理界面 点击admin,进去点击set permission ok, 在运行应该就不会包这个错了