我正在开发一个适用于 Android 的计算器应用程序(Java 语言),具有一些基本的矩阵功能。我尝试了两种算法,SVD 和特征值分解,来实现矩阵幂,但结果对我来说有点不准确。例如,[[1,2];[3,4]]^2.3
在 Scilab 中返回为 [11.463254,16.618358];[24.927537,36.390583]]
(之后abs
来删除烦人的虚部),但我的应用程序给出了 [[11.5107804,16.4911239];[26.2208761,37.1379804]]
。我将 Scilab 的答案视为事实,WolframAlpha 也证实了这一点。
上面的答案(来 self 的应用程序)是使用 SVD。特征值分解给出了“明显错误”的答案。有什么办法可以提高答案的准确性吗?我正在使用EJML对于矩阵后端工作,我的测试是在运行 Android 4.3 的 Nexus 7 上进行的。不,据我所知,EJML 没有自己的矩阵幂/幂方法。
最佳答案
la4j (Linear Algebra for Java) 自 0.4.5 版本起,确实为 Matrix
类提供了 power
运算。但它只能与整数指数一起使用。像这样:
// creates a new dense matrix
Matrix a = new Basic2DMatrix(...);
// performs 'a * a * a' in O(log n) via exponentiation-by-squaring
Matrix b = a.power(3);
无论如何,我会考虑支持 power
方法的双指数。
关于java - Java 中的矩阵幂不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729470/