热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数值格式误差以及收敛精度估计方法

目录数值格式误差以及收敛精度估计方法1.简介2.收敛精度(阶)介绍3.收敛精度计算4.格式误差计算4.1.范数误差定

目录

  • 数值格式误差以及收敛精度估计方法
    • 1.简介
    • 2.收敛精度 (阶) 介绍
    • 3.收敛精度计算
    • 4.格式误差计算
      • 4.1.范数误差定义
      • 4.2.选取正确的范数误差函数
      • 4.3.范数误差计算表达式
    • Reference

数值格式误差以及收敛精度估计方法

1.简介

随着高精度格式越来越多应用到CFD中,如何判断数值格式的收敛精度 (Converge Rate) 也逐渐成为一个重要问题。

2.收敛精度 (阶) 介绍

当我们考虑采用数值方法计算一个精确解\(u\)时,数值解\(\tilde{u}_h\)与精确解近似程度一般和一个参数\(h\)相关,这个近似程度可以表示为

\[\begin{equation} \left| \tilde{u}_h - u \right| \le Ch^p \end{equation}\]

其中\(C\)是与\(h\)无关的常数。在式(1)中的幂次\(p\)就是我们常说的数值格式收敛精度(阶数)。误差\(\left| \tilde{u}_h - u \right|\)也可用\(h\)表示为

\[\begin{equation} \tilde{u}_h - u = Ch^p + O(h^{p+1}) \end{equation}\]

在判断CFD数值模型结果精度时,需要比较的不再仅仅是两个标量,而是数值解\(\tilde{u}_h(x)\)与精确解\(u(x)\)两个函数之间插值,此时就需要引入泛函中范数的概念。如何计算误差函数对应的范数将在第四节讨论。一般而言,若数值格式具有\(p\)阶空间与\(q\)阶时间精度,那么残差项应该满足

\[\begin{equation} R(\Delta x, \Delta t) = E\left( \Delta x^p, \Delta t^q \right) + O(\Delta x^{p+1}, \Delta t^{q+1}) \end{equation}\]

其中\(E\)为线性方程,而\(p\)\(q\)中最小值\({\mathrm{min}(p, q)}\)决定了格式收敛阶大小。

3.收敛精度计算

通常而言,在计算NS方程时,首先会把方程在空间内进行离散,得到常微分方程(ODE)

\[\begin{equation} \frac{\partial u}{\partial t} = L(u) \end{equation}\]

而求解只包含时间的常微分方程时,通常可以采用具有更高的精度格式\(q>p\)来减小误差(Runge-Kutta,AB)。因此,数值格式的精度主要受空间离散格式的限制。

为了求出空间离散格式收敛阶\(p\),可以根据方程(2)采用网格逐次加密方法。当我们采用不同尺寸的网格计算,可以得到误差函数随网格尺寸\(h\)的变化关系,如分别采用\((\Delta x, \Delta t), \frac{1}{2}(\Delta x, \Delta t), \frac{1}{4}(\Delta x, \Delta t)\)的步长进行计算,得到\(R(\Delta x), R(\frac{1}{2}\Delta x), R(\frac{1}{4} \Delta x)\),由于

\[\begin{equation} R(\Delta x) = E(\Delta x) + O(\Delta x^{p+1}) \approx C \Delta x^p \end{equation}\]

那么

\[\begin{equation} \frac{R( \Delta x )}{R( \frac{1}{2}\Delta x )} = \frac{C\Delta x^p}{ C \left( \frac{\Delta x}{2} \right)^p } \end{equation}\]

因此收敛精度\(p\)可以采用下式进行估计

\[p = \frac{log \left( { R( \Delta x )}/{R( \frac{1}{2}\Delta x ) }\right) }{log2}\]

4.格式误差计算

4.1.范数误差定义

首先介绍范数概念。范数是表示是泛函空间内两个元素距离的函数,在泛函空间内每个函数\(u(x)\)都是一个元素,而\(L_1\)\(L_2\)\(L_{\infty}\)等范数表示就是两个元素之间距离。

\(L_1\)范数通常称为最小绝对偏差LAD(least absolute deviations)或最小绝对误差LAE(least absolute errors)。它统计目标函数\(y(x)\)与期望函数\(f(x)\)绝对误差之和

\[\begin{equation} S = \int \left|y(x_i) - f(x_i) \right| \rm{dx} \end{equation}\]

\(L_2\)范数也被称为最小二乘。它通常统计目标函数与期望函数平方误差之和1

\[\begin{equation} S = \int \left|y(x_i) - f(x_i) \right|^2 \rm{dx} \end{equation}\]

\(L_{\infty}\)范数用来统计目标函数与期望函数之间最大误差

