此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.2)

A.9.4 数值及相关函数

数的表示和数值计算

FilledSmallCircle   进制的数组存储,这取决于机器整数的长度.
FilledSmallCircle 精确度在内部作为浮点数保存.
FilledSmallCircle IntegerDigits和相关的进制转换函数使用了一种递归除法和占优算法.
FilledSmallCircle N使用一个自适应过程来提高它内部工作精确度以便达到任意一种总精度所要求的精确度.
FilledSmallCircle Floor, Ceiling和相关的函数使用类似于N的自适应过程由准确输入生成准确的结果.

基本算法

FilledSmallCircle 大整数和高精度近似数的乘法通过使用交叉存储Karatsuba和FFT算法实现.
FilledSmallCircle 整数幂通过一个基于Horner法则的算法实现.
FilledSmallCircle 近似数的倒数和有理数幂使用Newton法实现.
FilledSmallCircle 准确的根由数值估计起始得到.
FilledSmallCircle 重要的算法用来实现超过机器精度的近似数的所有运算.
FilledSmallCircle 基本算法使用了约400页的 C 源代码.

伪随机数

FilledSmallCircle Random使用Wolfram法则30细胞自动生成元处理整数.
FilledSmallCircle 它使用Marsaglia-Zaman借位减法生成实数.

数论函数

FilledSmallCircle GCD 使用Jebelean-Weber加速GCD算法,加上一个由Euclid算法与一个基于2的幂循环排除算法组合而成的算法.
FilledSmallCircle PrimeQ 首先使用小素数检测整除性,然后使用2进制和3进制强伪素数检测,最后使用一个Lucas测试检测.
FilledSmallCircle 至1997为止,该过程仅对 证明是正确的,并且可以猜想的是,对于更大的 ,该过程仍可能判定一个复合数是素数.
FilledSmallCircle NumberTheory`PrimeQ`包中包含了一个较慢的算法,该算法被证明对所有的 都是正确的.它能对是否是素数返回一个明确认证.
FilledSmallCircle FactorInteger通过试除法和使用Pollard p-1,Pollard rho和连续分式法实现在除去小素数之间的转化.
FilledSmallCircle NumberTheory`FactorIntegerECM`包包括了适于对某些很大的整数的因数分解的椭圆曲线方法.
FilledSmallCircle PrimePrimePi使用稀疏存储和筛选.对于较大的n,PrimePi使用基于素数密度的渐进估计的Lagarias Miller Odlyzko算法,并被转换给出Prime.
FilledSmallCircle LatticeReduce使用Lenstra Lenstra Lovasz网格缩减算法.
FilledSmallCircle 为了找到所要求的项,ContinuedFraction使用修正Lehmer间接法,并通过重新自分块和贪心法来减少每一步所必需的数值精确度.
FilledSmallCircle ContinuedFraction使用循环关系为无理二次函数寻找周期连续分段.
FilledSmallCircle FromContinuedFraction使用由分块和贪心法优化的迭代矩阵乘法.

复合函数

FilledSmallCircle 大部分复合函数使用稀疏缓存和递归法.
FilledSmallCircle Factorial, Binomial及其相关函数使用一个分块和贪心算法来平衡乘积中数位个数.
FilledSmallCircle Fibonacci[n]使用了基于n的二进制序列的迭代方法.
FilledSmallCircle 对较小的n,PartitionsP[n]使用Euler 五边形公式,而对较大的n,则使用非递归的Hardy Ramanujan Rademacher方法.
FilledSmallCircle ClebschGordan及其相关函数使用了广义超几何分布序列.

初等超越函数

FilledSmallCircle 指数和三角函数使用Taylor级数,参数加倍的稳定递归,以及函数关系.
FilledSmallCircle 对数和反三角函数使用Taylor级数以及函数关系.

数学常数

FilledSmallCircle 常数的值在计算后就存储.
FilledSmallCircle 二进位分裂被用来对常数计算进行细分.
FilledSmallCircle Pi使用Chudnovsky公式计算到10,000,000位之后.
FilledSmallCircle E通过它的级数展开进行计算.
FilledSmallCircle EulerGamma使用Brent McMillan算法.
FilledSmallCircle Catalan通过一个线性收敛的Ramanujan和进行计算.

特殊函数

FilledSmallCircle 对机器精度,大部分特殊函数使用Mathematica所导出的有理极小极大近似.下面的注释主要应用到任意精确度.
FilledSmallCircle 一般来说,对多项式和超几何函数,正交多项式使用稳定递归公式.
FilledSmallCircle Gamma使用递归,函数方程和Binet渐进公式.
FilledSmallCircle 不完全gamma和beta函数使用超几何级数及连分式.
FilledSmallCircle PolyGamma使用了Euler-Maclaurin和式,函数方程和递归.
FilledSmallCircle PolyLog使用Euler-Maclaurin公式,不完全gamma函数的展开和数值积分.
FilledSmallCircle Zeta及其相关函数使用Euler-Maclaurin公式以及函数方程.在临界区附近它们也使用 Riemann Siegel公式.
FilledSmallCircle StieltjesGamma使用用Keiper算法,该算法基于zeta函数的一个积分表示的数值积分.
FilledSmallCircle 误差函数和与指数积分相关的函数都使用不完全gamma函数进行求值.
FilledSmallCircle 逆误差函数使用二分法搜索和推广的高阶Newton法.
FilledSmallCircle 贝塞尔函数使用级数和渐进展开式.对于整数次,有些也使用稳定向前递归格式.
FilledSmallCircle 超几何函数使用函数方程,稳定循环法,级数展开和渐进级数展开方法.而且Nsum和与NIntegrate有时也可以使用.
FilledSmallCircle ProductLog使用始于有理近似和渐进展开的高阶牛顿法.
FilledSmallCircle 椭圆积分使用递减高斯变换来求值.
FilledSmallCircle 椭圆theta函数使用以递归计算级数项的级数和.
FilledSmallCircle 另外一些椭圆函数主要使用代数几何平均数方法.
FilledSmallCircle Mathieu函数使用傅立叶级数.Mathieu特征函数使用广义Blanch-牛顿法.

