math.js是一個用于Javascript和Node.js的廣泛數(shù)字庫。它具有一個靈活的表達式解析器,支持符號計算,帶有大量內(nèi)置函數(shù)和常量,并提供一個集成解決方案來處理不同的數(shù)據(jù)類型,如數(shù)字、大數(shù)、復(fù)數(shù)、分數(shù)、單位和矩陣。功能強大且易于使用。
特征:
- 支持數(shù)字、大數(shù)、bigint、復(fù)數(shù)、分數(shù)、單位、字符串、數(shù)組和矩陣。
- 與 JavaScript 的內(nèi)置數(shù)學(xué)庫兼容。
- 包含靈活的表達式解析器。
- 執(zhí)行符號計算。
- 附帶大量內(nèi)置函數(shù)和常量。
- 也可以用作命令行應(yīng)用程序。
- 可在任何 JavaScript 引擎上運行。
- 易于擴展。
- 開源。
在math.js中,chain函數(shù)允許你創(chuàng)建一個鏈?zhǔn)秸{(diào)用的系列,
開始一個鏈
要使用鏈?zhǔn)秸{(diào)用,首先需要使用math.chain() 來開始一個新的鏈?zhǔn)?/p>
添加節(jié)點到鏈
鏈?zhǔn)秸{(diào)用中的每個數(shù)學(xué)操作都是一個節(jié)點。你可以通過調(diào)用鏈上的方法來添加節(jié)點,比如 add、subtract、multiply、divide 等。
這些方法會接受相應(yīng)的參數(shù),并執(zhí)行所需的數(shù)學(xué)運算。
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
二、數(shù)字常數(shù)和屬性
以 e 為底的對數(shù)函數(shù)
叫做自然對數(shù)
math.e: 自然對數(shù)的底數(shù) (2.718281828459) 歐拉數(shù)
math.pe: 圓周率
math.tau: 等于2π的常數(shù)
let result1 = math.divide(math.tau, 2); // TAU 除以 2,結(jié)果應(yīng)該是 π
let result2 = math.multiply(math.tau, 0.5); // TAU 乘以 0.5,同樣應(yīng)該是 π
math.LN2: 2的自然對數(shù)
math.LN10: 10的自然對數(shù)
math.PHI: 黃金比例
三、三角函數(shù)
sin(x): 正弦函數(shù)。
cos(x): 余弦函數(shù)。
tan(x): 正切函數(shù)。
asin(x): 反正弦函數(shù)。
acos(x): 反余弦函數(shù)。
atan(x): 反正切函數(shù)。
atan2(y, x): 帶有兩個參數(shù)的反正切函數(shù),用于確定角度在象限中的位置。
四、指數(shù)和對數(shù)函數(shù)
exp(x): e的x次方
log(x): 以10為底的對數(shù)
ln(x): 自然對數(shù)(以e為底)
pow(base, exponent): 求base的expontent次方
let result1 = math.pow(2,3) //8
sqrt(x): 求x的平方根
let result = math.sqrt(16) //4
五、統(tǒng)計函數(shù)
mean(array): 求數(shù)組的平均值
median(array): 求數(shù)組的中位數(shù)
sum(array): 求數(shù)組的元素和
min(array): 求數(shù)組的最小值
max(array): 求數(shù)組的最大值
std(array): 求數(shù)組的標(biāo)準(zhǔn)差
variance(array): 求數(shù)組的方差
六、矩陣和向量操作
math.matrix([...]): 創(chuàng)建矩陣
math.multiply(A,B): 矩陣乘法
math.transpose(A): 矩陣轉(zhuǎn)置
math.inv(A): 矩陣求逆
math.det(A): 矩陣的行列式
math.diag([...]): 創(chuàng)建對角矩陣
math.eye(n): 創(chuàng)建n*n的單位矩陣
七、數(shù)值分析
math.solve(equations, variables): 解方程或方程組
math.derivative(f, x): 求函數(shù)f關(guān)于x的導(dǎo)數(shù)
math.integrate(f, {a,b}): 求函數(shù)f在區(qū)間[a,b]上的積分
八、單位處理
math.unit('5 cm'): 創(chuàng)建單位值
// 創(chuàng)建一個單位對象(例如: 5米)
let lengthInMeters = math.unit(5, 'm');
// 將單位轉(zhuǎn)換為千米
let lengthInKilometers = math.unit(lengthInMeters , 'km')
console.log(lengthInKilometers.toString()) //輸出0.005km
九、復(fù)數(shù)運算
math.complex(re, im): 創(chuàng)建復(fù)數(shù)
復(fù)數(shù)加法、減法、乘法、除法、去摸運算
十、大數(shù)運算
math.bignumber('1234567'): 用于處理和操作任意精度數(shù)字的功能
部分簡寫
.add() 數(shù)值加法
.sub() 數(shù)值減法
.div() 數(shù)值乘法
.mul() 數(shù)值乘法方法
1.數(shù)值乘法
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]]
矩陣乘法遵循線性代數(shù)的規(guī)則,即(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() 函數(shù)是一個實用的工具,它能夠?qū)⒉煌愋偷臄?shù)字對象轉(zhuǎn)換為普通的Javascript數(shù)字
math.minus(): 函數(shù)用于執(zhí)行兩個數(shù)值、矩陣、向量或復(fù)數(shù)之間的減法運算
math.plus(): 函數(shù)用于執(zhí)行兩個數(shù)值、矩陣、向量、復(fù)數(shù)或單位之間的加法運算
math.abs(): 絕對值
浙公網(wǎng)安備 33010602011771號