Qi_Python
Qi_Python
2017-12-08 07:54
采纳率: 77.8%
浏览 2.4k

如何用python计算矩阵幂的极限?

图片说明
其中,W为任意正矩阵。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Qi_Python
    Qi_Python 2019-03-11 14:53
    已采纳

    已经解决了。。。。。

    点赞 评论
  • shitingmeng7262
    taoxuewen 2017-12-08 09:04

    用python计算出W矩阵的特征值分解,然后求分解后的中间一项对角矩阵的各个元素的无穷次幂就行,python求特征值分解可用numpy.linalg.eig

    点赞 评论
  • qq_41227194
    qq_41227194 2017-12-09 03:31

    output = []
    nrow = len(mat)
    ncol = len(mat[0])
    for i in range(ncol):
    output.append(sum([mat[x][i] for x in range(nrow)]))
    print output

    点赞 评论
  • qq87419406
    netlocks 2017-12-10 08:56

    a1=mat([1,2]);

    a2=mat([[1],[2]]);
    a3=a1*a2 #1*2的矩阵乘以2*1的矩阵,得到1*1的矩阵
    a3
    matrix([[5]])
    2. 矩阵点乘

    矩阵对应元素相乘

    a1=mat([1,1]);
    a2=mat([2,2]);
    a3=multiply(a1,a2)
    a3
    matrix([[2, 2]])
    矩阵点乘

    a1=mat([2,2]);
    a2=a1*2>>>a2
    matrix([[4, 4]])
    3.矩阵求逆,转置
    矩阵求逆

    复制代码

    a1=mat(eye(2,2)*0.5)
    a1
    matrix([[ 0.5, 0. ],
    [ 0. , 0.5]])
    a2=a1.I #求矩阵matrix([[0.5,0],[0,0.5]])的逆矩阵
    a2
    matrix([[ 2., 0.],
    [ 0., 2.]])
    复制代码
    矩阵转置

    复制代码

    a1=mat([[1,1],[0,0]])
    a1
    matrix([[1, 1],
    [0, 0]])
    a2=a1.T
    a2
    matrix([[1, 0],
    [1, 0]])
    复制代码
    4.计算矩阵对应行列的最大、最小值、和。

    3>>>a1=mat([[1,1],[2,3],[4,2]])

    a1
    matrix([[1, 1],
    [2, 3],
    [4, 2]])
    计算每一列、行的和

    复制代码

    a2=a1.sum(axis=0) #列和,这里得到的是1*2的矩阵
    a2
    matrix([[7, 6]])
    a3=a1.sum(axis=1) #行和,这里得到的是3*1的矩阵
    a3
    matrix([[2],
    [5],
    [6]])
    a4=sum(a1[1,:]) #计算第一行所有列的和,这里得到的是一个数值
    a4
    5 #第0行:1+1;第2行:2+3;第3行:4+2
    复制代码
    计算最大、最小值和索引

    复制代码

    a1.max() #计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值
    4
    a2=max(a1[:,1]) #计算第二列的最大值,这里得到的是一个1*1的矩阵
    a2
    matrix([[3]])
    a1[1,:].max() #计算第二行的最大值,这里得到的是一个一个数值
    3
    np.max(a1,0) #计算所有列的最大值,这里使用的是numpy中的max函数
    matrix([[4, 3]])
    np.max(a1,1) #计算所有行的最大值,这里得到是一个矩阵
    matrix([[1],
    [3],
    [4]])
    np.argmax(a1,0) #计算所有列的最大值对应在该列中的索引
    matrix([[2, 1]])
    np.argmax(a1[1,:]) #计算第二行中最大值对应在该行的索引
    1
    复制代码
    5.矩阵的分隔和合并
    矩阵的分隔,同列表和数组的分隔一致。

    复制代码

    a=mat(ones((3,3)))
    a
    matrix([[ 1., 1., 1.],
    [ 1., 1., 1.],
    [ 1., 1., 1.]])
    b=a[1:,1:] #分割出第二行以后的行和第二列以后的列的所有元素
    b
    matrix([[ 1., 1.],
    [ 1., 1.]])
    复制代码
    矩阵的合并

    复制代码

    a=mat(ones((2,2)))
    a
    matrix([[ 1., 1.],
    [ 1., 1.]])
    b=mat(eye(2))
    b
    matrix([[ 1., 0.],
    [ 0., 1.]])
    c=vstack((a,b)) #按列合并,即增加行数
    c
    matrix([[ 1., 1.],
    [ 1., 1.],
    [ 1., 0.],
    [ 0., 1.]])
    d=hstack((a,b)) #按行合并,即行数不变,扩展列数
    d
    matrix([[ 1., 1., 1., 0.],
    [ 1., 1., 0., 1.]])
    复制代码
    4.矩阵、列表、数组的转换

    列表可以修改,并且列表中元素可以使不同类型的数据,如下:

    l1=[[1],'hello',3];
    numpy中数组,同一个数组中所有元素必须为同一个类型,有几个常见的属性:

    复制代码

    a=array([[2],[1]])
    a
    array([[2],
    [1]])
    dimension=a.ndim
    dimension
    2
    m,n=a.shape
    m
    2
    n
    1
    number=a.size #元素总个数
    number
    2
    str=a.dtype #元素的类型
    str
    dtype('int64')
    复制代码
    numpy中的矩阵也有与数组常见的几个属性。
    它们之间的转换:

    复制代码

    a1=[[1,2],[3,2],[5,2]] #列表
    a1
    [[1, 2], [3, 2], [5, 2]]
    a2=array(a1) #将列表转换成二维数组
    a2
    array([[1, 2],
    [3, 2],
    [5, 2]])
    a3=mat(a1) #将列表转化成矩阵
    a3
    matrix([[1, 2],
    [3, 2],
    [5, 2]])
    a4=array(a3) #将矩阵转换成数组
    a4
    array([[1, 2],
    [3, 2],
    [5, 2]])
    a41=a3.getA() #将矩阵转换成数组
    a41
    array([[1,2]
    [3,2]
    [5,2]])
    a5=a3.tolist() #将矩阵转换成列表
    a5
    [[1, 2], [3, 2], [5, 2]]
    a6=a2.tolist() #将数组转换成列表
    a6
    [[1, 2], [3, 2], [5, 2]]

    复制代码
    这里可以发现三者之间的转换是非常简单的,这里需要注意的是,当列表是一维的时候,将它转换成数组和矩阵后,再通过tolist()转换成列表是不相同的,需要做一些小小的修改。如下:

    复制代码

    a1=[1,2,3] #列表
    a2=array(a1)
    a2
    array([1, 2, 3])
    a3=mat(a1)
    a3
    matrix([[1, 2, 3]])
    a4=a2.tolist()
    a4
    [1, 2, 3]
    a5=a3.tolist()
    a5
    [[1, 2, 3]]
    a6=(a4==a5)
    a6
    False
    a7=(a4 is a5[0])
    a7
    True
    复制代码
    矩阵转换成数值,存在以下一种情况:

    dataMat=mat([1])
    val=dataMat[0,0] #这个时候获取的就是矩阵的元素的数值,而不再是矩阵的类型
    val
    1

    点赞 评论

相关推荐