Java中不准确的矩阵功率

时间:2013-09-10 22:01:17

标签: java android matrix

我正在研究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证实了这一点。

上面的答案(来自我的应用)使用的是SVD。特征值分解给出了“明显错误”的答案。有没有办法提高答案的准确性?我正在使用EJML进行矩阵后端工作,我的测试是在运行Android 4.3的Nexus 7上进行的。不,据我所知,EJML没有自己的矩阵幂/取幂方法。

1 个答案:

答案 0 :(得分:1)

la4j(Java的线性代数)自{0.4}版以来对power类进行了Matrix操作。但它只能用于整数指数。像这样:

// 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方法的双重指数。