1. 定义数值计算目标: 寻找一个能迅速完成的(迭代算法)算法,同时估计计算结果的准确度。
1. 误差来源:截断误差、舍入误差、数学建模时的近似、测量误差(数据误差)
2. 误差的分类:
绝对误差e(x^)=x^−xe(\hat{x}) = \hat{x} - x ;误差限
相对误差 er(x^)=x^−xxe_r(\hat{x}) = \frac{\hat{x} - x}{x} 或者 er(x^)=x^−xx^e_r(\hat{x}) = \frac{\hat{x} - x}{\hat{x}} ;相对误差限
3. 定义有效数字:从左到右第一位非零数字开始的所有数字
定理:设x与其近似值x^\hat{x} 的第一位有效数字相同,均为d0d_0 ,若x^\hat{x} 有p位正确的有效数字,则其相对误差满足:
|er(x^)|≤1d0×10−p+1 |e_r(\hat{x})| \leq \frac{1}{d_0} \times 10^{-p + 1}
定理:设对x保留p位有效数字后得到近似值 x^\hat{x} ,则相对误差满足:
|er(x^)|=12d0×10−p+1 |e_r(\hat{x})| = \frac{1}{2d_0} \times 10^{-p+1}
定理:设x的第一位有效数字为 d0d_0 ,若近似值x^\hat{x} 的相对误差满足 |er(x^)|≤12(d0+1)×10−p+1|e_r(\hat{x})| \leq \frac{1}{2(d_0 + 1)} \times 10^{-p + 1} 则x^\hat{x} 具有p位正确的有效数字,或者在保留p位有效数字后 x^=x\hat{x} = x
定理:若x的近似值在 x^\hat{x} 相对误差满足 |er(x^)|≤12×10−p|e_r(\hat{x})| \leq \frac{1}{2} \times 10^{-p} ,则 x^\hat{x} 至少有p位正确的有效数字,或者在保留p位有效数字后 x^=x\hat{x} = x
应用:可以不严谨的说如果相对误差不超过 10−p10^{-p} 怎有p位正确的有效数字
4. 区分:精度(precision):有效数字的位数有关
准确度(accuracy):与准确的有效数字的位数有关
5. 数据传递误差与计算误差:考虑 f(x),f(x^),f^(x^)f(x), f(\hat{x}), \hat{f}(\hat{x})
计算误差:计算过程中的近似引起的误差,例 f^(x^)−f(x^)\hat{f}(\hat{x}) - f(\hat{x})
数据传递误差:单纯由输入数据误差引起的计算结果的误差,例 f(x^)−f(x)f(\hat{x}) - f(x)
6. 截断误差:实际结果,算法准确计算得到的结果的差
舍入误差:算法精确计算得到的结果,算法经有限精度计算的得到结果的差
7. 敏感性:输入数据的扰动对问题得影响程度得大小
条件数: 问题的解的相对变化量输入数据的相对变化量cond=||问题的解的相对变化量||||输入数据的相对变化量|| cond = \frac{||问题的解的相对变化量||}{||输入数据的相对变化量||}
计算公式: cond=|[f(x^)−f(x)]/f(x)(x^−x)/x| cond = |\frac{[f(\hat{x}) - f(x)] / f(x)}{(\hat{x} - x) / x}|
推导可得: 问题的解的相对变化量数据传递的相对误差||问题的解的相对变化量||<cond||数据传递的相对误差||cond=|xf′(x)f(x)| ||问题的解的相对变化量|| < cond||数据传递的相对误差|| cond = |\frac{xf'(x)}{f(x)}|
反问题(字面理解):原问题是y = f(x),反问题是给定y确定x。反问题的条件数就是探讨反函数 f−1(y)f^{-1}(y) 的敏感性。可以化简得出反问题得条件数和原问题得条件数互为倒数,即 condf−1=1condfcond_{f^{-1}} = \frac{1}{cond_{f}}
8. 算法稳定性
理解:算法很多是迭代得,每一步算法都会不断放大进而传导误差,如果传导误差不会特别大则算法稳定。
分析算法稳定性工具为误差限的四则运算,x^1,x^2\hat{x}_1, \hat{x}_2 的误差限为 ϵ1,ϵ2\epsilon_1, \epsilon_2 ,误差限的四则运算如下:
{ϵ(x^1+x^2)=ϵ1+ϵ2ϵ(x^1x^2)=|x^2|ϵ1+|x^1|ϵ2ϵ(x^1/x^2)=|x^2|ϵ1+|x^1|ϵ2|x^2|2 \begin{cases} \epsilon(\hat{x}_1 + \hat{x}_2) = \epsilon_1 + \epsilon_2 \ \epsilon(\hat{x}_1\hat{x}_2) = |\hat{x}_2|\epsilon_1 + |\hat{x}_1|\epsilon_2\\epsilon(\hat{x}_1 / \hat{x}_2) = \frac{|\hat{x}_2|\epsilon_1 + |\hat{x}_1|\epsilon_2}{|\hat{x}_2|^2} \end{cases}
简单的例题:
计算黄金比例的20次方 ϕ=(5−1)/2,ϕn+1=ϕn−ϕn−1\phi = (\sqrt5 - 1) / 2, \phi^{n + 1} = \phi^{n} - \phi^{n - 1} ,初始的近似值x = 0.618034,对于误差限有一下迭代公式:
{en+1=en−1−ene0=0,e1=x−ϕe2=−e1e3=2e1e4=−3e1⋮ \begin{cases} e_{n + 1} = e_{n - 1} - e_{n}\ e_0 = 0, e_1 = x - \phi \end{cases}\ e_2 = -e_1\ e_3 = 2e_1\ e_4 = -3e_1\ \vdots
可以看到系数在以斐波那契数列增长,因此算法不稳定。
避免“大数吃小数”:在编程中很常见的 1010+110^{10} + 1 这种问题;
避免大小相近的数相减:例如1923.05 - 1921.37 = 1.68,这种情况下前两个大数末尾几位已经不精确,在计算过程中又“丢去”高位,这样结果更加不精确。
总结上面的所有对误差的讨论,可以得到对一个问题误差分析如下图:
原网址: 访问
创建于: 2023-12-07 09:52:25
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论