数值分析
数值分析是对使用数值近似(而不是符号操作)来解决数学分析问题(与离散数学区分开的)的算法的研究。它是对数值方法的研究,试图找到问题的近似解决方案而不是确切的解决方案。数值分析在工程和物理科学领域中发现了应用,在21世纪,生活和社会科学,医学,商业甚至艺术也是如此。当前的计算能力增长使得能够使用更复杂的数值分析,从而在科学和工程中提供了详细且现实的数学模型。数值分析的示例包括:在天体力学(预测行星,恒星和星系的运动)中发现的普通微分方程,数据分析中的数值线性代数,以及随机微分方程和马尔可夫链,用于模拟医学和生物学中的活细胞。
在现代计算机之前,使用大型印刷表中的数据,通常依靠手动插值公式。自20世纪中叶以来,计算机计算了所需的功能,但是许多相同的公式仍在软件算法中使用。
数值的观点可以追溯到最早的数学著作。耶鲁·巴比伦( YBC 7289 )的平板电脑给出了2平方根2的性数值近似,在单位正方形中的对角线长度为2。
数值分析继续了这一悠久的传统:使用指定误差范围内的近似解决方案,而不是给出数字转换为数字的确切符号答案。
申请
数值分析领域的总体目标是对技术的设计和分析,以提供近似但准确的解决方案,以解决困难问题,以下各种各样的方法是:
- 高级数值方法对于使数值天气预测可行至关重要。
- 计算航天器的轨迹需要普通微分方程系统的准确数值解。
- 汽车公司可以使用汽车撞车的计算机模拟来改善车辆的碰撞安全性。这种模拟基本上包括在数值上求解部分微分方程。
- 对冲基金(私人投资基金)使用数值分析中的定量融资工具,试图比其他市场参与者更精确地计算股票和衍生品的价值。
- 航空公司使用复杂的优化算法来确定机票价格,飞机和机组人员的任务和燃油需求。从历史上看,这种算法是在运营研究的重叠领域中开发的。
- 保险公司使用数值计划进行精算分析。
历史
数值分析领域早于现代计算机的发明多世纪。线性插值已经在2000年前已使用。过去的许多伟大数学家都被数值分析所关注,从牛顿方法,拉格朗日插值多项式,高斯消除或欧拉的方法等重要算法的名称中可以看出。现代数值分析的起源通常与约翰·冯·诺伊曼(John von Neumann)和赫尔曼·戈德斯汀( Herman Goldstine)的1947年论文有关,但其他人则认为现代数值分析可以重返1912年的ET Whittaker 。
为了促进手工计算,用公式和数据表(例如插值点和功能系数)生产了大书籍。使用这些表,通常计算为某些功能的16个小数点或更多位置,可以查找值以插入给定的公式,并实现某些功能的很好的数值估计。该领域的规范作品是Abramowitz和Stegun编辑的NIST出版物,这是一本1000多页的书籍,其中包含大量常用的公式和功能及其值在许多方面。当有计算机可用时,功能值不再非常有用,但是公式的大量清单仍然非常方便。
还开发了机械计算器作为手部计算的工具。这些计算器在1940年代演变为电子计算机,然后发现这些计算机也可用于管理目的。但是计算机的发明也影响了数值分析领域,因为现在可以更长的时间和更复杂的计算。
莱斯利·福克斯(Leslie Fox)的数值分析奖是由数学研究所及其应用于1985年启动的。
关键概念
直接和迭代方法
直接方法将解决方案计算到有限数量的步骤中。如果以无限的精确算术进行这些方法,这些方法将给出确切的答案。示例包括高斯消除,求解线性方程系统的QR分解方法以及线性编程的单纯形方法。实际上,使用有限的精度,结果是真实解(假设稳定性)的近似值。
与直接方法相反,迭代方法不会预期以有限数量的步骤终止。从初始猜测开始,迭代方法形成连续的近似值,这些近似仅在限制中收敛到精确解决方案。为了确定何时(希望)找到足够准确的解决方案,通常会指定涉及残差的收敛测试。即使使用无限的精度算术,这些方法也不会在有限数量的步骤内达到解决方案(通常)。示例包括牛顿的方法,二次方法和雅各比迭代。在计算矩阵代数中,通常需要迭代方法来解决大问题。
在数值分析中,迭代方法比直接方法更常见。某些方法原则上是直接的,但通常就像不是,例如GMRES和共轭梯度方法。对于这些方法,获得精确解所需的步骤数量是如此之大,以至于以与迭代方法相同的方式接受了近似值。
例如,考虑解决的问题
- 3 x 3 + 4 = 28
对于未知数量x 。
3 x 3 + 4 = 28。 | |
减去4 | 3 x 3 = 24。 |
除以3 | x 3 = 8。 |
抓住立方根 | x = 2。 |
对于迭代方法,将一分解方法应用于f ( x )= 3 x 3 −24。初始值为a = 0, b = 3, f ( a )= -24, f ( b )= 57。
a | b | 中 | F (中) |
---|---|---|---|
0 | 3 | 1.5 | −13.875 |
1.5 | 3 | 2.25 | 10.17... |
1.5 | 2.25 | 1.875 | −4.22... |
1.875 | 2.25 | 2.0625 | 2.32... |
从此表可以得出结论,该解决方案在1.875和2.0625之间。该算法可能在该范围内返回任何数字,误差小于0.2。
调理
条件不足的问题:采用函数f ( x )= 1/( x - 1) 。请注意, f (1.1)= 10和f (1.001)= 1000: x的变化小于0.1,变为近1000的f ( x )的变化。在x = 1附近评估f ( x )有条件的问题。
条件良好的问题:相比之下,在x = 10附近评估相同的函数f ( x )= 1/( x -1)是一个条件良好的问题。例如, f (10)=1/9≈0.111和f (11)= 0.1: x的适度变化导致f ( x )的适度变化。
离散化
此外,有时必须将连续问题替换为离散问题,该问题已知解决方案近似于连续问题的解决方案;此过程称为“离散化”。例如,微分方程的解是函数。该函数必须由有限数量的数据表示,例如,即使该域是连续体,在其域的有限点处的值。
错误的产生和传播
错误的研究构成了数值分析的重要组成部分。在问题的解决方案中,可以通过几种方式引入错误。
四舍五入
之所以会出现圆形错误,是因为不可能在具有有限内存的机器上准确表示所有实数(这是所有实用数字计算机的原因)。
截断和离散错误
当迭代方法终止或近似数学过程时,截断误差将犯下,并且近似解决方案与精确解决方案不同。同样,离散化会引起离散误差,因为离散问题的解决方案与连续问题的解决方案不一致。在上面的示例中,要计算十个迭代后的解决方案,计算出的根大约为1.99。因此,截断误差约为0.01。
产生错误后,它将通过计算传播。例如,计算机上的操作 +不精确。该类型的计算更加不精确。
当近似数学过程时,会创建截断误差。要准确地集成函数,必须找到无限的区域总和,但是在数值上只能找到有限的区域总和,因此,精确溶液的近似值。同样,要区分函数,差分元素将接近零,但是从数值上讲,差分元素的非零值可以选择。
数值稳定性和良好的问题
如果误差(无论其原因)在计算过程中不会变大,则将算法称为数值稳定。如果问题有充分的条件,则会发生这种情况,这意味着如果问题数据更改了少量,则解决方案只会改变少量。相反,如果问题“条件不足”,则数据中的任何小错误都会成为一个很大的错误。用于解决该问题的原始问题和用于解决该问题的算法都可以得到充分的条件或条件不足,并且任何组合都是可能的。因此,解决条件良好的问题的算法在数值上可能是稳定的,也可以是不稳定的。数值分析的一种艺术是找到一种稳定的算法,以解决良好的数学问题。
研究领域
数值分析领域包括许多子学科。一些主要的是:
函数的计算值
插值:观察温度从1:00时的20度摄氏摄氏度在3:00时变化,该数据的线性插值将得出结论,即在2:00时为17度,在1:30 PM时为18.5度。 推断:如果一个国家的国内生产总值平均每年增长5%,去年为1000亿,它可能会推断出今年的1005亿。 回归:在线性回归中,给定n个点,计算一条线,该线路尽可能接近那些n个点。 优化:假设柠檬水在柠檬水摊上出售,每杯$ 1.00,每天可以出售197杯柠檬水,每天增加0.01美元,每天都会出售一杯柠檬水。如果可以收取1.485美元的费用,则将最大化利润,但由于必须收取全美分费用的限制,每杯收费$ 1.48或1.49美元都将获得每天220.52美元的最高收入。 微分方程:如果设置了100名球迷将空气从房间的一端吹到另一端,然后将羽毛掉入风中,会发生什么?羽毛将跟随气流,这可能非常复杂。一个近似值是测量每秒每秒在羽毛附近吹出空气的速度,并将模拟羽毛推进,就好像它以相同的速度以相同的速度移动一秒钟,然后再次测量风速。这称为求解普通微分方程的Euler方法。 |
最简单的问题之一是评估给定点的功能。最直接的方法,仅插入公式中的数字有时不是很高效。对于多项式,一种更好的方法是使用霍纳方案,因为它减少了必要的乘法和添加数量。通常,重要的是要估计和控制由于浮点算术的使用而引起的圆形误差。
插值,外推和回归
插值解决了以下问题:给定一些未知函数在多个点上的值,该函数在给定点之间的其他点有什么值?
推断与插值非常相似,除了现在必须在给定点之外的点处的未知函数的值。
回归也相似,但考虑到数据不精确。给定一些点,以及在这些点上某些函数的值的测量(带有错误),可以找到未知的函数。最小二乘- 方法是实现这一目标的一种方法。
求解方程式和方程系统
另一个基本问题是计算某些给定方程的解决方案。通常将两种情况区分,具体取决于方程是否线性。例如,方程是线性的,而不是线性。
在求解线性方程系统的方法的开发中已经付出了很多努力。使用某些矩阵分解的标准直接方法,即IE,是高斯消除, LU分解,对称(或遗传学)的Cholesky分解和阳性定义矩阵,而QR分解非平方矩阵。通常,对于大型系统而言,通常首选的迭代方法,例如雅各比方法,高斯 - 西德尔方法,连续的过度释放和共轭梯度方法。可以使用矩阵拆分开发一般迭代方法。
根发现算法用于求解非线性方程(它们是如此命名,因为函数的根是函数产生零的参数)。如果该函数是可区分的,并且衍生物是已知的,则牛顿的方法是一个流行的选择。线性化是求解非线性方程的另一种技术。
解决特征值或奇异价值问题
可以根据特征值分解或奇异值分解来表达几个重要问题。例如,光谱图像压缩算法基于奇异值分解。统计中的相应工具称为主成分分析。
最佳化
优化问题要求给定功能最大化(或最小化)。通常,这一点还必须满足一些约束。
根据目标函数和约束的形式,在几个子字段中进一步划分了优化领域。例如,线性编程涉及目标函数和约束都是线性的情况。线性编程中的一种著名方法是单纯形方法。
Lagrange乘数的方法可用于减少与不受约束的优化问题的优化问题。
评估积分
在某些情况下,数值集成也称为数值正交,要求确定积分的值。流行的方法使用牛顿 - 秘密公式之一(例如中点规则或辛普森规则)或高斯正交。这些方法依赖于“划分和征服”策略,在这种策略中,相对较大的集合上的积分被分解为较小集合的积分。在较高的维度中,这些方法在计算工作方面变得过于昂贵,可以使用蒙特卡洛或准蒙特卡洛方法(请参阅蒙特卡洛整合),或者在适度的大维度中,稀疏网格的方法。
微分方程
数值分析还与(以近似方式)计算微分方程的解决方案(普通微分方程和部分微分方程)有关。
通过首先将方程式来解决部分微分方程,从而将其进入有限维的子空间。这可以通过有限元方法,有限的差异方法或(尤其是在工程中)有限体积方法来完成。这些方法的理论理由通常涉及功能分析的定理。这将问题减少到代数方程的解决方案。
软体
自20世纪后期以来,大多数算法都以各种编程语言实施。 Netlib存储库包含有关数值问题的各种软件例程,主要是在Fortran和C中。实施许多不同数值算法的商业产品包括IMSL和NAG库; GNU科学库是一个免费的软件替代品。
多年来,皇家统计学会在其应用统计数据中发表了许多算法(这些功能的代码在这里);同样, ACM在数学软件的交易中(“ Toms”代码在此处)。海军表面战中中心多次发布了其数学子例程库(此处代码)。
有几种流行的数值计算应用程序,例如MATLAB , TK求解器, S-Plus和IDL ,以及免费和开源的替代方案,例如Freemat , Scilab , GNU八度(类似于MATLAB),以及IT ++ ( A C ++库)。还有一些编程语言,例如R (类似于S-Plus), Julia和Python ,其中包括Numpy , Scipy和Sympy等库。性能差异很大:虽然向量和矩阵操作通常很快,但标量环的速度可能会变化超过一个数量级。
许多计算机代数系统(例如Mathematica)也受益于任意精确算术的可用性,可以提供更准确的结果。
同样,任何电子表格软件都可以用来解决与数值分析有关的简单问题。例如, Excel具有数百个可用功能,包括用于矩阵,这些功能可以与其内置的“求解器”一起使用。