函数参考 #

核心函数 #

Function Description
math.config(config: Object): Object 为 math.js 设置配置选项。
math.import(object, override) 从对象或模块导入函数。
math.typed(name, signatures) : function 创建一个 typed-function,它会检查参数的类型,并可以将它们与多个提供的签名进行匹配。

构造函数 #

Function Description
math.bigint(value) 创建一个 bigint 或将字符串、布尔值或单位转换为 bigint。
math.bignumber(x) 创建一个 BigNumber,它可以存储任意精度的数字。
math.boolean(x) 创建一个布尔值或将字符串或数字转换为布尔值。
math.chain(value) 将任何值包装在链式调用中,允许对该值执行链式操作。
math.complex(re, im) 创建一个复数值或将一个值转换为复数值。
math.createUnit(units) 创建一个用户定义的单位并将其注册到 Unit 类型。
math.fraction(value) 创建一个分数或将一个值转换为分数。
math.index(range1, range2, …) 创建一个索引。
math.matrix(x) 创建一个 Matrix。
math.number(value) 创建一个数字或将字符串、布尔值或单位转换为数字。
math.sparse(x) 创建一个 Sparse Matrix。
math.splitUnit(unit, parts) 将一个单位拆分成一个单位数组,这些单位的总和等于原始单位。
math.string(value) 创建一个字符串或将任何对象转换为字符串。
math.unit(x) 创建一个单位。

表达式函数 #

