关于这个笔记
也许你已经学会了一门计算机语言,也许你会写一段不错的程序。
也许你在嘈杂的环境用不费力的就可以用熟悉的IDE完成一个项目。
不过,你还在用+ - * /和%做所有的计算么?
这个笔记就是为了写出更加正确的程序,小小的一个学习过程。
我不总结复杂的道理,只记录用得上的方案。
出现的一切代码都使用Java语言。
正确的计算过程导致错误的计算结果
关于基本数值计算中的一些陷阱
浮点数和实数
当早期的Fortran和algol创造出real这个关键字时,你还真以为那么是实数,不过说真的,你被骗了。
所以到了C,我们拥有了float。
那么他们到底有什么不同呢?
简单地说
System.out.println(”Value of 1/3: ” + (1/3f))
将输出
Value of 1/3: 0.33333334
很简单,这是很早之前您就知道的四舍五入。当时我们只是那无法写完的循环在纸上划下一个”≈”,然后非常开心可以少写几个字符。如果你有一个负责任的数学老师,他(她)就会反复的叮咛你,要小心,计算时候要保留结果精度往后一位的数值。
当这一切轮到了计算机,我们叫它:
舍入误差
舍入误差有时相当惊人。对1/3连加840次,你会得到279.9915(本应当为280),如何惊人,我们会在下面看到。
不过有意思的事情,和小时候的情形不一样,舍入误差并不是由于不能除尽或者是无理数造成的,类似于1/5的数字连加之后也有误差。这是因为绝大多数
计算机是基于2进制体系的,所以IBM有用于商业计算的10进制计算机。简单的事实是利用float表达的2的幂次,在精度范围是没有舍入误差的。
给出常用定义:
作如下计算,你会期待怎样的结果呢?
别偷懒,用你久远的口算能力,很容易就可以得出,它本来应该是0。而事实上,我们伟大的计算机的答案是3222784.0
为什么?
因为,10000001/20000000的时候,答案本应该是0.50000005,由于舍入误差,我们得到了0.5000006。
接下来我们减去0.5的时候,得到的应当是0.00000006,这样,我们就丢失了所有的正确的数。
更糟糕的是,计算机中实际得到的值是5.9604645e-8。
因此,您的存款户头上可能会平白无故减少3222784元。只因为银行决定向你支付利息之后,调整了汇率。
呃,这一次,我们叫它:
相消误差——两个非常相近的值相减时,如果消去了绝大多数有效数值,那么就会发生相消误差。
舍入误差——是精确值和其可表达值之间的差值。
如果还有什么要说的,那就是:
Double比float 更接近实数,貌似不需要我说。
浮点运算不遵守代数定理
比如:a = 1.0, b = 3.0e-8, c = 4.0e-8
那么: (a+b)+c = 1.0
a+(b+c) = 1.0000001
不过加法和乘法还是满足交换律的。
下一次:轮到了整数。
分享到:
相关推荐
《数值计算方法复习笔记与练习题》是一份专为研究生准备的复习资料,适用于学习《数值计算方法(第二版)》这门课程的学生。这份笔记由林夕精心编写,包含了课程的重要知识点、练习题和考试重点,是迎战期末考试的...
这份数值分析笔记涵盖了数值方法的基本原理、常见算法及其在实际问题中的应用。通过本笔记,读者将了解到数值分析的核心概念,包括数值解法的稳定性、精度和收敛性评估。主要内容包括但不限于:介绍数值分析的基础...
数值分析是数学的一个重要分支,主要研究如何用数值方法解决各种数学问题,包括微积分、微分方程、函数插值、函数逼近等。以下是对数值分析各分支的知识点详细说明: 一、误差分析 误差分析是数值计算的基础,旨在...
本笔记主要涉及了数值计算中的误差分析和解线性方程组的直接法。 首先,我们讨论误差。在数值计算中,绝对误差e表示近似值x与精确值x*之间的差异,即e=x* - x。绝对误差限ε是误差的最大可能值,它保证了精确值x*...
8. **稳定性和收敛性**:这是评估数值方法质量的重要标准,笔记会讲解这些概念并分析不同方法的稳定性。 9. **特殊函数**:如伽马函数、贝塞尔函数等,以及它们的数值近似方法。 10. **数值概率与统计**:可能包括...
《数值算法笔记资料(曹奇英)》是东华大学曹奇英教授关于数值计算方法的一份详实学习资源,包含pdf文档、手抄版笔记和教学手册,非常适合自学和深入理解数值算法。这份资料全面涵盖了数值计算的核心概念、算法原理...
1. **误差分析**:这是数值分析的基石,包括了舍入误差、截断误差的概念及如何控制它们的方法。理解和管理误差对于确保数值计算的准确性至关重要。 2. **线性代数的数值方法**:涵盖了矩阵运算、线性方程组的直接求...
Matlab数值分析笔记.pdf
- 数值微分是求解导数值的一种数值方法。 - **6.3 数值线性代数** - 讨论了数值线性代数中的核心概念和技术。 - 数值线性代数是处理大规模线性系统的关键工具。 以上是根据提供的文件信息整理出来的数值算法...
### 数值优化课程笔记知识点概览 #### 一、引言 - **目标**: 描述连续优化的基本概念及主流算法。 - **优化问题定义**: - 目标:最小化函数 \( f(x) \),其中 \( x \in \mathbb{R}^n \)。 - 约束条件: - 等式...
LU分解是数值分析中解决线性方程组的一种常用方法,它将一个矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积。在这个过程中,通常还会应用部分主元技术,即在进行行变换的过程中选取当前列的最大元作为主元,这...
数值计算笔记,根据学堂在线数值计算(王兵团老师)课程所总结,共7章,30小节。本笔记由Typora编写,Markdown格式。请勿用于学习之外用途。
根据给定的文件标题“研究生课程数值分析课堂笔记小抄版,考前可看”以及描述,我们可以推测出这份资料是针对研究生阶段数值分析课程的一个复习资料汇总,旨在帮助学生在考试前快速回顾和理解该课程的核心概念和技术...
总结来说,本笔记涵盖了数值计算的基础知识,包括有效数字、近似值、迭代法、不动点定理、牛顿迭代法、琴九韶算法、双截法、高斯消去法、三角分解、LU 分解、行列式、计算复杂性和插值方法等。这些知识点对于数值...
《数值分析第五版》是李庆扬、王能超、易大义合著的一本教材,这本教材的期末复习笔记涵盖了数值分析的核心概念和方法。以下是对笔记中提到的知识点的详细阐述: 1. 误差来源及减少方法: - **误差来源**:包括...
数值分析是计算机科学和工程领域中的一个重要分支,它主要研究如何用近似方法解决数学问题,特别是那些在实际计算中无法或难以精确求解的问题。本资料“数值分析期末考试题与课堂笔记.zip”包含了对这个主题的深入...
深蓝学院的数值优化学习笔记可能包含了上述概念的详细介绍,通过实例和PPT讲解,帮助学习者逐步掌握这些方法,并应用于实际路径规划问题中。通过深入学习和实践,我们可以设计出更加智能和高效的路径规划算法,服务...
在这个名为“MATLAB | 数值计算方法源文件”的资源包中,包含了8种核心的数值计算方法的源代码(m文件)以及Matlab手册和学习笔记,这对于学习和理解数值计算方法非常有帮助。 首先,让我们逐一探讨这8种数值计算...
1. **数值分析基础**:计算方法的核心是数值分析,它研究如何用计算机近似求解不能直接解析解出的问题。这包括求解方程、微分方程、优化问题等。 2. **插值与拟合**:在数据处理中,插值是一种构建新函数的方法,...