CRAN任务视图:数值数学
这个关于数值数学的任务视图列出了R包和函数,它们对于解决线性代数和分析中的数值问题很有用。这表明R是一个可行的计算环境,用于实现和应用数值方法,也不属于统计学领域。
任务视图将不涵盖微分方程、优化问题和求解器,或在时间序列上运行的包和函数,因为所有这些主题都在相应的任务视图中得到了广泛的处理微分方程,优化、和时间序列所有这些任务视图将为R中的数值数学领域提供一个很好的选择。这个高性能计算task视图及其许多用于并行计算的链接可能也很有趣。
目录
创建任务视图是为了提供主题的概述。如果缺少某些软件包或需要更详细地处理数值数学中的某些主题,请通过电子邮件或在上面链接的GitHub存储库中提交问题或请求与维护人员联系。
数值线性代数
由于统计学在很大程度上是基于线性代数的,许多数值线性代数例程出现在R中,有些只是隐式的。显式可用函数的例子有向量和矩阵运算、矩阵(QR)分解、求解线性方程、特征值/-向量、奇异值分解或最小二乘近似。
- 推荐的程序包矩阵提供稠密矩阵和稀疏矩阵的类和方法以及对它们的操作,例如Cholesky和Schur分解、矩阵指数或稀疏矩阵的范数和条件数。
- 推荐的套餐质量加上矩阵的广义(Penrose)逆和零空间。
- 矩阵指数函数计算平方矩阵的指数、对数和平方根,也计算矩阵或Frechet导数的幂。
expm()
优先于中具有相同名称的函数矩阵.
- SparseM(备用)提供了稀疏矩阵的类和方法,以及用于解决稀疏线性代数中的线性和最小二乘问题
- 包裹rmumps泵为MUMPS库提供了一个包装器,使用稀疏直接求解器求解大型线性方程组。
- 圣人支持求解(密集和稀疏)大型线性方程组的例程;Eigen C++库中的直接和迭代解算器可用,包括Cholesky、LU、QR和Krylov子空间方法。
- Rlinsolve公司是稀疏线性方程组的迭代求解器集合;提供了雅可比(Jacobi)或高斯-赛德尔(Gauss-Seidel)等平稳迭代解算器以及非平稳(Krylov子空间)方法。
- 奇异值分解为奇异值分解(SVD)和特征值/特征向量计算的最新实现提供了R绑定。包裹厄尔巴将计算大型矩阵的近似奇异值/向量。
- 包裹PRIMME公司接口PRIMME,一个用于计算实对称或复厄米矩阵的特征值和特征向量的C库。它将找到最大、最小或内部特征值/奇异值,并应用预处理来加速收敛。
- 这个盖根包计算矩阵对和QZ(广义Schur)分解的广义特征值和向量。
- 包裹rARPACK(重新确认)是ARPACK库的包装器,通常仅用于计算少数特征值/向量,例如,少数最大特征值。
- 包裹R光谱为大规模特征值分解和SVD问题连接“Spectra”库。
- 光学反射镜使用线性代数的初等方法(高斯、LU、CGM、乔勒斯基)求解线性系统。
- 包裹mbend(姆本德)使用加权和未加权方法将非正定(对称)矩阵弯曲为正定矩阵。
- 矩阵(matrixcalc)包含矩阵计算、特殊矩阵和矩阵属性测试的函数集合,例如(半)正定性;主要用于教学和研究目的
- 材质库包含用于教授和学习多元统计方法中使用的矩阵线性代数的矩阵函数集合;主要用于使用R学习矩阵代数思想的教程目的。
- 包裹洋葱包含操作四元数和八元数的例程(实数上的赋范除法代数);四元数可以用于处理三维空间中的旋转。
- 包装RcppArmadillo公司和RcppEigen基因支持C++模板库“Armadillo”的集成用C++编写并用R集成的线性代数应用程序的特征卢比性能和易用性。
特殊功能
R中有许多特殊的数学函数,特别是对数和指数、三角函数和双曲函数,或贝塞尔函数和伽玛函数。提供的包中提供了更多特殊功能。
- 包裹全球供应链为“GNU科学图书馆”提供了一个接口,其中包含许多特殊函数的实现,例如Airy和Bessel函数、椭圆和指数积分、超几何函数、Lambert的W函数等。RcppGSL公司使用“Rcpp”中的概念,在“GSL”数据结构和R之间提供易于使用的接口。
- 对于实数和复数,艾里函数和贝塞尔函数也在包中计算贝塞尔,对于大参数具有近似值。
- 包裹普拉克马包括特殊函数,如误差函数和逆函数、不完全和复伽马函数、指数积分和对数积分、菲涅耳积分、多伽马函数以及Dirichlet和Riemann-zeta函数。
- 超几何(和广义超几何)函数的计算超地理学,包括转换公式和参数的特殊值。
- HypergeoMat公司(已存档)通过Koev和Edelman算法的C++实现来评估矩阵自变量的超几何函数。
- 椭圆函数和模块化函数在包装中可用椭圆形例如,Weierstrass P函数和Jacobiθ函数。有一些工具可以可视化复杂的函数。
- 雅各比评估Jacobiθ和相关函数:Weierstrass椭圆函数、Weiersstrass sigma和zeta函数、Klein j函数、Dedekind eta函数、lambda模函数、Jacobi椭圆函数、Nevilleθ函数、Eisenstein级数。支持变量的复数值。
- 卡尔森计算卡尔森椭圆积分和不完全椭圆积分(带compex参数)。
- 包裹支出包装GNU科学库中的C函数以计算指数积分和不完整的Gamma函数,包括其第一个参数的负值。
- 福列林使用快速傅里叶变换计算一个和两个变量函数的傅里叶积分。
- 对数OfGamma使用近似值计算较大值的Gamma函数的自然对数。
- 包裹拉姆W实现Lambert W函数的两个实值分支(使用Rcpp)。
多项式
基于Jenkins-Traub算法,以R为基数的函数polyroot()确定多项式的所有零点。使用时,线性回归函数lm()可以执行多项式拟合聚乙烯()
在模型公式中(带选项原始=真
).
- 包装多边形F(推荐)和多项式为操纵一元多项式提供类似的功能,如计算多项式(霍纳方案)或求其根。”PolynomF’生成正交多项式并提供图形显示功能。
- 多矩阵(基于‘polynom’)实现了基本的矩阵运算,从而为多项式矩阵的操作提供了基础设施。
- 包裹单体聚合物应用不同的算法将一元多项式拟合到给定数据。
- 对于多元多项式,包多极提供了各种工具来操作和组合这些多个变量的多项式。
- 包裹mpoly公司促进了对多元多项式的符号操作,包括对多项式的基本微分运算。
- 最有价值球员使用mpoly包中的打印和强制方法,可以快速操作符号多元多项式,但速度有所提高。
- 包裹正多边形由一组函数组成,用于构造正交多项式及其递推关系,其中包括切比雪夫多项式、埃尔米特多项式和勒让德多项式,以及球面多项式和超球面多项式。
- Jack多项式、带状多项式和Schur多项式的符号计算和评估在软件包中提供千斤顶.
- R包中的自由代数自由(freealg)处理具有非交换不定项的多元多项式。
- 包裹喷雾提供稀疏多维数组的功能,解释为多元多项式。
- 包裹q喷雾提供了带有理系数的多元多项式的符号计算和评估,以及一些Groebner基计算。
- 包裹最小值x近似值实现了Remez(1962)的多项式极大极小逼近算法和Cody等人(1968)的有理极小极大逼近算法。
差异化和整合
D()
和派生()
在基数R中象征性地计算简单表达式的导数。功能集成()
实现了一种在R中对一元函数进行数值积分的方法。该方法采用自适应高斯-克罗恩积分,在一定程度上可以处理奇异性和无界域。
- 包裹派生提供了R中符号微分的扩展解决方案;用户可以添加自定义派生规则,函数的输出将再次成为可执行函数。
- 数字派生为R中的数值微分设定标准,提供数值梯度、雅可比矩阵和黑森矩阵,通过简单的有限差分、理查森外推或高精度的复杂步长方法计算。
- 包裹二重的通过使用对偶数实现自动微分(对于单变量函数);对于数学函数,返回其值及其精确的一阶导数。
- 包裹自动鉴别(在Github上)为Julia包ForwardDiff.jl和ReverseDiff.jl提供了一个R包装器,用于自动区分本机R函数。
- 普拉克马包含计算数值导数的函数,包括Richardson外推或复杂步长。
fderiv()
计算高阶的数值导数。普拉克马还有几个数值积分例程:自适应Lobatto求积、Romberg积分、Newton-Coutes公式、Clenshaw-Curtis求积规则。积分2()
集成二维函数,也适用于极坐标或具有可变区间限制的域。
- 体积是一个用于n维空间超立方体上自适应多元积分的软件包,分别基于C库“cubature”。用于基于库“Cuba”的确定性和Monte-Carlo集成。函数“cubintegrate()”包装所提供的所有集成方法。
- 包裹高斯夸克包含执行高斯求积的函数集合,其中包括切比雪夫、埃尔米特、拉盖尔和勒让德求积规则,在每种情况下显式返回节点和权重。功能
高斯夸德()
包装内随机反演做类似的工作。
- GramQuad公司允许基于Gram多项式进行数值积分。
- 包裹fastGHQuad(快速GHQuad)提供快速卢比-基于(自适应)高斯-海姆特求积的实现。
- mvQuad(四维)提供了生成可用于多元集成的多元网格的方法。这些网格将基于不同的求积规则,如Newton-Coutes或Gauss求积公式。
- 包裹稀疏网格提供了在高维空间中进行多元积分的另一种方法。它创建了可与求积规则一起使用的稀疏n维网格。
- 包裹球形体积雇佣体积在n维空间中积分单位球面和球上的函数;简单体积提供了在n维空间中对m维单形上的函数进行积分的方法。这两个包都包含多项式的精确方法。
- 包裹polyCub公司持有一些二维多边形域上数值积分的例程。
- 包裹帕德计算Pade近似的分子和分母系数,给出足够长的泰勒级数系数。
- 微积分为高维数值和符号演算提供了有效的函数,包括精确的高阶导数、泰勒级数展开、微分算子和正交坐标系中的蒙特卡罗积分。
- 特征从功能数据中提取特征,例如一阶和二阶导数,或临界点的曲率,而根源极端影响查找由离散点定义的曲线的根、极值和拐点。
插值和近似
Base R提供功能近似()
对于常量和线性插值,以及花键()
用于三次(Hermite)样条插值,而光滑花键()
执行三次样条曲线近似。基本包样条线在函数中创建周期插值样条线周期样条线()
.
- 可以使用秋葵包裹:
aspline()
对于单变量数据,双立方()
或interp()
用于二维矩形域上的数据。(此软件包是根据ACM许可证分发的,不可用于商业用途。)
- 包裹信号包含多个过滤器平滑离散数据,特别是
对讲机1()
对于线性、样条和三次插值,pchip()
对于分段三次Hermite插值,以及sgolay()
用于Savitzky-Glay平滑。
- 包裹普拉克马在中提供重心拉格朗日插值(1维和2维)
巴里拉格()
相应的。barylag2d()
,1-尺寸。秋葵akimaInterp()
,以及用有理函数插值和逼近数据,即在奇点存在的情况下ratinterp()
和理性()
.
- 这个插入该软件包在规则和不规则网格上提供了二维数据插值,可以是线性的,也可以使用样条曲线。目前实现了分段线性插值部分。(其目的是为获得许可的ACM提供免费替换
akima::interp
和tripack::tri.mesh
功能。)
- 包裹花键2提供了B样条、M样条、I样条、凸样条(C样条)、周期样条、自然三次样条、广义Bernstein多项式的基矩阵及其积分(除C样条外)和通过闭合形式递归公式导出的导数。
- B样条使用B样条曲线创建插值和拟合1D数据的函数。
fitsmbsp()
可以优化节点位置并施加单调性和积极性约束。生成的函数可以与数据库管理程序()
或与集成ibsp()
.
- 三折对于不规则间距数据的三角剖分,是一个受约束的二维Delaunay三角剖分包,它提供了三角剖分和不规则间距的数据的Voronoi马赛克生成。
烧结()
包装内斯汀帕克应用Stineman算法实现了基于分段有理函数的插值。在指定点单调变化的区域中,插值函数将是单调的。
舒马克()
包装内舒马克实现形状保持样条,保证是单调的。凹或凸如果数据是单调的、凹的或凸的。
- ADPF公司使用最小二乘多项式回归和统计测试来改进Savitzky-Glay平滑。
- 包裹圆锥形提供了几种(几何和代数)算法,用于拟合圆、椭圆和圆锥曲线。
根查找和固定点
uniroot()
实现Brent-Decker算法是R中求一元函数根的基本例程。在几个提供的包中有对分算法的实现。对于更高精度的寻根,有以下功能unirootR()
在多精度软件包中人民币。要查找单变量和多变量函数的根,请参阅以下软件包:
- 包裹信息技术计划实现插值、截断、投影(ITP)根查找算法。用户提供一个单变量(1-dim.)函数和函数值具有不同符号的区间的端点。
- 包裹rootSolve(根解算)包含函数
多根()
求非线性(和线性)方程组的根;它还包含一个扩展uniroot.all()
它试图找到一个区间中一元函数的所有零点(二次零点除外)。
- 对于求解非线性方程组BB公司包中提供了Barzilai-Borwein光谱方法
健全()
,包括中的无衍生变体dfsane()
,以及多部分功能和敏感性分析。
- 包裹nleqslv公司交替使用Broyden或Newton方法求解非线性方程组,并辅以行搜索或信赖域等策略。
- ktsolve解决方案定义了一个通用接口,用于使用
BB公司
或nleqslv公司
.
- 固定点提供了查找函数不动点向量的算法,包括安德森加速度、ε外推方法或最小多项式方法。
- 包裹道教实现DAAREM方法以加速任何平滑、单调、缓慢的不动点迭代的收敛。
- 软件包中提供了加速平滑压缩映射中单调慢序列收敛的算法,如期望最大化(EM)算法方形相应的。涡轮发动机.
离散数学与数论
计算数论可用的函数不多。注意,双精度整数可以精确表示为2^53 - 1
,超过了多精度软件包的限制,例如gmp公司需要,请参见下文。
- 包裹数字提供了因子分解、素数、双素数、本原根、模逆、扩展GCD等函数。包括一些数论函数,如除数函数或Euler的Phi函数。
- 控制(contfrac)包含用于计算连分式和部分收敛的各种实用程序。contFracR公司将数字转换为连续分数,然后再转换回来。提供了佩尔方程的求解器。
- 魔术创建并研究魔法方块和超立方体,包括操作和分析任意维数组的函数。
- 包裹自由群提供操作自由群元素的功能,包括并置、反转、标量乘法、幂运算和Tietze形式。
- 这个分区包枚举整数的可加分区,包括限制分区和不相等分区。
- 排列将置换视为有限集的可逆函数,并包含对它们的若干数学运算。
- 包裹组合生成一组元素(即向量)的特定长度的所有排列或所有组合;它还计算二项式系数。
- 包裹安排为排列、组合和分区提供生成器和迭代器。迭代器允许用户以快速且节省内存的方式生成排列。排列和组合可以在有/无替换的情况下绘制,并支持多集合。
- 包裹设置6(在Github上)实现(作为R6类)多种形式的数学集(集、元组、间隔),并允许对其进行标准操作(并集、乘积、差异等)。
- RcppAlgos公司提供灵活的函数,用于生成带或不带约束的向量组合或排列;扩展包RcppBigIntAlgos其特征是一种用于完全分解大整数的二次筛算法。
- 包裹Zseq公司生成已知整数序列;gmp包用于计算任意大的数字。每个函数在其帮助页面上都有一个指向在线整数序列百科全书中相应条目的超链接(组织环境信息系统).
- 包裹素数提供了识别和生成质数的快速(Rcpp)函数。而且主要因素使用素因式分解进行计算,例如降低大因式的比率。
多精度和符号计算
- R中通过软件包提供多精度算法gmp公司与GMP C库的接口。例如整数的因式分解、概率质数检验或对大有理数的运算——这些都可以求解线性方程组。
- 通过包提供多种精度浮点操作和功能人民币使用MPFR和GMP库。包括特殊的数字和一些特殊的函数,以及在任意精度下进行寻根、积分和优化的例程。
- 布罗丁纳格通过保持对数加上一个标志来处理非常大的数字。(一个优秀的小插曲解释了如何使用S4方法完成这一点。)
- VeryLargeIntegers(最大整数)实现了一个允许存储和管理任意大整数的多精度库;它包括概率素性测试和因子分解算法。
- 比格纳姆是一个用于50位小数精度的任意精度整数和浮点数的软件包。该软件包使用“Boost”。Multiprecision的C++库,专门设计用于处理R包的“tidyverse”集合。
- 包裹Ryacas公司与计算机代数系统“Yacas”接口;它支持微积分和线性代数中的符号和任意精度计算。
- 包裹加拉加斯(基于“网状”)访问符号代数系统“SymPy”;支持线性代数和微积分中的符号运算,如特征值、导数、积分、极限等,计算特殊函数或求解方程组。
- 包裹西门宁提供“SymEngine”的接口,这是一个用于快速符号计算的C++库,例如操作数学表达式、查找精确导数、执行符号矩阵计算或求解常微分方程(数值)。
- 包裹边缘为自由强大的计算机代数系统提供接口马克西玛。结果可以在LaTeX或MathML中输出,并将直接显示2D和3D绘图。Maxima代码块可以包含在“RMarkdown”文档中。
- 包裹平方米为提供持久接口麦考利2,一个支持代数几何和交换代数研究的扩展软件程序。Macauley2必须独立安装,否则云中的Macauley 2进程将被实例化。
- 克利福德为任意维Clifford代数提供了一套例程,并讨论了洛伦兹变换或四元数乘法等特殊情况。
- 包裹韦尔为Weyl代数提供功能,该代数在量子力学中有应用。
- 包裹乔丹提供了使用Jordan代数的功能,Jordan是遵循Jordan恒等式的交换但非结合的代数(x个年)x个x个 = x个(年x个x个).
Python和SAGE接口
Python通过其模块“NumPy”、“SciPy”,“Matplotlib”、“SymPy“和“pandas”,提供了精细高效的数字和图形工具。
- 网状的是Python模块、类和函数的R接口。在R中调用Python时,数据类型会自动转换为等效的Pythone类型;当值从Python返回到R时,它们将被转换回R类型。RStudio团队的这个包是从R调用Python的一种标准。
- 羽毛提供读取和写入羽毛文件的绑定,这是一种专为最大速度设计的轻量级二进制数据存储。这种存储格式也可以在Python、Julia或Scala中访问。
- “pyRserve”是一个Python模块,用于将Pythons连接到运行的R进程Rserve公司作为RPC网关。此R进程可以在远程机器上运行,可变访问和函数调用将通过网络委派。
- 外部Python(和“XRJulia”)基于约翰·钱伯斯XR公司包和他的“扩展R”一书,并允许R与Python的结构化集成。朱莉娅。
SageMath公司是一个基于Python的开放源码数学系统,允许运行R函数,还提供对Maxima、GAP、FLINT等系统的访问,以及更多数学程序。SageMath可以通过Web界面在CoCalc公司.
MATLAB倍频程Julia和其他接口
在解决困难的数值问题时,与MATLAB(商业)或Octave(免费)等数值计算软件的接口将非常重要。不幸的是,目前没有允许从R中调用Octave函数的包。
- 这个matlab软件仿真包包含大约30个简单函数,复制MATLAB函数,使用各自的MATLAB名称,并用纯R实现。
- 包装马蒂奥和R.matlab公司提供了用于读取和写入版本4和5的MAT文件(MATLAB数据格式)的工具。”“R.matlab”还支持与matlab v6进程的单向接口,通过TCP连接发送和检索对象。
Julia是“一种用于数值计算的高级、高性能动态编程语言”,这使得它对R语言中的优化问题和其他要求严格的科学计算非常有趣。
- 朱利亚卡尔提供R和Julia之间的无缝集成;用户可以像调用任何R函数一样调用Julia函数,也可以在Julia环境中调用R函数,这两者都具有合理的自动类型转换。Julia Call笔记介绍了如何使用“JuliaCall”应用Julia函数。
- JuliaConnectoR公司提供了一个面向功能的界面,用于集成Julia和R;导入的Julia函数可以称为R函数;数据结构会自动转换。
- 包裹XR朱莉娅根据约翰·钱伯斯(John M.Chambers)在《扩展R》(Extending R)一书中描述的接口结构,提供了一个从R到Julia语言计算的接口。
Java Math函数可以通过“rjava”或“rscala”接口使用。然后打包公共数学允许调用Apache Commons Mathematics Library的Java JAR文件,这是一个专门用于计算、优化和微分方程所有方面的库。
请注意,商业程序(如MATLAB、Maple或Mathematica)具有调用R函数的功能。
CRAN包
核心: | 体积,矩阵,数字派生,多边形F. |
常规: | ADPF公司,无意识运动,安排,BB公司,贝塞尔,比格纳姆,布罗丁纳格,B样条,微积分,加拉加斯,卡尔森,克利福德,组合,公共数学,圆锥形,控制(contfrac),contFracR公司,道教,派生,二重的,椭圆形,支出,矩阵指数函数,快速GHQuad,羽毛,特征,固定点,福列林,自由(freealg),自由群,高斯夸克,盖根,gmp公司,GramQuad公司,全球供应链,超地理学,插入,厄尔巴,信息技术计划,千斤顶,雅各比,乔丹,JuliaCall公司,JuliaConnectoR公司,ktsolve解决方案,拉姆W,对数OfGamma,平方米,魔术,质量,matlab软件,材质库,矩阵(matrixcalc),mbend(姆本德),最小值x近似值,单体聚合物,mpoly公司,多极,最有价值球员,mvQuad(四维),nleqslv公司,数字,洋葱,optR(操作恢复),正多边形,帕德,分区,排列,polyCub公司,多矩阵,多项式,普拉克马,主要因素,素数,PRIMME公司,q喷雾,R.matlab软件,rARPACK(重新确认),卢比,RcppAlgos公司,RcppArmadillo公司,RcppBigIntAlgos,RcppEigen基因,RcppGSL公司,网状的,边缘,Rlinsolve公司,马蒂奥,人民币,rmumps泵,根源极端影响,rootSolve(根解算),Rserve公司,R光谱,Ryacas公司,圣人,舒马克,信号,简单体积,稀疏网格,SparseM(备用),球形体积,西班牙语2,喷雾,方形,随机反演,斯汀帕克,奇异值分解,西门宁,三折,涡轮电磁阀,VeryLargeIntegers(最大整数),韦尔,XR公司,XR朱莉娅,XRPython公司,Zseq公司. |
已存档: | HypergeoMat公司. |
相关链接
其他资源