首页 > 其他分享 >math.js 处理数据精度等问题

math.js 处理数据精度等问题

时间:2024-11-04 18:57:16浏览次数:4  
标签:函数 chain 矩阵 js let math 精度 乘法

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

 

标签:函数,chain,矩阵,js,let,math,精度,乘法
From: https://www.cnblogs.com/zhihou/p/18468149

相关文章

  • JSP的对象
    一,JSP的内置对象1.JSP页面中的对象:包括JSP内置对象和用户创建的对象2.JSP内置对象是Web容器创建的一组对象3.JSP内置对象是可以直接在JSP页面使用的对象,无需使用“new”获取实例4.JSP内置对象的名称是JSP的保留字 JSP的运行机制1.Web容器处理JSP文件请求......
  • java中的Math.round(-1.5)等于多少
       -1等于-1,因为在数轴上取值时,中间值(0.5)向右取整,所以正0.5是往上取整,负0.5是直接舍弃。(观点不认同)Math提供了三个与取整有关的方法:ceil、floor、round(1)ceil:向上取整;(2)floor:向下取整;(3)round:四舍五入;1、ceil:向上取整向上取整:无论小数点后面的数字是多少,都向上取整......
  • MySQL Json 字段类型操作
    创建表CREATETABLE`demo`(`id`varchar(36)PRIMARYKEY,`username`varchar(100),`password`varchar(100),`nickname`varchar(100),`roles`json,`status`int)插入json格式的字段,插入时会自动校验格式,如果格式不是json的,会报错INSERTINTO`de......
  • node.js毕设图像数字知识产权保护系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于图像数字知识产权保护系统的研究,现有研究主要集中在通用的数字知识产权保护方面,如利用区块链技术实现一般性的数字版权保护等,专门针对图像数字知识......
  • node.js毕设网咖管理系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于网咖管理的研究,现有研究主要以网咖的营销策略、网络安全维护等为主,专门针对网咖内部综合管理系统全方位功能设计的研究较少。在国内外网咖管理中,虽......
  • node.js毕设失踪人口寻找互助信息系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于失踪人口寻找相关的研究,现有研究主要以警方刑侦手段、公益组织的寻人行动等为主。专门针对通过互助信息系统来寻找失踪人口的研究较少。在国内外,虽......
  • 《Python内置模块006:json:处理JSON数据》
    JSON是一种轻量级的数据交换格式,易于人和机器读写。Python的json模块提供了简单的方法来编码和解码JSON数据一、常用方法json.dumps():将Python对象编码为JSON字符串json.loads():将JSON字符串解码为Python对象json.dump():将Python对象编码为JSON格式,并写入文件json.load()......
  • node.js毕设校园代取系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于校园代取系统的研究,现有研究主要集中在快递物流相关领域的优化等方面,专门针对校园内这种综合性的代取系统的研究较少。在国内外,校园服务的数字化和......