math.js是一个用于Javascript和Node.js的广泛数字库。它具有一个灵活的表达式解析器,支持符号计算,带有大量内置函数和常量,并提供一个集成解决方案来处理不同的数据类型,如数字、大数、复数、分数、单位和矩阵。功能强大且易于使用。
特征:
- 支持数字、大数、bigint、复数、分数、单位、字符串、数组和矩阵。
- 与 JavaScript 的内置数学库兼容。
- 包含灵活的表达式解析器。
- 执行符号计算。
- 附带大量内置函数和常量。
- 也可以用作命令行应用程序。
- 可在任何 JavaScript 引擎上运行。
- 易于扩展。
- 开源。
在math.js中,chain函数允许你创建一个链式调用的系列,
开始一个链
要使用链式调用,首先需要使用math.chain() 来开始一个新的链式
添加节点到链
链式调用中的每个数学操作都是一个节点。你可以通过调用链上的方法来添加节点,比如 add
、subtract
、multiply
、divide
等。
这些方法会接受相应的参数,并执行所需的数学运算。
add(a, b): 加法运算
var a = math.add(4,5) // 9
var a = math.chain(3).add(4).done(); //7
var a = math.chain(4).add(4,5).done(); // 13
subtract(a, b): 减法运算
var a = math.subtract(12,5) //7
var a = math.chain(12).subtract(1).done() //11
multiply(a,b): 乘法运算
math.multiply(3,4)
var a = math.chain(3).multiply(4).done() //12
divide(a,b): 除法运算
var a = math.divide(4,2) //2
var a = math.chain(12).divide(4).done() //3
二、数字常数和属性
以 e 为底的对数函数 叫做自然对数
math.e: 自然对数的底数 (2.718281828459) 欧拉数
math.pe: 圆周率
math.tau: 等于2π的常数
let result1 = math.divide(math.tau, 2); // TAU 除以 2,结果应该是 π
let result2 = math.multiply(math.tau, 0.5); // TAU 乘以 0.5,同样应该是 π
math.LN2: 2的自然对数
math.LN10: 10的自然对数
math.PHI: 黄金比例
三、三角函数
sin(x): 正弦函数。
cos(x): 余弦函数。
tan(x): 正切函数。
asin(x): 反正弦函数。
acos(x): 反余弦函数。
atan(x): 反正切函数。
atan2(y, x): 带有两个参数的反正切函数,用于确定角度在象限中的位置。
四、指数和对数函数
exp(x): e的x次方
log(x): 以10为底的对数
ln(x): 自然对数(以e为底)
pow(base, exponent): 求base的expontent次方
let result1 = math.pow(2,3) //8
sqrt(x): 求x的平方根
let result = math.sqrt(16) //4
五、统计函数
mean(array): 求数组的平均值
median(array): 求数组的中位数
sum(array): 求数组的元素和
min(array): 求数组的最小值
max(array): 求数组的最大值
std(array): 求数组的标准差
variance(array): 求数组的方差
六、矩阵和向量操作
math.matrix([...]): 创建矩阵
math.multiply(A,B): 矩阵乘法
math.transpose(A): 矩阵转置
math.inv(A): 矩阵求逆
math.det(A): 矩阵的行列式
math.diag([...]): 创建对角矩阵
math.eye(n): 创建n*n的单位矩阵
七、数值分析
math.solve(equations, variables): 解方程或方程组
math.derivative(f, x): 求函数f关于x的导数
math.integrate(f, {a,b}): 求函数f在区间[a,b]上的积分
八、单位处理
math.unit('5 cm'): 创建单位值
// 创建一个单位对象(例如: 5米)
let lengthInMeters = math.unit(5, 'm');
// 将单位转换为千米
let lengthInKilometers = math.unit(lengthInMeters , 'km')
console.log(lengthInKilometers.toString()) //输出0.005km
九、复数运算
math.complex(re, im): 创建复数
复数加法、减法、乘法、除法、去摸运算
十、大数运算
math.bignumber('1234567'): 用于处理和操作任意精度数字的功能
部分简写
.add() 数值加法
.sub() 数值减法
.div() 数值乘法
.mul() 数值乘法方法
1.数值乘法
let result = math.mul(6, 7);
console.log(result); // 输出: 42
2.矩阵乘法
.mul()
也可以用于矩阵乘法:
let matrixA = [[1, 2], [3, 4]]; a=[] 第一行1,2 第2行 3,4
let matrixB = [[5, 6], [7, 8]]; b=[] 第一行5,6 第2行 7,8
let result = math.mul(matrixA, matrixB);
行乘以竖
19= 1*5+2*7
22 =1*6+2*8
43=3*5+4*7
50=3*6+4*8
console.log(result); // 输出: [[19, 22], [43, 50]]
矩阵乘法遵循线性代数的规则,即(m x n)矩阵与(n x p)矩阵相乘得到(m x p)矩阵
3向量乘法
let vector = [1, 2, 3]
let scalar = 2;
let result = math.mul(vector, scalar); // [2, 4, 6]
4单位乘法
let meters = math.unit(5, 'm');
let seconds = math.unit(2, 's');
let result = math.mul(meters, seconds); //{unit: 'm*s', value: 10}
toNumber() 函数是一个实用的工具,它能够将不同类型的数字对象转换为普通的Javascript数字
math.minus(): 函数用于执行两个数值、矩阵、向量或复数之间的减法运算
math.plus(): 函数用于执行两个数值、矩阵、向量、复数或单位之间的加法运算
math.abs(): 绝对值