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

计算机的错误计算(一百零四)

摘要  计算机的错误计算(二十七)引入了错数概念。本节给出更为严格的证明。

       本节主要讨论表达式计算结果中错误有效数字的数量,简称之为错数。因为0不含有有效数字,因此,除非特别说明,否则,本节假设所有表达式的值均不为0;同时,为了便于描述, 本节所有的数值均使用科学记数法来表示。假设 \tilde{x}=0.s_1s_2...\times10^m 为 x=0.t_1t_2...\times10^m 的一个近似值(不妨假设,它们均为正数。下同),其中 m 为它们的指数,$s_i$ 与 $t_i(i\geq1)$ 分别为它们的有效数字,t_1\neq0, s_1\neq0\,.  若

0.1^{j+1}\leq|\frac{\tilde{x}}{10^m}-\frac{x}{10^m}|<0.1^{j}\,\,\,(j\in\mathbb{N})\,, \quad\quad\quad\quad(1)

则称 {\tilde{x}} 具有 $j$ 位正确有效数字,或 \tilde{x} 与 $x$ 具有 $j$ 位相同有效数字。比如, 与 2 相比较,1.996与2.002均具有3位正确的有效数字;而对于0.12999来说,0.12999001与0.13000002分别是其包含7位与4位相同有效数字的近似值。另外,除非特别说明,否则,本节的运算均没有进位。

       设 x_0\in I\,,  其中 I 是 R 上的一个开区间,\tilde{x}_0\in I 是 x_0 的一个近似值,y=f(x) 在 I上可导,并且 f(x_0)\neq f(\tilde{x}_0)\,.
       设 x_0,\,\tilde{x}_0,\,f(x_0),\,f(\tilde{x}_0) 的值为

