我试图使用linalg查找$ P ^ {500} $,其中$ P $是9x9矩阵,但Python显示以下内容: document path
我认为这对于这种方法来说太过分了,所以我的问题是,还有另一个库找到$ P ^ {500} $?我必须投降吗? 提前谢谢大家
答案 0 :(得分:1)
使用特征分解,然后对特征值矩阵进行取幂。像这样。您最终会在第一列中获得信息。除非你用特征值来控制矩阵的类型,否则这种情况不会发生。换句话说,你的特征值必须是有界的。您可以通过Schur decomposition生成随机矩阵,将特征值沿对角线放置。这是关于使用给定eigenvalues.生成矩阵的帖子。这应该是该方法仍然有效的方式。
% Generate random 9x9 matrix
n=9;
A = randn(n);
[V,D] = eig(A);
p = 500;
Dp = D^p;
Ap = V^(-1)*Dp*V;
Ap1 = mpower(A,p);
答案 1 :(得分:0)
NumPy数组具有同类数据类型,float数据类型最大值为
>>> np.finfo('d').max
1.7976931348623157e+308
>>> _**0.002
4.135322944991858
>>> np.array(4.135)**500
1.7288485271474026e+308
>>> np.array(4.136)**500
__main__:1: RuntimeWarning: overflow encountered in power
inf
因此,如果内部产品的结果高于约。 4.135它会爆炸,一旦它爆炸,下一个产品将乘以无穷大,更多的条目将获得无穷大,直到一切都变成无穷大。
Metahominid的建议当然有帮助,但如果你的特征值大于这个值,它就无法解决问题。通常,您需要使用专门的高精度工具来获得正确的结果。