在看书的时候遇到了矩阵无穷次幂的问题,如下。
查阅了资料,做了不少尝试还没找到python求解无穷次幂的API便准备自己封装,但是发现自己从头实现非常麻烦,大概有这几步:
- 求特征值:这一步好实现有
numpy.linalg.eig()
可以调用 - 求特征值对应的基础解系:如果非重根,可以调用
numpy,solve()
解线性方程组,但如果是重根则需要自己化行阶梯并求基础解系 - 构造过渡阵:将特征值对应的基础解系合并成一个过渡矩阵,灵活调用
numpy.mat()
与列表操作即可 - 求极限:将特征值构造成对角阵,并求每个元素的极限,可以调用
sympy.limit(expr, n, sympy.oo)
不难实现 - 相乘:根据之前的结果,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求起来是多么的方便