数值分析(一) 算法和误差

写在前面:最近看的比较多的主要都关于数学方面主要是数学分析,就想写博客记录一下,给自己做个笔记。并想把数学相关方法与智能计算相关方向一定结合。很多教材基本都使用的Matlab进行编程、我这边主要用C++/java来做(主要是不会Matlab,微笑)也会对相关类进行封装。如矩阵类,包括其特征值、奇异值求解:

数值分析属于计算数学范畴。数值分析的研究内容就是求解各种数学问题数值解的数值计算方法,以及建立数值计算方法、编写程序,并用计算机计算得出的问题的数值解。

我们将从以下方面进行展开:

(1)线性方程的求根---- 包括《数值分析》中的Gauss消元法、Chlesky分解、Jacobi迭代法等还包括运用遗传算法求解限定条件下的线性方程。

(2)多项式插值和函数的数值逼近/曲线拟合

(3)数值积分和导数---- 牛顿-柯特斯公式、Romberg公式、Gauss型求积公式等

(4)常微分方程的数值解法---- 泰勒级数方法、改进欧拉等

---------------------正式开始:---------------------------------------------------------------------------------------

概念:

推导和演算得出的结果为其解析解(精确解)

数值方法求出的解为其数值解(近似解/计算解)

 

对同一数学问题可能有多种方法计算,方法的选择上我们要求:

(1)计算效率高----时间/空间复杂度

(2)数值稳定性好----持续的计算中,微小的计算误差对最终结果的准确性影响不大。否则称算法是不稳定的。Ps.这是很要命的,特别是在递推中,误差如滚雪球一般....

 

 


-------------------误差:----------------------------------------------------------------------------------------------

误差一般有建立数学模型时产生的误差、确定初始数据时产生的误差、截断误差和舍入误差。后两种是数值分析中讨论研究的误差。

 

截断误差是指某数学问题的精确解与用数值方法求出的近似解之差。例如极限运算就存在截断误差:求级数的和。这个和等于π。当用数值算法计算S时,显然不能在程序中使n无穷大,通常办法是让n足够大即可。例如n取1000,则求得Sn=3.1420924,截断误差为π-Sn=-0.0004998。

 

舍入误差不用讲了就是数值在计算过程中四舍五入产生的误差。

 

假设xx的近似值,则:

ε=|x-x| 称为绝对误差。比值(x-x/x为近似值的相对误差。若准确值x未知,为了便于计算,可以取(x-x/x。前提条件是(x-x/x较小。

同样,称(x-x/x相对误差限

 

函数误差估计:

若数有小的变化,引起函数值大的变化,则称这个计算是病态的,反之称为良态的。例如常见的:病态矩阵。

 

--------------------防止误差传播:--------------------------------------------------------------------------------------------

(1) 避免相近的数相减

(2) 避免绝对值很小的数作除数

(3) 避免大数加(减)小数---浮点数的存储精度导致

(4) 简化计算步骤,减少运算次数

你可能感兴趣的:(Numerical,Analysis,数值分析)