数值积分

FilledSmallCircleMethod->Automatic时,NIntegrate在一维情形下使用GaussKronrod,而在其它的情形下使用MultiDimensional.
FilledSmallCircle 如果直接给出了MaxPoints设置,NIntegrate缺省使用Method->QuasiMonteCarlo.
FilledSmallCircle GaussKronrod: 基于Kronrod点计算的带误差估计的自适应Gaussian积分.
FilledSmallCircle DoubleExponential:非自适应双指数积分.
FilledSmallCircle Trapezoidal:基本梯形法.
FilledSmallCircle Oscillatory:用来实现包括三角函数和Bessel函数的积分的变换.
FilledSmallCircle MultiDimensional:自适应Genz Malik算法.
FilledSmallCircle MonteCarlo:非自适应Monte Carlo方法.
FilledSmallCircle QuasiMonteCarlo:非自适应Halton Hammersley Wozniakowski算法.

数值加法和乘法

FilledSmallCircle 如果比率测试比不为1,则使用Wynn epsilon算法求解一系列部分和或部分积.
FilledSmallCircle 否则,则使用Euler-Maclaurin公式用于IntegrateNIntegrate.

数值微分方程

FilledSmallCircleMethod->Automatic时,NDSolve可选择非刚性的Adams法和刚性Gear方法,它们都基于LSODE.
FilledSmallCircle Adams:1-12阶的隐式Adams方法.
FilledSmallCircle Gear:1-5阶的向后差分格式方法.
FilledSmallCircle RungeKutta:非刚性方程的Fehlberg 4-5阶Runge-Kutta方法.
FilledSmallCircle 对线性边值问题使用Gel'fand Lokutsiyevskii追赶法.
FilledSmallCircle 对1+1维PDEs问题使用直线方法.
FilledSmallCircle NDSolve的代码约有500页.

近似方程求解和最小值

FilledSmallCircle 多项式求根的实现基于Jenkins Traub算法.
FilledSmallCircle 对于稀疏线性系统,SolveNSolve使用一些有效的数值方法,这些方法主要基于带Markowitz乘积的Gauss因数分解(约250页代码).
FilledSmallCircle 对代数方程组,NSolve首先使用一个有效的单项式排序计算出一个数值的Grobner基,然后使用特征值方法来确定根的数值解.
FilledSmallCircle FindRoot使用了减幅Newton法,正割法和Brent方法.
FilledSmallCircleMethod->Automatic时,FindMinimum使用了基于Brent的不同方法:在一维上时使用共轭梯度法,而在多维时使用修正Powell方法.
FilledSmallCircle 如果极小化函数是一个平方式的和, FindMinimum则使用Levenberg-Marquardt方法(Method->LevenbergMarquardt).
FilledSmallCircleMethod->Newton时,FindMinimum使用Newton法.而在Method->QuasiNewton时,FindMinimum使用BFGS形式的拟牛顿法.
FilledSmallCircle ConstrainedMax及其相关函数使用改进单纯形法.

数据处理

FilledSmallCircle Fourier使用带长度素因子分解的FFT算法.当素数因子很大时, 则使用快速卷积方法来保持 的渐进复杂度.
FilledSmallCircle 对实输入,Fourier使用一个实变换方法.
FilledSmallCircle 如果可能,ListConvolveListCorrelate使用FFT算法.对于准确的整数输入,则需要计算足够多的数位以得出准确的整数结果.
FilledSmallCircle InterpolatingFunction使用离散差分来构造Lagrange或者Hermite插值多项式.
FilledSmallCircle Fit 通过计算构造矩阵伪逆的相应向量的乘积来实现.

近似数值线性代数

FilledSmallCircle 机器精度矩阵通常被转化为一个特殊的内部表示来进行处理.
FilledSmallCircle 在适当的时候会使用与LINPACK,EISPACK和LAPACK等类似的算法.
FilledSmallCircle LUDecomposition, Inverse, RowReduceDet使用带主元的Gaussian消去法.LinearSolve使用同样的方法,和高精度数的迭代改进.
FilledSmallCircle SingularValues使用带Givens变换的QR算法.PseudoInverseNullSpace则基于SingularValues.
FilledSmallCircle QRDecomposition使用Householder变换.
FilledSmallCircle SchurDecomposition使用QR迭代.
FilledSmallCircle MatrixExp使用Schur分解.

准确数值线性代数

FilledSmallCircle InverseLinearSolve使用基于数值近似的有效行变换法.
FilledSmallCircleModulus->n时,则使用模Gaussian消元法.
FilledSmallCircle Det使用模方法和行变换,通过使用Chinese Remainder Theorem构造出结果.
FilledSmallCircle Eigenvalues通过对特征多项式进行插值来实现.
FilledSmallCircle MatrixExp使用Putzer方法或者Jordan分解.