Function Description
math.compile(expr) 解析并编译表达式。
math.evaluate(expr [, scope]) 求值表达式。
math.help(search) 检索有关函数或数据类型的帮助。
math.parse(expr [, scope]) 解析表达式。
math.parser() 创建一个 `math.

代数函数 #

Function Description
math.derivative(expr, variable) 计算解析器节点表示的表达式的导数。
math.leafCount(expr) 给出给定表达式解析树中的“叶节点”数量。叶节点是没有子表达式的节点,本质上是符号或常量。
math.lsolve(L, b) 通过前向替换找到线性方程组的一个解。
math.lsolveAll(L, b) 通过前向替换找到线性方程组的所有解。
math.lup(A) 使用部分主元计算矩阵 LU 分解。
math.lusolve(A, b) 求解线性系统 A * x = b,其中 A 是一个 [n x n] 矩阵,b 是一个 [n] 列向量。
math.lyap(A, Q) 求解连续时间 Lyapunov 方程 AP+PA’+Q=0 中的 P,其中 Q 是输入矩阵。
math.polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff) 找到具有实数或复数系数的多项式的不同根的数值。
math.qr(A) 计算矩阵 QR 分解。
math.rationalize(expr) 将可有理化的表达式转换为有理分数。
math.resolve(expr, scope) resolve(expr, scope) 将变量节点替换为其作用域值。
math.schur(A) 对实数矩阵 A 进行实数 Schur 分解 A = UTU',其中 U 是正交矩阵,T 是上拟三角形矩阵。
math.simplify(expr) 简化表达式树。
math.simplifyConstant(expr) simplifyConstant() 接受一个 mathjs 表达式(可以是表示解析树的 Node,也可以是字符串,它会被解析以生成一个节点),并用该子表达式的计算值替换其完全由常量组成的任何子表达式。
math.simplifyCore(expr) simplifyCore() 执行单次简化,适用于需要极致性能的应用。
math.slu(A, order, threshold) 使用完全主元计算稀疏矩阵 LU 分解。
math.sylvester(A, B, C) 求解实值 Sylvester 方程 AX+XB=C 中的 X,其中 A、B 和 C 是尺寸合适的矩阵,A 和 B 是方阵。
math.symbolicEqual(expr1, expr2) 尝试确定两个表达式是否在符号上相等,即。
math.usolve(U, b) 通过后向替换找到线性方程组的一个解。
math.usolveAll(U, b) 通过后向替换找到线性方程组的所有解。

算术函数 #

Function Description
math.abs(x) 计算数字的绝对值。
math.add(x, y) 将两个或多个值相加,x + y
math.cbrt(x [, allRoots]) 计算一个值的立方根。
math.ceil(x) 将值向上取整到正无穷大。如果 x 是复数,则实部和虚部都向上取整到正无穷大。
math.cube(x) 计算一个值的立方,x * x * x
math.divide(x, y) 将两个值相除,x / y
math.dotDivide(x, y) 逐元素地除以两个矩阵。
math.dotMultiply(x, y) 逐元素地乘以两个矩阵。
math.dotPow(x, y) 逐元素地计算 x 的 y 次幂。
math.exp(x) 计算一个值的指数。
math.expm1(x) 计算指数值减 1 的值。
math.fix(x) 将值向零取整。
math.floor(x) 将值向下取整到负无穷大。
math.gcd(a, b) 计算两个或多个值或数组的最大公约数。
math.hypot(a, b, …) 计算一组值的斜边。
math.invmod(a, b) 计算 a 模 b 的(模)乘法逆。
math.lcm(a, b) 计算两个或多个值或数组的最小公倍数。
math.log(x [, base]) 计算一个值的对数。
math.log10(x) 计算一个值的 10 为底的对数。
math.log1p(x) 计算 value+1 的对数。
math.log2(x) 计算一个值的 2 为底的对数。
math.mod(x, y) 计算模,即整数除法的余数。
math.multiply(x, y) 将两个或多个值相乘,x * y
math.norm(x [, p]) 计算数字、向量或矩阵的范数。
math.nthRoot(a) 计算一个值的 n 次根。
math.nthRoots(x) 计算一个值的 n 次根。
math.pow(x, y) 计算 x 的 y 次幂,x ^ y
math.round(x [, n]) 将值四舍五入到最近的整数。
math.sign(x) 计算值的符号。
math.sqrt(x) 计算一个值的平方根。
math.square(x) 计算一个值的平方,x * x
math.subtract(x, y) 将两个值相减,x - y
math.unaryMinus(x) 反转值的符号,应用一元负运算。
math.unaryPlus(x) 一元加运算。
math.xgcd(a, b) 计算两个值的扩展欧几里得公约数。

位函数 #

Function Description
math.bitAnd(x, y) 对两个值进行按位 AND 运算,x & y
math.bitNot(x) 对值进行按位 NOT 运算,~x
math.bitOr(x, y) 对两个值进行按位 OR 运算,x | y
math.bitXor(x, y) 对两个值进行按位 XOR 运算,x ^ y
math.leftShift(x, y) 将值 x 向左逻辑移位 y 位,x << y
math.rightArithShift(x, y) 将值 x 向右算术移位 y 位,x >> y
math.rightLogShift(x, y) 将值 x 向右逻辑移位 y 位,x >>> y

组合数学函数 #

Function Description
math.bellNumbers(n) 贝尔数计算一个集合的划分数量。
math.catalan(n) 卡特兰数枚举了许多不同类型的组合结构。
math.composition(n, k) 组合数计算 n 的 k 个部分。
math.stirlingS2(n, k) 第二类斯特林数,计算将 n 个有标签对象划分为 k 个非空无标签子集的方法数。

复数函数 #

Function Description
math.arg(x) 计算复数的辐角。
math.conj(x) 计算复数的复共轭。
math.im(x) 获取复数的虚部。
math.re(x) 获取复数的实部。

几何函数 #

Function Description
math.distance([x1,y1], [x2,y2]) 计算:N 维空间中两点之间的欧几里得距离。
math.intersect(endPoint1Line1, endPoint2Line1, endPoint1Line2, endPoint2Line2) 计算二维或三维空间中两条线的交点,以及三维空间中一条线和一个平面的交点。

逻辑函数 #

Function Description
math.and(x, y) 逻辑 and
math.not(x) 逻辑 not
math.nullish(x, y) Nullish coalescing operator (??)。
math.or(x, y) 逻辑 or
math.xor(x, y) 逻辑 xor

矩阵函数 #

Function Description
math.column(value, index) 从 Matrix 返回一列。
math.concat(a, b, c, … [, dim]) 连接两个或多个矩阵。
math.count(x) 计算矩阵、数组或字符串的元素数量。
math.cross(x, y) 计算三维空间中两个向量的叉积。
math.ctranspose(x) 转置并共轭复数矩阵。
math.det(x) 计算矩阵的行列式。
math.diag(X) 创建对角矩阵或检索矩阵的对角线。当 x 是向量时,将返回一个在对角线上带有向量 x 的矩阵。
math.diff(arr) 创建一个新的矩阵或数组,包含给定数组元素之间的差值。可选的 dim 参数允许您指定要计算差值的维度。如果未传递维度参数,则假定为维度 0。维度在 JavaScript 中为零基,在解析器中为一基,可以是数字或 bignumber。数组必须是“矩形的”,例如 [1, 2]。如果传递的是矩阵,则返回矩阵,否则所有矩阵都转换为数组。
math.dot(x, y) 计算两个向量的点积。
math.eigs(x, [prec]) 计算方阵的特征值,可选特征向量。
math.expm(x) 计算矩阵指数,expm(A) = e^A。
math.fft(arr) 计算 N 维傅里叶变换。
math.filter(x, test) 过滤数组或一维矩阵中的项。
math.flatten(x) 将多维矩阵展平成一维矩阵。
math.forEach(x, callback) 迭代矩阵/数组的所有元素,并执行给定的回调函数。
math.getMatrixDataType(x) 查找矩阵或数组中所有元素的类型,例如,如果所有项都是数字,则为“number”,如果所有值都是复数,则为“Complex”。
math.identity(n) 创建一个 m x n 或 n x n 的二维单位矩阵。
math.ifft(arr) 计算 N 维傅里叶逆变换。
math.inv(x) 计算方阵的逆。
math.kron(x, y) 计算两个矩阵或向量的克罗内克积。
math.map(x, callback) 创建一个新的矩阵或数组,其中包含在给定矩阵/数组的每个条目上执行的回调函数的结果。
math.mapSlices(A, dim, callback) 沿矩阵或数组的给定轴应用一个将数组映射到标量的函数。
math.matrixFromColumns(…arr) 从向量作为单独的列创建密集矩阵。
math.matrixFromFunction(size, fn) 通过在每个索引处评估生成函数来创建矩阵。
math.matrixFromRows(…arr) 从向量作为单独的行创建密集矩阵。
math.ones(m, n, p, …) 创建一个填充了 1 的矩阵。
math.partitionSelect(x, k) 基于分区的数组或一维矩阵选择。
math.pinv(x) 计算矩阵的摩尔-彭罗斯逆。
math.range(start, end [, step]) 创建一个包含值范围的矩阵或数组。
math.reshape(x, sizes) 重塑多维数组以适应指定的维度。
math.resize(x, size [, defaultValue]) 调整矩阵大小。
math.rotate(w, theta) 将 1x2 向量逆时针旋转给定的角度。将 1x3 向量逆时针旋转给定的角度,绕给定的轴。
math.rotationMatrix(theta) 为给定的角度(以弧度为单位)创建一个二维逆时针旋转矩阵(2x2)。
math.row(value, index) 从 Matrix 返回一行。
math.size(x) 计算矩阵或标量的大小。
math.sort(x) 对矩阵中的项进行排序。
math.sqrtm(A) 计算方阵的主平方根。
math.squeeze(x) 挤压矩阵,移除矩阵的内部和外部单例维度。
math.subset(x, index [, replacement]) 获取或设置矩阵或字符串的子集。
math.trace(x) 计算矩阵的迹:方阵主对角线上的元素之和。
math.transpose(x) 转置矩阵。
math.zeros(m, n, p, …) 创建一个填充了 0 的矩阵。

数值函数 #

Function Description
math.solveODE(func, tspan, y0) 常微分方程的数值积分。提供两种可变步长方法:- “RK23”:Bogacki–Shampine 方法 - “RK45”:Dormand-Prince 方法 RK5(4)7M(默认)。参数预期如下。

概率函数 #

Function Description
math.bernoulli(n) 返回第 n 个伯努利数,对于正整数 n
math.combinations(n, k) 计算从 n 个可能性中选择 k 个无序结果的方法数。
math.combinationsWithRep(n, k) 计算从 n 个可能性中选择 k 个无序结果的方法数,允许单个结果重复多次。
math.factorial(n) 计算值的阶乘。阶乘只支持整数作为参数。
math.gamma(n) 使用 Lanczos 近似法计算小值的伽马函数,并使用扩展的斯特林近似法计算大值。
math.kldivergence(x, y) 计算两个分布之间的 Kullback-Leibler (KL) 散度。
math.lgamma(n) 对于实数、正数和复数,使用 Lanczos 近似法计算伽马函数的对数,对于数字使用 Lanczos 近似法,对于复数使用 Stirling 级数。
math.multinomial(a) 多项式系数计算选择 a1, a2, ... 的方法数。
math.permutations(n [, k]) 计算从 n 个元素的集合中获取一个有序的 k 个元素的子集的方法数。
math.pickRandom(array) 从一维数组中随机选择一个或多个值。
math.random([min, max]) 使用均匀分布返回一个大于或等于 min 且小于 max 的随机数。
math.randomInt([min, max]) 使用均匀分布返回一个大于或等于 min 且小于 max 的随机整数。

关系函数 #

Function Description
math.compare(x, y) 比较两个值。
math.compareNatural(x, y) 以确定性的、自然的方式比较任何类型的两个值。
math.compareText(x, y) 按字母顺序比较两个字符串。
math.deepEqual(x, y) 逐元素测试两个矩阵是否相等。
math.equal(x, y) 测试两个值是否相等。
math.equalText(x, y) 检查两个字符串是否相等。
math.larger(x, y) 测试值 x 是否大于 y。
math.largerEq(x, y) 测试值 x 是否大于或等于 y。
math.smaller(x, y) 测试值 x 是否小于 y。
math.smallerEq(x, y) 测试值 x 是否小于或等于 y。
math.unequal(x, y) 测试两个值是否不相等。

集合函数 #

Function Description
math.setCartesian(set1, set2) 创建两个(多)集合的笛卡尔积。
math.setDifference(set1, set2) 创建两个(多)集合的差集:set1 中的每个元素,但不是 set2 中的元素。
math.setDistinct(set) 收集多重集中的不同元素。
math.setIntersect(set1, set2) 创建两个(多)集合的交集。
math.setIsSubset(set1, set2) 检查一个(多)集合是否是另一个(多)集合的子集。
math.setMultiplicity(element, set) 计算一个元素在多重集中的重数。
math.setPowerset(set) 创建(多)集合的幂集。
math.setSize(set) 计算(多)集合的元素数量。
math.setSymDifference(set1, set2) 创建两个(多)集合的对称差集。
math.setUnion(set1, set2) 创建两个(多)集合的并集。

信号函数 #

Function Description
math.freqz(b, a) 给定滤波器的分子和分母系数,计算其频率响应。
math.zpk2tf(z, p, k) 计算零极点增益模型的传递函数。

特殊函数 #

Function Description
math.erf(x) 使用 Chebyshev 有理逼近法计算 erf 函数,适用于 x 的不同区间。
math.zeta(n) 使用黎曼函数方程,通过对整个复平面使用无穷级数来计算黎曼 Zeta 函数。

统计函数 #

Function Description
math.corr(A, B) 计算两组值之间的相关系数。对于矩阵,则计算矩阵相关系数。
math.cumsum(a, b, c, …) 计算矩阵或一组值的累积和。
math.mad(a, b, c, …) 计算矩阵或一组值的平均绝对偏差。
math.max(a, b, c, …) 计算矩阵或一组值的最大值。
math.mean(a, b, c, …) 计算矩阵或一组值的平均值。
math.median(a, b, c, …) 计算矩阵或一组值的中位数。
math.min(a, b, c, …) 计算矩阵或一组值的最小值。
math.mode(a, b, c, …) 计算一组数字或一组值(数字或字符)的众数。
math.prod(a, b, c, …) 计算矩阵或一组值的乘积。
math.quantileSeq(A, prob[, sorted]) 计算矩阵或一组值的 prob 阶分位数。
math.std(a, b, c, …) 计算矩阵或一组值的标准差。
math.sum(a, b, c, …) 计算矩阵或一组值的总和。
math.variance(a, b, c, …) 计算矩阵或一组值的方差。

字符串函数 #

Function Description
math.bin(value) 将数字格式化为二进制。
math.format(value [, precision]) 将任何类型的值格式化为字符串。
math.hex(value) 将数字格式化为十六进制。
math.oct(value) 将数字格式化为八进制。
math.print(template, values [, precision]) 将值插入字符串模板。

三角函数 #

Function Description
math.acos(x) 计算值的反余弦。
math.acosh(x) 计算反双曲余弦,定义为 acosh(x) = ln(sqrt(x^2 - 1) + x)
math.acot(x) 计算反余切,定义为 acot(x) = atan(1/x)
math.acoth(x) 计算反双曲余切,定义为 acoth(x) = atanh(1/x) = (ln((x+1)/x) + ln(x/(x-1))) / 2
math.acsc(x) 计算反余割,定义为 acsc(x) = asin(1/x)
math.acsch(x) 计算反双曲余割,定义为 acsch(x) = asinh(1/x) = ln(1/x + sqrt(1/x^2 + 1))
math.asec(x) 计算反正割。
math.asech(x) 计算反双曲正割,定义为 asech(x) = acosh(1/x) = ln(sqrt(1/x^2 - 1) + 1/x)
math.asin(x) 计算值的反正弦。
math.asinh(x) 计算反双曲正弦,定义为 asinh(x) = ln(x + sqrt(x^2 + 1))
math.atan(x) 计算值的反正切。
math.atan2(y, x) 计算带有两个参数的反正切函数,y/x。
math.atanh(x) 计算反双曲正切,定义为 atanh(x) = ln((1 + x)/(1 - x)) / 2
math.cos(x) 计算值的余弦。
math.cosh(x) 计算双曲余弦,定义为 cosh(x) = 1/2 * (exp(x) + exp(-x))
math.cot(x) 计算值的余切。
math.coth(x) 计算双曲余切,定义为 coth(x) = 1 / tanh(x)
math.csc(x) 计算余割,定义为 csc(x) = 1/sin(x)
math.csch(x) 计算双曲余割,定义为 csch(x) = 1 / sinh(x)
math.sec(x) 计算正割,定义为 sec(x) = 1/cos(x)
math.sech(x) 计算双曲正割,定义为 sech(x) = 1 / cosh(x)
math.sin(x) 计算值的正弦。
math.sinh(x) 计算双曲正弦,定义为 sinh(x) = 1/2 * (exp(x) - exp(-x))
math.tan(x) 计算值的正切。
math.tanh(x) 计算双曲正切,定义为 tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)

单位函数 #

Function Description
math.to(x, unit) 更改值的单位。
math.toBest(unit) 将单位转换为最合适的显示单位。

工具函数 #

Function Description
math.clone(x) 克隆一个对象。
math.hasNumericValue(x) 测试一个值是否为数字值。
math.isBounded(x) 测试一个值是否有限制。
math.isFinite(x) 测试一个值是否为有限。
math.isInteger(x) 测试一个值是否为整数。
math.isNaN(x) 测试一个值是否为 NaN(非数字)。
math.isNegative(x) 测试一个值是否为负数:小于零。
math.isNumeric(x) 测试一个值是否为数字值。
math.isPositive(x) 测试一个值是否为正数:大于零。
math.isPrime(x) 测试一个值是否为质数:除了自身和 1 之外没有其他约数。
math.isZero(x) 测试一个值是否为零。
math.numeric(x) 将数字输入转换为特定的数字类型:number、BigNumber、bigint 或 Fraction。
math.typeOf(x) 确定实体的类型。
Fork me on GitHub