\left\{ \begin{array}{ll} x_0=0.t_1t_2...t_kt_{k+1}...\times10^{m_1}, & \\ \tilde{x}_0=0.t_1t_2...t_kt'_{k+1}...\times10^{m_1}, & \end{array} \right. \quad\quad \left\{ \begin{array}{ll} f(x_0)=0.s_1s_2...s_ls_{l+1}...\times10^{m_2}, & \\ f(\tilde{x}_0)=0.s_1s_2...s_ls'_{l+1}...\times10^{m_2}, & \end{array} \right.\quad\quad\quad(2)

其中 t_1\neq0,\, s_1\neq0, \,t_{k+1}\neq t'_{k+1},\, s_{l+1}\neq s'_{l+1}\,.
       定理1.  设

\alpha=|\tilde{x}_0-x_0|\times10^{k-m_1}=|0.t_{k+1}...-0.t'_{k+1}...|\,,\quad\quad\quad(3)

\beta=|f(\tilde{x}_0)-f(x_0)|\times10^{l-m_2}=|0.s_{l+1}...-0.s'_{l+1}...|\,. \quad\quad\quad(4)

若它们的小数点后连续0的个数分别为 n_1 与 n_2\,,  而

\gamma=\frac{|f(\tilde{x}_0)-f(x_0)|}{|\tilde{x}_0-x_0|}=0.d_1d_2...\times10^{m_0}\,\,(d_1\neq0)\,, \quad\quad\quad(5)

(k+n_1)=(l+n_2)+M\,.\quad\quad\quad(6)

其中

M=\big{(}(m_1-m_2)+m_0\big{)} -one\_or\_zero\,,\quad\quad\quad(7)

而 one\_or\_zero\in\{0,1\}\,.

        证明  首先, 由已知条件可得

10^{-n_1-1}\leq\alpha < 10^{-n_1}\,,\quad\quad\quad(8)

10^{-n_2-1}\leq\beta < 10^{-n_2}\,,\quad\quad\quad(9)

10^{m_0-1}\leq\gamma <10^{m_0}\,.\quad\quad\quad(10)

然后, 由(10)与(3)、(4)可知

10^{m_0-1}\leq\frac{\beta\times10^{m_2-l}}{\alpha\times10^{m_1-k}}< 10^{m_0}\,.\quad\quad\quad(11)

10^{m_0-1-(m_2-l)+(m_1-k)}\leq\frac{\beta}{\alpha}< 10^{m_0-(m_2-l)+(m_1-k)}\,.\quad\quad\quad(12)

再通过(8)与(9), 将 \frac{\beta}{\alpha} 放大和缩小:

\left\{ \begin{array}{ll} 10^{m_0-1-(m_2-l)+(m_1-k)}\leq \frac{\beta}{\alpha} < \frac{10^{-n_2}}{10^{-n_1-1}}=10^{-n_2+n_1+1}, & \\ 10^{-n_2-1+n_1}= \frac{10^{-n_2-1}}{10^{-n_1}}< \frac{\beta}{\alpha} < 10^{m_0-(m_2-l)+(m_1-k)}. & \end{array} \right.

这时,由两个不等式的各自左右两项可得

\left\{ \begin{array}{ll} {m_0-1-(m_2-l)+(m_1-k)}<{-n_2+n_1+1}, & \\ {-n_2-1+n_1}<{m_0-(m_2-l)+(m_1-k )} .& \end{array} \right.

\left\{ \begin{array}{ll} (l+n_2)+((m_1-m_2)+m_0)-2<{(k+n_1)}, & \\ (k+n_1)< (l+n_2)+((m_1-m_2)+m_0)+1.& \end{array} \right.

因此,可推得

(l+n_2)+((m_1-m_2)+m_0)-2\,\,\\< \,\,(k+n_1)\,\,\\<\,\, (l+n_2)+((m_1-m_2)+m_0)+1.

由于上述不等式中的每个符号均取整数,因此有

(l+n_2)+((m_1-m_2)+m_0)-1\,\,\\\leq\,\,(k+n_1)\,\,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad(13)\\\leq\,\, (l+n_2)+((m_1-m_2)+m_0).

从而定理得证。

       根据(1)中相同有效数字定义,显然,k+n_1 为 \tilde{x}_0 与 x_0 相同有效数字个数;而 l+n_2 为 f(\tilde{x}_0) 与 f(x_0) 相同有效数字个数。这样,上述 M 就是 f(\tilde{x}_0) 的错数. 因此, 我们有下面推论:

       推论  若 M>0\,,  则 f(x) 关于 (x_0,\,\tilde{x}_0) 的错数为下列二者之一:

m_1-m_2+m_0\,,\,\,\,m_1-m_2+m_0-1\,.

       上述推论说明, 若 m_1-m_2+m_0>0\,,  则对自变量的一点扰动,就可能导致对应函数值具有 m_1-m_2+m_0 或 m_1-m_2+m_0-1 位错误数字。

参考文献

[1] 赵世忠. 浮点运算错误计算原因. 中国科技论文在线. 2017.  https://www.paper.edu.cn/releasepaper/content/201707-86


http://www.kler.cn/a/319854.html

相关文章:

  • SpringMVC 实战指南:打造高效 Web 应用的秘籍
  • OpenCV基础:获取子矩阵的几种方式
  • 基于 Python 的深度学习的车俩特征分析系统,附源码
  • 从玩具到工业控制--51单片机的跨界传奇【3】
  • 将Docker运行中的容器保存为镜像并导出导入
  • 测试工程师的linux 命令学习(持续更新中)
  • 通过两个类计算一个长方形的周长和面积
  • MySql语言操作数据库---增删改查数据库,表,数据
  • 速盾:AI能为高防cdn带来什么?
  • 828华为云征文|华为云Flexus云服务器X实例Windows系统部署一键短视频生成AI工具moneyprinter
  • 专题八_链表_算法专题详细总结
  • 一带一路区块链赛项样题解析(中)
  • C++——求3*3矩阵对角元素之和。
  • 第164天:应急响应-挖矿脚本检测指南_威胁情报_样本定性_文件清除_入口修复
  • ubuntu系统插入u盘不识别
  • 从一个Vite Vue项目开始 - 整体设计
  • 软件设计模式——工厂模式
  • 招行科技笔试——合并区间,移动零
  • 加入AI新引擎,华为数据中台全面智能化升级
  • Java 发布jar包到maven中央仓库(2024年9月保姆级教程)
  • PPTP、L2TP、SSTP协议和HTTP、SOCKS5代理:全面解析与对比
  • Kafka-Manager安装及操作
  • Linux文件IO-基础知识了解及文件描述符
  • 模拟自然的本质:与IBM量子计算研究的问答
  • 函数组件、Hooks和类组件区别
  • 使用php生成图片