数值计算复习笔记之(一)误差定义
误差
准确值与近似值的差距就是误差。
误差通常来自于
- 截断误差:由简化问题引起的误差,如求收敛级数之和的近似值 c o s ( x ) = 1 − x 2 2 ! + x 4 4 ! − x 6 6 ! + ⋯ + ( − 1 ) n x 2 n ( 2 n ) ! + ⋯ ≈ 1 − x 2 2 ! cos(x)=1-\frac{x^2}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}+\cdots+\frac{(-1)^nx^{2n}}{(2n)!}+\cdots\approx1-\frac{x^2}{2!} cos(x)=1−2!x2+4!x4−6!x6+⋯+(2n)!(−1)nx2n+⋯≈1−2!x2。
- 舍入误差:由采取舍入操作引起的误差,通常因为计算机等精度限制。
- 模型误差及观测误差:由数学模型、观测引起的误差。
基本上只研究舍入误差和截断误差。
绝对误差与相对误差
设近似值 x ∗ x^* x∗近似于准确值 x x x,那么 x ∗ x^* x∗的绝对误差(即误差)表示为:
e ( x ∗ ) = x − x ∗ e(x^*)=x-x^* e(x∗)=x−x∗
由于难以求出准确值,只能估算出误差绝对值的某个上界 ϵ \epsilon ϵ,这些上界称为绝对误差限(即误差限):
∣ e ( x ∗ ) ∣ ≤ ϵ |e(x^*)|\le\epsilon ∣e(x∗)∣≤ϵ
- 注意误差有正负之分,而误差限总是正值
- 误差限不唯一
近似值 x ∗ x^* x∗的误差与准确值 x x x之比称为相对误差 e r ( x ∗ ) e_r(x^*) er(x∗),由于难以求出准确值,一般取相对误差为:
e r ( x ∗ ) = e ( x ∗ ) x ∗ e_r(x^*)=\frac{e(x^*)}{x^*} er(x∗)=x∗e(x∗)
相似的,估算相对误差的某个上界 ϵ r \epsilon_r ϵr,这些上界称为相对误差限:
∣ e r ( x ∗ ) ∣ ≤ ϵ r |e_r(x^*)|\le\epsilon_r ∣er(x∗)∣≤ϵr
有效数字
如果近似值 x ∗ x^* x∗的误差限是 0.5 × 1 0 − n 0.5×10^{-n} 0.5×10−n ,则称 x ∗ x^* x∗准确到小数点后的第 n n n位,从第一个非零数字到这一位的所有数字均称为有效数字。
如 x = 0.003400 ± 0.5 × 1 0 − 5 x=0.003400\pm 0.5×10^{-5} x=0.003400±0.5×10−5 表示近似值 x ∗ = 0.003400 x^*=0.003400 x∗=0.003400 精确到小数点后第5位,有3位有效数字。
有效数字与相对误差限关系
若 x ∗ x^* x∗有 n n n位有效数字, a 1 a_1 a1为首位有效数字,则 x ∗ x^* x∗的相对误差限为:
1 2 a 1 × 1 0 − n + 1 \frac{1}{2a_1}×10^{-n+1} 2a11×10−n+1
反之,若 x ∗ x^* x∗的相对误差限 ϵ r \epsilon_r ϵr满足:
ϵ r ≤ 1 2 a 1 × 1 0 − n + 1 \epsilon_r\le\frac{1}{2a_1}×10^{-n+1} ϵr≤2a11×10−n+1
则 x ∗ x^* x∗至少有 n n n位有效数字。
误差基本运算
记 y = f ( x 1 , x 2 , ⋯ , x n ) y=f(x_1,x_2,\cdots,x_n) y=f(x1,x2,⋯,xn) ,近似解记为 y ∗ = f ( x 1 ∗ , x 2 ∗ , ⋯ , x n ∗ ) y^*=f(x_1^*,x_2^*,\cdots,x_n^*) y∗=f(x1∗,x2∗,⋯,xn∗) ,假定 f f f在点 ( x 1 ∗ , x 2 ∗ , ⋯ , x n ∗ ) (x_1^*,x_2^*,\cdots,x_n^*) (x1∗,x2∗,⋯,xn∗)可微,解的误差为:
e ( y ∗ ) = y − y ∗ ≈ d y ∗ = ∑ i = 1 n ∂ y ∗ ∂ x i ⋅ e ( x i ∗ ) \begin{aligned} e(y^*)=y-y^* &\approx dy^* \\ &= \sum_{i=1}^{n} \frac{\partial y^*}{\partial x_i}·e(x_i^*) \end{aligned} e(y∗)=y−y∗≈dy∗=i=1∑n∂xi∂y∗⋅e(xi∗)
由 Δ y = A Δ x + o ( Δ x ) \Delta y = A\Delta x + o(\Delta x) Δy=AΔx+o(Δx) ,这里的 A A A就是偏导 ∂ y ∗ ∂ x \frac{\partial y^*}{\partial x} ∂x∂y∗ , Δ x \Delta x Δx就是 e ( x ∗ ) e(x^*) e(x∗), d y dy dy即 A Δ x A\Delta x AΔx 。
微分学中,当自变量改变量 Δ x \Delta x Δx(这里可以看做是误差)很小时,函数的微分 d y = A Δ x dy=A\Delta x dy=AΔx 作为函数该变量的主要线性部分可以近似函数的改变量 Δ y \Delta y Δy,故利用微分运算公式可导出误差运算公式。
导出误差基本运算公式:
{ e ( x 1 ± x 2 ) = e ( x 1 ) ± e ( x 2 ) e ( x 1 x 2 ) ≈ x 2 e ( x 1 ) + x 1 e ( x 2 ) e ( x 1 x 2 ) ≈ 1 x 2 e ( x 1 ) − x 1 x 2 2 e ( x 2 ) \left\{ \begin{aligned} e(x_1 \pm x_2)&=e(x_1) \pm e(x_2) \\ e(x_1x_2)&\approx x_2e(x_1)+x_1e(x_2)\\ e(\frac{x_1}{x_2})&\approx \frac{1}{x_2}e(x_1)-\frac{x_1}{x_2^2} e(x_2)\\ \end{aligned} \right. ⎩⎪⎪⎪⎨⎪⎪⎪⎧e(x1±x2)e(x1x2)e(x2x1)=e(x1)±e(x2)≈x2e(x1)+x1e(x2)≈x21e(x1)−x22x1e(x2)
解的相对误差为:
e ( y ∗ ) = e ( y ∗ ) y ∗ ≈ d y ∗ y ∗ = ∑ i = 1 n ∂ y ∗ ∂ x i ⋅ e ( x i ∗ ) y ∗ \begin{aligned} e(y^*)=\frac{e(y^*)}{y^*} &\approx \frac{dy^*}{y^*} \\ &= \sum_{i=1}^{n} \frac{\partial y^*}{\partial x_i}·\frac{ e(x_i^*) }{y^*} \end{aligned} e(y∗)=y∗e(y∗)≈y∗dy∗=i=1∑n∂xi∂y∗⋅y∗e(xi∗)
导出相对误差基本运算公式:
{ e r ( x 1 ± x 2 ) = e ( x 1 ) ± e ( x 2 ) x 1 ± x 2 e r ( x 1 x 2 ) ≈ e ( x 1 ) x 1 + e ( x 2 ) x 2 = e r ( x 1 ) + e r ( x 2 ) e ( x 1 x 2 ) ≈ e ( x 1 ) x 1 − e ( x 2 ) x 2 = e r ( x 1 ) − e r ( x 2 ) \left\{ \begin{aligned} e_r(x_1 \pm x_2)&= \frac{ e(x_1) \pm e(x_2) }{x_1 \pm x_2}\\ e_r(x_1x_2)&\approx \frac{ e(x_1)}{x_1}+\frac{ e(x_2)}{x_2}=e_r(x_1)+e_r(x_2)\\ e(\frac{x_1}{x_2})&\approx \frac{e(x_1)}{x_1}-\frac{e(x_2)}{x_2}=e_r(x_1)-e_r(x_2)\\ \end{aligned} \right. ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧er(x1±x2)er(x1x2)e(x2x1)=x1±x2e(x1)±e(x2)≈x1e(x1)+x2e(x2)=er(x1)+er(x2)≈x1e(x1)−x2e(x2)=er(x1)−er(x2)
注意分辨公式里的误差 e e e 和相对误差 e r e_r er
相对误差公式即在上述误差公式的基础上除以 y ∗ y^* y∗ ,再把 e e e 转化为 e r e_r er
例1:假设运算中数据都精确到两位小数,试求 x ∗ = a ⋅ b − c x^*=a·b-c x∗=a⋅b−c的误差限和相对误差限。
e ( x ∗ ) = a ∗ ⋅ e ( b ∗ ) + b ∗ ⋅ e ( a ∗ ) − e ( c ∗ ) e(x^*)=a^*·e(b^*)+b^*·e(a^*)-e(c^*) e(x∗)=a∗⋅e(b∗)+b∗⋅e(a∗)−e(c∗)
由于数据精确到两位小数,故 e ( a ∗ ) , e ( b ∗ ) , e ( c ∗ ) ≤ 0.5 × 1 0 − 2 e(a^*),e(b^*),e(c^*) \le 0.5×10^{-2} e(a∗),e(b∗),e(c∗)≤0.5×10−2 ,则有:
e ( x ∗ ) ≤ ( 0.5 × 1 0 − 2 ) a ∗ + ( 0.5 × 1 0 − 2 ) b ∗ − ( 0.5 × 1 0 − 2 ) = ( a ∗ + b ∗ − 1 ) ⋅ ( 0.5 × 1 0 − 2 ) \begin{aligned} e(x^*) & \le (0.5×10^{-2})a^*+(0.5×10^{-2})b^*-(0.5×10^{-2}) \\ &=(a^*+b^*-1)·(0.5×10^{-2}) \end{aligned} e(x∗)≤(0.5×10−2)a∗+(0.5×10−2)b∗−(0.5×10−2)=(a∗+b∗−1)⋅(0.5×10−2)
数值计算应注意的问题
- 避免两个相近的数相减
e r ( x ∗ − y ∗ ) = e ( x ∗ − y ∗ ) x ∗ − y ∗ e_r(x^*-y^*)=\frac{e(x^*-y^*)}{x^*-y^*} er(x∗−y∗)=x∗−y∗e(x∗−y∗)
相近的 x x x与 y y y会导致相对误差增大,相对误差限增大,从而使得结果的有效数字减少。 - 避免大数吃小数
由于计算机小数位数精度限制,大数减去小数经常会未变化,此时结果不准确。 - 避免除数的绝对值远小于被除数的绝对值
e ( x y ) ≈ 1 y e ( x ) − x y 2 e ( y ) e(\frac{x}{y})\approx \frac{1}{y}e(x)-\frac{x}{y^2} e(y) e(yx)≈y1e(x)−y2xe(y)
当 y ≪ x y\ll x y≪x时,后项导致舍入误差增大 - 要简化计算,减少计算次数
计算量大小会影响误差的累积。
例2(算法稳定性问题):考虑递推式算法 I n = 1 n − 5 I n − 1 I_n=\frac{1}{n}-5I_{n-1} In=n1−5In−1 ,假设 I 0 I_0 I0 有误差 e 0 e_0 e0 ,计算中没有舍入误差情况下,求 e n e_n en 。
e n = I n − I n ∗ = − 5 I n − 1 + 5 I n − 1 ∗ = − 5 ( I n − 1 − I n − 1 ∗ ) = − 5 e n − 1 = ( − 5 ) n e 0 \begin{aligned} e_n = I_n - I_n^* &= -5I_{n-1}+5I_{n-1}^* \\&= -5(I_{n-1}-I_{n-1}^*)\\&=-5e_{n-1}\\&= (-5)^ne_0 \end{aligned} en=In−In∗=−5In−1+5In−1∗=−5(In−1−In−1∗)=−5en−1=(−5)ne0
每计算一次,误差便会扩大到5倍。由于计算过程中舍入误差增长,该算法不具有数值稳定性。相反,舍入误差不增长的算法具有数值稳定性。
数值计算复习笔记之(一)误差定义相关推荐
- 2018.8.14-C++复习笔记总
2018.8.14-C++复习笔记总 // CPPTEST.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iost ...
- Opencv复习笔记
Opencv复习笔记 整理自:https://blog.csdn.net/u013162035/article/details/79645331 0.索引: [1]图像混合 [2]图像通道的分离和合并 ...
- 哈工大机器学习复习笔记(四)
本篇文章是在参考西瓜书.PPT课件.网络上相关博客等资料的基础上整理出的机器学习复习笔记,希望能给大家的机器学习复习提供帮助.这篇笔记只是复习的一个参考,大家一定要结合书本.PPT来进行复习,有些公式 ...
- 【山东大学】web数据管理——复习笔记
写在前面 若有图片加载失败,请科学上网 . 本文为对软件学院连老师的PPT课件总结所得的复习笔记,仅供参考.不保证对考点的全覆盖,以PPT为主. 对往年考过的题相关知识点前面都标注了"考过& ...
- Python复习笔记——基础知识
Python复习笔记-基础知识 文章目录 Python复习笔记-基础知识 Python变量 基于值的内存管理方式 赋值语句的执行过程 Python定义变量名的规范 运算符和表达式 加+ 乘* 除/ % ...
- 传感与检测技术(机电)_简要问答题_复习笔记
声明:本文仅个人复习笔记,不作为任何正式场景的问答参考.版权所有,禁止复制到百度文库等其他平台. 虚拟仪器技术及应用LabView案例 课后作业 用Labview画一个三维的空心管(水管) 目 ...
- 数据结构期末复习笔记(NEU版)
数据结构期末复习笔记 绪论 数据结构的概念 数据结构的分类 数据结构研究的内容 算法的重要特性 算法的设计要求 题目汇总 线性表 栈和队列 栈 队列 题目 数组与广义表 树 二叉树 二叉树的遍历 线索 ...
- 哈工大机器学习复习笔记(一)
本篇文章是在参考西瓜书.PPT课件.网络上相关博客等资料的基础上整理出的机器学习复习笔记,希望能给大家的机器学习复习提供帮助.这篇笔记只是复习的一个参考,大家一定要结合书本.PPT来进行复习,有些公式 ...
- matlab arr3(5 end),matlab复习笔记.doc
matlab复习笔记.doc 如果一个语句在一行内书写太长了,可能要另起一行接着写,在这种情况下我们需要在第一行末打上半个省略号(),再开始第二行的书写.历史命令窗口(THEHISTORYCOMMAN ...
最新文章
- tnsping通oracle连不上,写正确了tnsnames文件却tnsping无法ping通
- 个人博客满血复活,求测试~~~
- html闪烁字体设置,HTML最简单的文字闪烁代码
- Java黑皮书课后题第8章:**8.37(猜测首府)编写一个程序,重复提示用户输入一个州的首府。当接收到用户输入后,程序报告答案是否正确。假设50个州以及它们的首府保存在一个二维数组中,提示用户回答所
- Just for fun——go实现一下观察者模式
- cocos2dx游戏--欢欢英雄传说--添加攻击按钮
- 要做好性能测试,该掌握些什么?
- 优雅的读懂支持向量机 SVM 算法
- 语义分割概念及应用介绍
- 解压zip,解决中文乱码
- 等保测评--网络安全等级保护实施指南
- django基础知识总结
- C语言如何使用三角函数
- 多媒体计算机的媒体信息包括文字,多媒体计算机中的媒体信息是指什么
- 【全套完结】电磁场与电磁波实验-----全套Matlab仿真实验
- gpuz怎么看显存颗粒
- HTML5响应式手机软件下载网站源码 APP应用软件下载站pbootcms模板
- 强大的web打印插件--Lodop
- .net 6项目使用DB First时报“Unable to resolve service for type......”的错
- CVE-2020-1472: NetLogon特权提升漏洞通告
热门文章
- 机房搬迁更改集群IP
- 俞敏洪对话王立铭:重塑大脑,别让你的生命翻车
- 商汤科技面试——深度学习
- pdf怎么合并在一起?轻松合并pdf的几个方法
- 新人融入团队的必备python技巧,python 编码规范,滚雪球学Python第4季12篇
- Django - 发送邮件
- Sqlite 分组查询
- Project build error: Non-resolvable parent POM for com.gzl.cn:springboot01:0.0.1-SNAPSHOT: Could not
- win10系统修改文件后缀名
- php爬取百度相关关键词,PHP实现抓取百度搜索结果页面【相关搜索词】并存储到txt文件示例...