Math.js 是个JavaScript 和 Node.js 的扩展数学库。它包括了灵活的表达式解析器,提供数字,大数值,复杂数值,单位,矩阵等等集成的解决方案。Math.js 很强大又易于使用。
特性
支持数值,大数值,复杂数值,单位,数组,字符串和矩阵
兼容 JavaScript 内置的数学库
包含一个灵活的表达式解析器
支持链接操作
包含一系列内置函数和常量
没有任何依赖,可以运行在所有 JavaScript 引擎上
非常容易扩展
下载引用
官网:https://mathjs.org/index.html
安装:npm install mathjs
CDN:https://cdn.bootcdn.net/ajax/libs/mathjs/9.3.2/math.min.js
math.js使用方式:
1、用静态函数和常数(就像JavaScript的Math对象)
math.round(math.e, 3); // 2.718math.add(2, 3); // 5 math.sqrt(-4); // 2i math.pow([[-1, 2], [3, 1]],2); // [[7, 0], [0, 7]]math.derivative(‘x^2 + x’, ‘x’); // 2 * x + 1math.atan2(3, -3) / math.pi; // 0.75
2、对字符串表达式进行求值运算
math.eval(‘12 / (2.3 + 0.7)’); // 4math.eval(‘12.7 cm to inch’); // 5 inchmath.eval(‘sin(45 deg) ^ 2’); // 0.5math.eval(‘9 / 3 + 2i’); // 3 + 2imath.eval(‘det([-1, 2; 3, 1])’); // -7
3、链式操作
math.chain(3) .add(4) .multiply(2) .done(); // 14
4、矩阵操作
var n = math.matrix([[4,3,2], [6,6,8], [7,4,5]]); console.log(n.valueof()); // [[4,3,2],[6,6,8],[7,4,5]]
可以使用如下代码来创建一个用0填充的矩阵:
var z = math.zeros(2,2); console.log(z.valueof()); // [[0, 0], [0, 0]]
注:大多数math.js函数,都需要valueof()或者done()函数来真正地获取操作的值,如上面代码所示。
5、BigNumbers
var b = math.complex(‘4-2i’);b.re = 5;console.log(b.valueof()); // 5-2i
math.js对BigNumbers的支持,拥有任意精度的数值,并且是具有实部和虚部的复数。
配置
math.config()
配置项:
epsilon。用于测试两个比较值之间相等性的最小相对差异。所有关系函数都使用此值。默认值是1e-14。
matrix。函数的默认矩阵输出类型。
number。函数的数字输出类型,无法从输入中确定数字类型。但是对于大多数函数,输出的类型是根据输入确定的:作为输入的数字将返回一个数字作为输出,BigNumber作为输入返回BigNumber作为输出。
precision。BigNumbers的最大有效位数。此设置仅适用于BigNumbers,而不适用于数字。默认值是64。
predictable。可预测的输出类型的函数。如果为true,则输出类型仅取决于输入类型。如果为false(默认),则输出类型可能因输入值而异。例如math.sqrt(-4)返回complex(‘2i’)时,可预见的是假的,而返回NaN时真。在以编程方式处理计算结果时可能需要可预测的输出,但在评估动态方程时可能对用户不方便。
randomSeed。将此选项设置为种子伪随机数生成,使其成为确定性的。每次设置此选项时,将使用提供的种子重置伪随机数生成器。例如,将其设置为’a’将导致math.random()返回0.43449421599986604每次设置选项后的首次通话。设置为null使用随机种子为伪随机数生成器设定种子。默认值是null。