\[\begin{equation} S = \rm{max} \left|y(x_i) - f(x_i) \right| \end{equation}\]

4.2.选取正确的范数误差函数

想要回答什么时候选取哪个范数误差进行估计十分复杂,在CFD计算中,需要根据算例以及各个范数性质选取不同的误差范数。

在CFD计算中,选取误差范数需要考虑特性包括:2

  1. 鲁棒性3
    L1-范数误差统计的数据包含异常值时,可以将数据中的异常值安全而有效地忽略。所以L1-范数适合评价具有只有极少特别大误差出现的间断解算例;
    而L2-范数会将误差平方,总误差会增加很多,所以L2误差对于异常值更加敏感。因此L2-范数常用来评价几乎不存在特别大误差的连续解算例。
  2. 稳定性
    L1-范数具有不稳定性,精确值一个较小的水平移动会导致回归线产生特别大的改变。因此若算例没有解析解,需要采用数值方法估计收敛精度时,采用L2-范数更合适。

Wolfgang Bangerth.
Professor of mathematics at Texas A&M University. Research focus is on numerical methods for partial differential equations, finite element software, the deal.II software library.

衡量偏微分方程求解误差时候,自然地选择是解所在的空间范数,因为范数作用就是衡量空间内两元素之间距离。举例来说,对于椭圆偏微分方程,方程解所在空间是\(H^1\),所以使用\(H^1\)范数来估计误差就是很合适的。这样选取的意义在于,以上面例子来说,真实解不在\(W^{1,\infty}\)空间内,因此计算梯度的最大误差就是没有意义的,因为有可能存在真实解梯度不是有限值情况。换句话说,假如真实解在空间\(H^1\)中,那么用\(W^{1,\infty}\)范数来估计误差就是没有意义的。
另一方面,我们总是选择解空间\(Y\)的子空间\(Z \supset Y\)进行误差衡量,这里子空间指的就是L2。对于有些情况来说,这是因为其物理意义决定的,L2范数在有些情况下具有一定的物理意义:对电磁场的积分\(\int E(x)^2\)可以表示电磁场包含的能量;同样的,对波动方程积分可以表示其储存的势能大小。其他情况使用L2范数进行误差估计只是因为它方便。在有限元方法中,L2范数可以通过\(U^TMU\)方便的计算,其中\(M\)为质量矩阵。
例如在非恒定热传导方程里,计算L2范数误差就是错误的,因为其没有任何物理依据,总能量及总物质量所在空间都是L1空间,在这个例子里,计算L2范数除了方便以外并没有其他含义。4

4.3.范数误差计算表达式

\(L_2\)空间范数为例,其原始表达式为

\[\begin{equation} \|f(x) \|_2= \frac{1}{A_{\Omega}} \sqrt{ \int_{\Omega}|f(x)|^2 \rm{dx} } \end{equation}\]

当我们使用FEM或DGM方法来计算\(L_2\)计算到的结果\(u_h\),是原始函数\(u(x)\)的近似表达形式

\[\begin{equation} u_h = \sum_i u_i \varphi_i(x) \end{equation}\]

其中\(\varphi_i(x)\)是解空间内的基函数。因此,计算结果\(L_2\)误差表达式为

\[\begin{equation} \| \Delta u \|_2 = \frac{1}{A_{\Omega}} \sqrt{ \int_{\Omega} \left|u(x) - u_h \right|^2 \rm{dx} } = \frac{1}{A_{\Omega}} \sqrt{ \int_{\Omega} \left|u(x) - \sum_i u_i \varphi_i(x) \right|^2 \rm{dx} } \end{equation}\]

实际上,当基函数为Lagrange函数时,更简单的方法是令精确解也采用基函数进行表示,然后代入方程中进行计算

\[\begin{equation} \| \Delta u \|_2 = \frac{1}{A_{\Omega}} \sqrt{ \int_{\Omega} \left|u(x) - u_h \right|^2 \rm{dx} } = \frac{1}{A_{\Omega}} \sqrt{ \int_{\Omega} \left( \sum_i \left|u(x_i) - u_i \right|^2 \varphi_i(x) \right) \rm{dx} } \end{equation}\]

Reference


  1. Correct way of computing norm L2 for a finite difference scheme↩

  2. Differences between the L1-norm and the L2-norm (Least Absolute Deviations and Least Squares)↩

  3. L1 norm and L2 norm↩

  4. What norm to choose when?↩


推荐阅读
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 本文探讨了如何利用动态规划解决滑雪问题,通过分析每个节点的选择(上、下、左、右),寻找最长的滑雪路径。同时,文章还介绍了备忘录法的具体实现。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
author-avatar
Jason剑豪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有