我正在使用Math.js在JavaScript中执行矩阵计算(例如,计算行列式、特征值、逆矩阵)。我希望计算执行得更快(它是在2X2矩阵上计算它们,但它每秒应该执行很多次,现在它导致了明显的延迟),但精度并不是那么重要(我认为精度的两个小数位就足够了)。有没有办法指定计算的精确度?谢谢!
下面是一个计算示例:
var A = [[3.5, 9], [9, 1]]
for (let x=0;x<10**5;x++){
math.eigs(A)
math.inv(A)
math.det(A)
}<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/8.1.0/math.js" integrity="sha512-ne87j5uORxbrU7+bsqeJJWfWj5in65R9PCjaQL161xtH5cesZgULVbeVAkzAAN7hnYOcrHeBas9Wbd/Lm8gXFA==" crossorigin="anonymous"></script>
实际上,每次更改滑块位置(当然每次都使用不同的矩阵)时,我都会进行这些计算。
发布于 2020-12-29 02:58:20
查看文档:是
https://mathjs.org/docs/core/configuration.html
精度。BigNumbers的最大有效位数。此设置仅适用于BigNumbers,不适用于数字。默认值为64。
我不知道这是否真的会加速您的计算或解决您的问题,但有一些配置选项可能会有所帮助。
发布于 2021-10-11 14:22:08
尝试使用ml矩阵库,而不是math.js。除了具有高效的分解算法外,它还具有更好的泛化能力。Math.js仅限于求解对称实数矩阵。下面是一个使用ml矩阵求解更难的二进制稀疏矩阵的示例:
matrix =
[
[ 0, 1, 0, 1, 0, 1 ],
[ 0, 0, 0, 0, 0, 0 ],
[ 0, 1, 0, 1, 0, 1 ],
[ 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0 ],
[ 1, 0, 1, 0, 0, 0 ]
]
const mlMatrix = require('ml-matrix');
const M = new mlMatrix.Matrix(matrix);
const e = new mlMatrix.EigenvalueDecomposition(M);
e.realEigenvalues -> [-1.4142135623730945, 2.220446049250313e-16, 1.4142135623730954, 0, 0, 0 ]
e.imaginaryEigenvalues -> [ 0, 0, 0, 0, 0, 0 ]https://stackoverflow.com/questions/65482219
复制相似问题