【发布时间】:2018-03-17 13:33:37
【问题描述】:
我在使用numeric.js 库的eig 方法时遇到了一个奇怪的问题,该方法用于计算方阵的特征值。如果矩阵的大小为 4 或 5,则该方法计算特征值没有任何问题,当大小为 6 时,我得到一个
Uncaught Error: eig: internal error
at Function.numeric.house (VM145 numeric.min.js:1)
at Function.numeric.QRFrancis (VM145 numeric.min.js:1)
at Function.numeric.QRFrancis (VM145 numeric.min.js:1)
at Function.numeric.eig (VM145 numeric.min.js:1)
at js:32
我创建了一个小脚本,使用不同大小的方阵来复制问题。
ns = [4,5,6]
for (var h=0; h<ns.length; h++){
matr = []
n = ns[h]
for (var i=0; i<n; i++){
row = []
for (var j=0; j<n; j++){
row.push(1)
}
matr.push(row)
}
eigenvalues = numeric.eig(matr)
console.log(eigenvalues.lambda.x)
}
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/numeric/1.2.6/numeric.min.js"></script>
</head>
<body>
Nothing to see here, look at your console.
</body>
有人遇到同样的问题吗?有什么解决方法的想法吗?
【问题讨论】:
-
会不会和这个有关? github.com/sloisel/numeric/issues/50
-
我完全不建议使用该库。看来作者已经死了,至少他忽略了自 2013 年以来的所有相关内容。
-
至于解决方法,我使用了一个 6x6 矩阵,而不是全 1,它似乎工作正常。
[[1,2,5,1,2,5],[3,5,-1,3,5,-1],[7,-3,5,7,-3,5],[1,2,5,1,2,5],[3,5,-1,3,5,-1],[7,-3,5,7,-3,5]]。线性代数是很久以前的事了,如果这是一个无效的矩阵,我很抱歉。 -
肯定与@callback 发布的问题有关 我现在不知道该怎么办,我需要另一个库来一致地计算特征值,看起来 JavaScript 没有什么。
-
这对你有好处吗? mathjs.org/examples/import.js.html
标签: javascript eigenvalue