数学建模入门-求矩阵的无穷次幂的极限

在看书的时候遇到了矩阵无穷次幂的问题,如下。
数学建模入门-求矩阵的无穷次幂的极限
查阅了资料,做了不少尝试还没找到python求解无穷次幂的API便准备自己封装,但是发现自己从头实现非常麻烦,大概有这几步:

  1. 求特征值:这一步好实现有numpy.linalg.eig()可以调用
  2. 求特征值对应的基础解系:如果非重根,可以调用numpy,solve()解线性方程组,但如果是重根则需要自己化行阶梯并求基础解系
  3. 构造过渡阵:将特征值对应的基础解系合并成一个过渡矩阵,灵活调用numpy.mat()与列表操作即可
  4. 求极限:将特征值构造成对角阵,并求每个元素的极限,可以调用sympy.limit(expr, n, sympy.oo)不难实现
  5. 相乘:根据之前的结果,TAT^-1求得最终结果,调用numpy.dot()就可以实现

其中第二步相当麻烦,我便放弃了用python计算矩阵的无穷次方,选择使用matlab

syms A n;
A=[0.5,0.5;0.7,0.3];
M=limit(A^n,n,inf)

数学建模入门-求矩阵的无穷次幂的极限
可以发现用matlab求起来是多么的方便