当前位置: 首页 > news >正文

CH1-2 误差分析

一、误差的概念

用计算机进行实际问题的数值计算时,往往求得的是问题的近似解,都存在误差

模型误差:在建立数学模型过程中,要将复杂的现象抽象归结为数学模型,往往要忽略一些次要因素的影响,而对问题作一些简化,因此和实际问题有一定的区别。

观测误差:在建模和具体运算过程中所用的数据往往是通过观察和测量得到的,由于精度的限制,这些数据一般是近似的。

截断误差:利用数值方法求得近似解时,数值方法本身的误差。

比如用泰勒展开时,只保留部分项

舍入误差:计算机字长有限,只能对有限位进行运算,超过的位数按一定规则舍入(量化中的舍入误差,在整数域上更明显)

\pi = 3.14159265...

\pi\approx3.1415927

计算方法不研究模型误差和观测误差,主要研究截断误差舍入误差在计算过程中的传播对结果的影响,以求提高计算的精度。

二、误差的引入

为什么要分析误差?

例如对于:

I_n= \frac{1}{e}\int_{0}^{1} x^n e^x dx, n=0,1,2,...

上面的公式有递推公式:

I_n = 1-nI_{n-1}

因此可以先求出 I^0 的近似解,利用递推公式计算其它项:

发现上面的式子的值越来越大:

在 [0,1] 区间内,有 e^0\le e^x \le e^1,则

\frac{1}{e} \int_{0}^{1} x^n e^0 dx < I_n < \frac{1}{e}\int_{0}^{1} x^n e^1 dx

得: \frac{1}{e(n+1)}<I_n <\frac{1}{n+1} ,因此得出 n 越大,I_n 的值就越接近 0

可是上面的计算结果与之矛盾,假设误差为 |E_n|,则

|E_n|=|I_n-I_n^*|=(1-nI_{n-1})-(1-nI^*_{n-1})=n|E_{n-1}|=n!|E_0|

由此可见初始的微小扰动 |E_0| < 0.5 \times 10^{-8} 会导致误差的迅速积累。

上面这种误差迅速积累的算法就称为不稳定的算法(仅限数值分析的语境中)

而相反的,能够有效控制误差的算法,称为稳定的算法(仅限数值分析的语境中)。

三、误差的度量

绝对误差:

设 x 为准确值,x^* 为近似值,则 e(x^*)=x^*-x

e 为近似值 x^* 的绝对误差,简称为误差,记为 e^*

【绝对】误差限:

如果知道 e(x^*) 绝对值的某个上界,即

|e(x^*)| \le \epsilon(x^*)

称 \epsilon(x^*) 为绝对误差限,记为 \epsilon^*

下面两个概念要用到上面这两个概念


相对误差:

e_r(x^*)=\frac{e(x^*)}{x}=\frac{x^*-x}{x} 

记为 e_r^*e_r^* = \frac{e^*}{x}

相对误差就是绝对误差 e^* 除以一个 x,记为 e^*_r 


相对误差限:

如果知道相对误差的某个上界,即

|e_r(x^*)|=|\frac{x^*-x}{x}|=\frac{\epsilon^*}{|x|}\le\epsilon_r(x^*)

称 \epsilon_r(x^*) 为近似值 x^* 的相对误差限,记为 \epsilon_r^*

相对误差限就是绝对误差限 \epsilon^* 除以一个 |x|,记为 \epsilon_r^*


由于真实值 x 在某些情况下无法知道,因此计算相对误差和相对误差限时往往替换为 x^*,即:

e_r = \frac{e^*}{x^*}, \epsilon_r=\frac{\epsilon^*}{|x^*|}

这在 e_r = \frac{e^*}{x^*} 较小时成立,如下公式,分母接近 1,分子为 e_r = \frac{e^*}{x^*} 的平方项,式子的值很小。


例题:计算相对误差限。

x^*=15, \epsilon(x) = 2; y^*=1000, \epsilon(y^*)=5

解: 

\epsilon_r^* = \frac{\epsilon^*}{|x^*|}

\epsilon_r^*(x^*) = \frac{\epsilon(x^*)}{|x^*|} = \frac{2}{15}=13.33\%; 

\epsilon_r^*(y^*) = \frac{\epsilon^*(y^*)}{|y^*|} = \frac{5}{1000} = 0.5\% 

 


http://www.mrgr.cn/news/30176.html

相关文章:

  • Spring Boot 的生命周期
  • SpringBoot如何集成WebSocket
  • kali基础命令2完结版---清风
  • Linux C/C++ Socket 编程
  • torch.nn.**和torch.nn.functional.**的区别
  • 分享三个python爬虫案例
  • 7iDU AMP田岛绣花机驱动器维修0J2100400022
  • 【git】git中的那些迷惑的术语以及概念详解
  • 代码随想录算法训练营第3天|链表理论基础、203. 移除链表元素、 707.设计链表、 206.反转链表
  • Ubuntu 编译安装 openresty
  • Java 版本兼容性问题:从 `ifPresentOrElse` 到 `Optional` 的替代方案
  • 无人机之AI跟踪篇
  • 【机器学习(八)】分类和回归任务-因子分解机(Factorization Machines,FM)-Sentosa_DSML社区版
  • 海报制作模板免费下载哪个?建议试试这6个
  • uniapp小程序使用canvas画圆
  • 关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例
  • Vue3.0组合式API:使用defineEmits()实现子组件向父组件传递数据
  • 【Vue】VueRouter路由
  • Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互
  • 学习Stable Diffusion使用 Roop插件轻松换脸(附插件)
  • 数据结构(十四)——HashMap与HashSet(OJ题)
  • G - Merchant Takahashi
  • 自动泊车系统中的YOLOv8 pose关键点车位线检测
  • 如何预防云服务器被勒索攻击
  • Unity教程(十五)敌人战斗状态的实现
  • vulnhub(10):W34KN3SS(很小的信息都不能放过)