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. 注解,@Qualifier+@Autowired 和 @Resource

    摘要: 项目中,对于AOP的使用,就是通过用注解来注入的. 更改之前的注解,是使用:@Qualifier+@Autowired   但是,通过这样注解,在项目启动阶段,需要自动扫描的过程是非常缓慢的, ...

  2. 微服务(三) Eureka注册中心和Ribbon负载均衡

    1. Eureka注册中心 1.1 Eureka的结构和作用 在上一篇文章中 微服务(二)服务拆分及远程调用 order-service在发起远程调用的时候,该如何得知user-service实例的i ...

  3. spring cloud config 结合 spring cloud bus实现配置自定的刷新

    在线上环境中,有时候我们希望系统中的某些配置参数在修改后,可以立即生效而不用重新启动服务.由上一节我们知道,我们可以把配置文件统一放到配置服务中进行管理,这一节我们在配置中心中整合spring clo ...

  4. CF375D Tree and Queries 题解

    感觉CF的题目名都好朴素的样子 你谷链接 首先这题显然是个dsu on tree 但是我不会. 其次这题显然是个莫队.这我会啊! 然后会发现好像不是很对劲.因为每次询问都有一个k,貌似和传统的莫队数颜 ...

  5. Spring Boot 2.5.0 重新设计的spring.sql.init 配置有何用?

    前几天Spring Boot 2.5.0发布了,其中提到了关于Datasource初始化机制的调整,有读者私信想了解这方面做了什么调整.那么今天就要详细说说这个重新设计的配置内容,并结合实际情况说说我 ...

  6. PCIE学习笔记--PCIe错误源详解(二)

    转载地址:http://blog.chinaaet.com/justlxy/p/5100057799 这篇文章主要介绍事务(Transaction)错误.链路流量控制(Link Flow Contro ...

  7. 无缓存交换 牛客网 程序员面试金典 C++ Python

    无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...

  8. (三)FastDFS 高可用集群架构学习---Client 接口开发

    一.Python3 与 FastDFS 交互 1.安装 py3fdfs模块 # pip3 install py3Fdfs 2.测试使用 py3Fdfs 与 Fastdfs 集群交互(上传文件) fro ...

  9. Allure 生成测试报表

    Allure官方文档参考地址:https://docs.qameta.io/allure/#_testng 1.在maven中添加依赖并进行相应的配置: <!-- 实现版本控制 --> & ...

  10. 常见yaml写法-deployment

    apiVersion: extensions/v1beta1 #接口版本 kind: Deployment #接口类型 metadata: name: cango-demo #Deployment名称 ...