![727680a6766504b53b06586d8b8d01bf.png](https://i-blog.csdnimg.cn/blog_migrate/3583baab63a64ec23485e1bd6f745e8c.jpeg)
1.1 概述
1. 定义数值计算目标: 寻找一个能迅速完成的(迭代算法)算法,同时估计计算结果的准确度。
1.2 误差分析基础
1. 误差来源:截断误差、舍入误差、数学建模时的近似、测量误差(数据误差)
2. 误差的分类:
绝对误差
![equation?tex=e%28%5Chat%7Bx%7D%29+%3D+%5Chat%7Bx%7D+-+x](https://i-blog.csdnimg.cn/blog_migrate/f091be03534eaac270b79054a66af7a3.png)
相对误差
![equation?tex=e_r%28%5Chat%7Bx%7D%29+%3D+%5Cfrac%7B%5Chat%7Bx%7D+-+x%7D%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/632d7fc40deac535843355318a77ce63.png)
![equation?tex=e_r%28%5Chat%7Bx%7D%29+%3D+%5Cfrac%7B%5Chat%7Bx%7D+-+x%7D%7B%5Chat%7Bx%7D%7D](https://i-blog.csdnimg.cn/blog_migrate/df6f6afc87987eb1c7c9659318fd5e1c.png)
3. 定义有效数字:从左到右第一位非零数字开始的所有数字
定理:设x与其近似值
![equation?tex=%5Chat%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png)
![equation?tex=d_0](https://i-blog.csdnimg.cn/blog_migrate/4c0a852dd73cd9ca62040dce6b561204.png)
![equation?tex=%5Chat%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png)
![equation?tex=+%7Ce_r%28%5Chat%7Bx%7D%29%7C+%5Cleq+%5Cfrac%7B1%7D%7Bd_0%7D+%5Ctimes+10%5E%7B-p+%2B+1%7D+](https://i-blog.csdnimg.cn/blog_migrate/2785cda50d5bd2001bc35aaeafe5dd0e.png)
定理:设对x保留p位有效数字后得到近似值
![equation?tex=%5Chat%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png)
![equation?tex=+%7Ce_r%28%5Chat%7Bx%7D%29%7C+%3D+%5Cfrac%7B1%7D%7B2d_0%7D+%5Ctimes+10%5E%7B-p%2B1%7D+](https://i-blog.csdnimg.cn/blog_migrate/881104ae49a88ece804f86b6d823162b.png)
定理:设x的第一位有效数字为
![equation?tex=d_0](https://i-blog.csdnimg.cn/blog_migrate/4c0a852dd73cd9ca62040dce6b561204.png)
![equation?tex=%5Chat%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png)
![equation?tex=%7Ce_r%28%5Chat%7Bx%7D%29%7C+%5Cleq+%5Cfrac%7B1%7D%7B2%28d_0+%2B+1%29%7D+%5Ctimes+10%5E%7B-p+%2B+1%7D](https://i-blog.csdnimg.cn/blog_migrate/917e05a457d1a607d5974beec40cc76e.png)
![equation?tex=%5Chat%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png)
![equation?tex=%5Chat%7Bx%7D+%3D+x](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png+%3D+x)
定理:若x的近似值在
![equation?tex=%5Chat%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png)
![equation?tex=%7Ce_r%28%5Chat%7Bx%7D%29%7C+%5Cleq+%5Cfrac%7B1%7D%7B2%7D+%5Ctimes+10%5E%7B-p%7D](https://i-blog.csdnimg.cn/blog_migrate/40747d0a49dc05628928784c33894d80.png)
![equation?tex=%5Chat%7Bx%7D](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png)
![equation?tex=%5Chat%7Bx%7D+%3D+x](https://i-blog.csdnimg.cn/blog_migrate/bc871be8f010112edb5eddc54e4ac67d.png+%3D+x)
应用:可以不严谨的说如果相对误差不超过
![equation?tex=10%5E%7B-p%7D](https://i-blog.csdnimg.cn/blog_migrate/0ec4f08725ac13c508e33eb28c019ff9.png)
4. 区分:精度(precision):有效数字的位数有关
准确度(accuracy):与准确的有效数字的位数有关
5. 数据传递误差与计算误差:考虑
![equation?tex=f%28x%29%2C+f%28%5Chat%7Bx%7D%29%2C+%5Chat%7Bf%7D%28%5Chat%7Bx%7D%29](https://i-blog.csdnimg.cn/blog_migrate/0c2422e2ee0df8c38457de1ce2579766.png)
计算误差:计算过程中的近似引起的误差,例
![equation?tex=%5Chat%7Bf%7D%28%5Chat%7Bx%7D%29+-+f%28%5Chat%7Bx%7D%29](https://i-blog.csdnimg.cn/blog_migrate/2abca54673e232c8244a70c8bb5470a2.png)
数据传递误差:单纯由输入数据误差引起的计算结果的误差,例
![equation?tex=f%28%5Chat%7Bx%7D%29+-+f%28x%29](https://i-blog.csdnimg.cn/blog_migrate/95b8434ba9ddb1e7feea1bb8822151cf.png)
6. 截断误差:实际结果,算法准确计算得到的结果的差
舍入误差:算法精确计算得到的结果,算法经有限精度计算的得到结果的差
7. 敏感性:输入数据的扰动对问题得影响程度得大小
条件数:
![equation?tex=+cond+%3D+%5Cfrac%7B%7C%7C%E9%97%AE%E9%A2%98%E7%9A%84%E8%A7%A3%E7%9A%84%E7%9B%B8%E5%AF%B9%E5%8F%98%E5%8C%96%E9%87%8F%7C%7C%7D%7B%7C%7C%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%E7%9A%84%E7%9B%B8%E5%AF%B9%E5%8F%98%E5%8C%96%E9%87%8F%7C%7C%7D+](https://i-blog.csdnimg.cn/blog_migrate/58621477b1539f9add7cd28b6d49ddb2.png)
计算公式:
![equation?tex=cond+%3D+%7C%5Cfrac%7B%5Bf%28%5Chat%7Bx%7D%29+-+f%28x%29%5D+%2F+f%28x%29%7D%7B%28%5Chat%7Bx%7D+-+x%29+%2F+x%7D%7C+](https://i-blog.csdnimg.cn/blog_migrate/5cf6246901b4586f0bb76151dd792f08.png)
推导可得:
![equation?tex=%7C%7C%E9%97%AE%E9%A2%98%E7%9A%84%E8%A7%A3%E7%9A%84%E7%9B%B8%E5%AF%B9%E5%8F%98%E5%8C%96%E9%87%8F%7C%7C+%3C+cond%7C%7C%E6%95%B0%E6%8D%AE%E4%BC%A0%E9%80%92%E7%9A%84%E7%9B%B8%E5%AF%B9%E8%AF%AF%E5%B7%AE%7C%7C%5C+cond+%3D+%7C%5Cfrac%7Bxf%27%28x%29%7D%7Bf%28x%29%7D%7C+](https://i-blog.csdnimg.cn/blog_migrate/ce035415e28650a78cbbc84a3f574dd8.png)
反问题(字面理解):原问题是y = f(x),反问题是给定y确定x。反问题的条件数就是探讨反函数
![equation?tex=f%5E%7B-1%7D%28y%29](https://i-blog.csdnimg.cn/blog_migrate/6ceef769eed3cb25d4435477fe5c0271.png)
![equation?tex=cond_%7Bf%5E%7B-1%7D%7D+%3D+%5Cfrac%7B1%7D%7Bcond_%7Bf%7D%7D](https://i-blog.csdnimg.cn/blog_migrate/936749cfd147a9c10b7d7e555e6dd1e7.png)
8. 算法稳定性
理解:算法很多是迭代得,每一步算法都会不断放大进而传导误差,如果传导误差不会特别大则算法稳定。
分析算法稳定性工具为误差限的四则运算,
![equation?tex=%5Cepsilon_1%2C+%5Cepsilon_2](https://i-blog.csdnimg.cn/blog_migrate/7dc88aa04805f1cc5db45d2ca7d55e23.png)
![equation?tex=+%5Cbegin%7Bcases%7D+%5Cepsilon%28%5Chat%7Bx%7D_1+%2B+%5Chat%7Bx%7D_2%29+%3D+%5Cepsilon_1+%2B+%5Cepsilon_2+%5C%5C+%5Cepsilon%28%5Chat%7Bx%7D_1%5Chat%7Bx%7D_2%29+%3D+%7C%5Chat%7Bx%7D_2%7C%5Cepsilon_1+%2B+%7C%5Chat%7Bx%7D_1%7C%5Cepsilon_2%5C%5C%5Cepsilon%28%5Chat%7Bx%7D_1+%2F+%5Chat%7Bx%7D_2%29+%3D+%5Cfrac%7B%7C%5Chat%7Bx%7D_2%7C%5Cepsilon_1+%2B+%7C%5Chat%7Bx%7D_1%7C%5Cepsilon_2%7D%7B%7C%5Chat%7Bx%7D_2%7C%5E2%7D+%5Cend%7Bcases%7D+](https://i-blog.csdnimg.cn/blog_migrate/75b50935b9ad413e3b62d29c6cea289d.png)
简单的例题:
计算黄金比例的20次方
![equation?tex=%5Cphi+%3D+%28%5Csqrt5+-+1%29+%2F+2%2C+%5Cphi%5E%7Bn+%2B+1%7D+%3D+%5Cphi%5E%7Bn%7D+-+%5Cphi%5E%7Bn+-+1%7D](https://i-blog.csdnimg.cn/blog_migrate/c427c33813f1f3ae4c9314025a65996a.png)
![equation?tex=%5Cbegin%7Bcases%7D+e_%7Bn+%2B+1%7D+%3D+e_%7Bn+-+1%7D+-+e_%7Bn%7D%5C%5C+e_0+%3D+0%2C+e_1+%3D+x+-+%5Cphi%5C+%5Cend%7Bcases%7D%5C%5C+e_2+%3D+-e_1%5C%5C+e_3+%3D+2e_1%5C%5C+e_4+%3D+-3e_1%5C%5C+%5Cvdots+](https://i-blog.csdnimg.cn/blog_migrate/348af120ccb403a47c49d0bbceae94c1.png)
可以看到系数在以斐波那契数列增长,因此算法不稳定。
1.3 减少误差的方法
避免“大数吃小数”:在编程中很常见的
![equation?tex=10%5E%7B10%7D+%2B+1](https://i-blog.csdnimg.cn/blog_migrate/ff497270a8a434b254912db6fd8b5a17.png)
避免大小相近的数相减:例如1923.05 - 1921.37 = 1.68,这种情况下前两个大数末尾几位已经不精确,在计算过程中又“丢去”高位,这样结果更加不精确。
总结上面的所有对误差的讨论,可以得到对一个问题误差分析如下图:
![cc6b376756b99711abdccc30e54240ff.png](https://i-blog.csdnimg.cn/blog_migrate/7911ff71384cec3575bc1800423c444c.jpeg)