math.js是一个用于Javascript和Node.js的广泛数字库。它具有一个灵活的表达式解析器,支持符号计算,带有大量内置函数和常量,并提供一个集成解决方案来处理不同的数据类型,如数字、大数、复数、分数、单位和矩阵。功能强大且易于使用。

特征:

  • 支持数字、大数、bigint、复数、分数、单位、字符串、数组和矩阵。
  • 与 JavaScript 的内置数学库兼容。
  • 包含灵活的表达式解析器。
  • 执行符号计算。
  • 附带大量内置函数和常量。
  • 也可以用作命令行应用程序。
  • 可在任何 JavaScript 引擎上运行。
  • 易于扩展。
  • 开源。

在math.js中,chain函数允许你创建一个链式调用的系列,

"mathjs": "~12.2.1",

开始一个链

要使用链式调用,首先需要使用math.chain() 来开始一个新的链式

添加节点到链

链式调用中的每个数学操作都是一个节点。你可以通过调用链上的方法来添加节点,比如 addsubtractmultiplydivide 等。

这些方法会接受相应的参数,并执行所需的数学运算。

import * as math from 'mathjs'
math.chain(3).add(4).done();  //7
常规方法:
math.ceil(a): 向上取整
math.ceil(3.1) //4
math.ceil(3.8) //4
math.floor(a): 向下取整
math.floor(3.1) //3
math.floor(3.9) //3
math.round(a): 四舍五入
math.round(2.4) //4
math.round(2.5) //5
 一、基础运算函数

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(): 绝对值

 

posted on 2024-11-04 19:07  执候  阅读(23)  评论(0编辑  收藏  举报