在MATLAB中获取矩阵的分数幂的好方法是什么?

时间:2014-11-18 18:56:41

标签: matlab math matrix

我正在研究一个涉及获取特定矩阵的分数幂的问题。

对于主对角线上有2的矩阵A和超对角线上的-1(1D中Dirichlet拉普拉斯算子的有限差分矩阵),使用MATLAB的sqrtm(A)函数和对矩阵(A = V\D*V)进行对角化并计算V\D^(1/2)*V,即使矩阵大到1000x1000。这让我觉得我可以计算MATLAB没有内置函数的其他分数幂V\D^(1/n)*V

然而,当我在2D中考虑Dirichlet Laplacian的矩阵A时,即使矩阵小到100x100,MATLAB的sqrtm函数和我在上面使用的对角化过程之间也存在显着差异。特别是,MATLAB的sqrtm函数更好,如果我以其他方式执行,我的结果没有任何意义。

我想知道是否有人可以解释为什么会发生这种情况,如果有办法解决它,以便我可以在MATLAB中计算大矩阵的分数幂。

编辑:我在A = V*D/V之后犯了一个大错误,而不是像我上面写的那样V\D*V(在我的代码中)。事实证明,MATLAB通过执行A^(1/n)使用此算法来计算V*D^(1/n)/V。在答案 here

中向我指出了这一点

1 个答案:

答案 0 :(得分:1)

如果您不是在讨论稀疏矩阵的特定算法,那么它只是

expm(1.0/n*logm(A))
相关问题