前言
design and analysis of algorithms can be broadly achieved with the help of seven concepts
《Numerical Methods for Algorithms Systems and Neural Networks》
reference link
doi
从七个要素来看算法的设计和分析……
算法定义
算法是一系列指令,有一个对严谨数学问题的解决方案,其主要目的就是制定一个可以在计算机中实施的方案,可以进行所谓的数值模拟。
直接求解方法对给定问题求解直到要求的舍入误差(例如高斯消除)。 迭代求解会逼近到一定精度(例如,用于求解线性方程系统的Richardson迭代、不动点迭代、梯度下降、牛顿法……)。
算法在准确性、稳健性和效率方面各不相同。
1, Approximation
由于正如我们在上一节中刚刚了解到的那样,通常无法获得解析解,因此通过数值近似获得解。
2, Convergence
收敛是一个定性表达式,它告诉我们序列 $(a_n)_{n\in N}$ 的成员 $a_n$ 何时足够接近极限 $a$。 在数值数学中,这个极限通常是我们正在寻找的解决方案。
3, Order of convergence
在分析中,我们通常对收敛本身感兴趣,但在数值数学中,我们必须注意数值解具有足够精度所需的时间。 模拟时间越长,消耗的时间和能源(运行计算机的电力、服务器的空调等)就越多。 为了判断一个算法是否快,我们必须确定收敛的顺序。
4, Error
数值数学可以被认为是“误差数学”的分支。
这是什么意思? 并不是说数值建模错误、不准确或不精确! 由于我们在最后几步之后切割序列或接受从我们的软件获得的足够准确的解决方案,我们需要说明这个数值解到精确解的近似程度。 换句话说,我们需要确定误差,而误差可能以各种形式出现。
5, Error Estimation
这是数值数学中最大的分支之一。 我们需要导出误差公式来判断数值模拟的结果,并衡量数值解与(未知)精确解在某个范数下的差异。
6, Efficiency
一般来说,我们可以说,算法的收敛阶数越高,算法的效率就越高。 因此,我们可以更快地获得给定问题的数值解。 但是数值效率并不自动与资源有效计算相关。 例如,使用 MPI(消息传递接口)、硬件优化(CPU、GPU)、软件优化(以某种最佳方式排序 for 循环、算术评估等)开发并行代码可以进一步降低计算成本。
7, Stability
最后,必须研究算法和实现在参数(模型、材料、数值)变化、边界条件、初始条件、不确定性方面的稳健性。 稳定性在最广泛的意义上与阿达玛的第三个条件相关。