关于数值分析

研究生时,极其不喜欢数值分析,觉得太抽象。

结果研究生也没研究出什么,没有能够用好数学这个工具,这也成了心里一个结。

毕业多年后,翻出数值分析课本,慢慢啃。后面又买了两本教材,一年后看明白了。朋友问,有什么用?没有,就是想搞清楚。

在这里建座楼,希望大家能少走点弯路。

第一本书


关于数值分析_第1张图片
图片发自App

第二本

关于数值分析_第2张图片
图片发自App

数值分析,用简单、可重复的办法来计算复杂的问题。

数字分析能有什么用?解各种各样没无法用解析方法求解的数学问题。

现实生活中能象一元二次方程这种有现成的公式来解的题很少很少,大多数问题只能通过不断尝试、用逼近的方法来求解,求解方程、方程组、矩阵特征值和特征向量、数值微分、数值积分。。。

在学校时,老师说过,要学好数学,做研究有用。现在有了更深刻的理解。

现实世界太复杂,要研究它就得有一个切入点,必须进行简化,建立数学模型才能进行量化处理。

复杂的世界要建立复杂的模型,没有公式可以马上解出结果,只能通过简化、逼近来解。

Elron Mask和查理。芒格都说过第一性原理。个人理解数值分析的第一性原理是级数展开,及误差分析。

第一个目标是计算要简便,第二个目标是误差。

数值分析就是在计算量和误差之间进行平衡。

资源是有限的,要解决的问题太多。

随便找一本MATLAB教材,都会有现成的优化算法,确定目标函数、约束条件、变量,就可以用现有的算法求解,但遇到美团这种大规模实时路径优化问题,就得动脑筋想想如何实现。

按个人理解,数值分析按以下结构组织比较容易理解:

插值与拟合,从一堆数据中计算得到一个或一组公式,从不同角度来表示数据背后潜在的规律。

拉格朗日插值:原理上最简单的插值方法,有多少个原始数据点,就生成多少个线性方程。优点是容易理解,缺点是计算的工作量大,高阶方程计算慢,而且每次新增一个数据点必须全部重新算。

为了解决新增数据点不必重算的痛点,出现了牛顿法。按差方的原则,多一个点就多计算一次差方。

拉格朗日和牛顿法没有考虑插值点处微分的问题,出现了hermite插值法,兼顾数据和微分。

直观的考虑是插值时数据点取得越细,插值的精度越好。事实上研究发现了RUNGE现象,过分多的插值点增加了计算量的同时,反而误差变大。

所以实际上不强求过多的插值点,多用二阶Hermite插值。

为了算出平滑的曲线,不仅要求曲线连续,一阶微分连续,还要求二阶和三阶微分连续,相应出现了Spline插值。


解非线性方程

现实生活中绝大多数方程难以得到解析解,需要由数值计算的方法解。

高斯消元及其变形解方程组

高斯消元是求解方程组的基础,由其派生出最大元发法,杜立特法等针对不同特性方程简化解法。

迭代法解方程组

数值积分

同解非线性方程一样,现实中多数积分无法得到解析解,需要用数值分析方法。

最基础的是梯形法,用大量梯形面积和来拟合实际要求的解。

为提高精度,采取增加中间点的方法求解,派生出辛普生法,等

为了实现机械计算,出现了牛顿法积分。

数值微分

作为积分的对偶问题,有数值积分,就有数值微分,思路想同。


求矩阵特征值

解微分方程

欧拉法

单点法  荣格库塔法

多点法

你可能感兴趣的:(关于数值分析)