作者July总结了一篇关于计算方法的文章《细数二十世纪最伟大的10大算法》。一、蒙特卡洛方法[:JohnvonNeumann,StanUlam,andNickMetropolis,allattheLosAlamosScientificLaboratory,cookuptheMetropolisalgorithm,alsoknownastheMonteCarlomethod.]年,美国拉斯阿莫斯国家实验室的三位科学家JohnvonNeumann,StanUlam和NickMetropolis共同发明,被称为蒙特卡洛方法。它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列?蒙特卡洛(MonteCarlo)方法告诉我们,均匀的向该正方形内撒N(N是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:1,PI为圆周率),当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。二、单纯形法[:GeorgeDantzig,attheRANDCorporation,createsthesimplexmethodforlinearprogramming.]年,兰德公司的,GrorgeDantzig,发明了单纯形方法。单纯形法,此后成为了线性规划学科的重要基石。所谓线性规划,简单的说,就是给定一组线性(所有变量都是一次幂)约束条件(例如a1*x1+b1*x2+c1*x30),求一个给定的目标函数的极值。这么说似乎也太太太抽象了,但在现实中能派上用场的例子可不罕见——比如对于一个公司而言,其能够投入生产的人力物力有限(“线性约束条件”),而公司的目标是利润最大化(“目标函数取最大值”),看,线性规划并不抽象吧!线性规划作为运筹学(operationresearch)的一部分,成为管理科学领域的一种重要工具。而Dantzig提出的单纯形法便是求解类似线性规划问题的一个极其有效的方法。三、Krylov子空间迭代法[:MagnusHestenes,EduardStiefel,andCorneliusLanczos,allfromtheInstituteforNumericalAnalysisattheNationalBureauofStandards,initiatethedevelopmentofKrylovsubspaceiterationmethods.]年:美国国家标准局数值分析研究所的,马格努斯Hestenes,爱德华施蒂费尔和科尼利厄斯的Lanczos,发明了Krylov子空间迭代法。Krylov子空间迭代法是用来求解形如Ax=b的方程,A是一个n*n的矩阵,当n充分大时,直接计算变得非常困难,而Krylov方法则巧妙地将其变为Kxi+1=Kxi+b-Axi的迭代形式来求解。这里的K(来源于作者俄国人NikolaiKrylov姓氏的首字母)是一个构造出来的接近于A的矩阵,而迭代形式的算法的妙处在于,它将复杂问题化简为阶段性的易于计算的子步骤。四、矩阵计算的分解方法[:AlstonHouseholderofOakRidgeNationalLaboratoryformalizesthede

转载请注明地址:http://www.abmjc.com/zcmbjc/625.html