我正在为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进行矩阵后端工作,我的测试是在运行Android4.3的Nexus7上进行的。不,据我所知,EJML没有自己的矩阵幂/幂方法。
发布于 2013-09-11 18:29:53
从0.4.5版本开始,la4j (线性代数for Java)为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方法支持双指数。
https://stackoverflow.com/questions/18729470
复制相似问题