分享

sympy矩阵的计算

 Tech-d 2013-11-06
from sympy import *
from sympy import Matrix, eye, zeros, ones, diag, GramSchmidt

创建矩阵:
M = Matrix([ [1, 0, 0], [0, 0, 0] ])                              # 一个两行三列的矩阵:[1, 0, 0]
                                                                                  #                                         [0, 0, 0]
M2 = Matrix([ (1, 0, 0, 2), (0, 0, 0, 1)])                   # 一个两行四列的矩阵

M3 = Matrix([ M2, (0, 1, 1, 1)])                               # 在M2的基础上加了一行,成为一个三行四列的矩阵

M4 = Matrix(2, 3, [1, 2, 3, 4, 5, 6])                      # 一个两行三列的矩阵:[1, 2, 3]
                                                                                  #                                         [4, 5, 6]
def f(i, j):
      if i == j:
           return 1
      else:
           return 0
M5 = Matrix(4, 4, f)                                                  # 一个四行四列的矩阵,通过循环执行函数f来建立,本例中会建立一个单位矩阵
                                                                                  # [1, 0, 0, 0]
                                                                                  [0, 1, 0, 0]
                                                                                  [0, 0, 1, 0]
                                                                                  [0, 0, 0, 1]
M6 = Matrix(3, 4, lambda i, j: 1 - (i + j) % 2)         #用lambda的方式做循环,建立矩阵。本例中建立一个三行四列的矩阵
                                                                                  # [1, 0, 1, 0]
                                                                                  # [0, 1, 0, 1]
                                                                                  # [1, 0, 1, 0]


单位矩阵函数:eye
identityMatrix = eye(4)                                           # 一个四行四列的单位矩阵

零矩阵函数:zeros
zeros0 = zeros(2)                                                  # 一个两行两列的零矩阵
zeros1 = zeros(2, 5)                                              # 一个两行五列的零矩阵

全1矩阵:ones
ones0 = ones(3)                                                    # 一个三行三列的全1矩阵
ones1 = ones(1, 3)                                                # 一个一行三列的全1矩阵

矩阵中取值
a0 = M4[3]                                                              # a0 = 4, 矩阵所有元素中index=4的那一个
a1 = M4[1,2]                                                           # a1 = 6, 矩阵中的第1-1行,第2-1列
a2 = M4[0:2, 0:1]                                                   # a2 = Matrix( [ [1], [4] ]), 矩阵中第0和第1行, 第0列,M4的子矩阵 
a3 = M4[:, 0:1]                                                       # a3 = Matrix( [ [1], [4] ]), 矩阵中的所有行和 第0列,M4的子矩阵 

修改矩阵中的元素:
M4[3] = 8
M4[:, 0:1]  = Matrix([ [5], [8] ])                                                          
M7 = Matrix([ [17], [19] ])
M4[0:2, 0:1] = M7

删除整行和整列:
M4.row_del(0)
M4.col_del(1)

添加整行和整列:
row_join(Matrix...)                                                   # 添加整列(意为“每行添加元素”)
col_join(Matrix....)                                                   # 添加整行(意为“每列添加元素”)   

============================================================================
矩阵的计算:
M = Matrix(([1,2,3],[4,5,6],[7,8,9]))
M2 = Matrix(3,1,[1,5,0])
M3 = M + M
M4 = M - M
M5 = M * M2
M6 = M**2

向量的点乘和叉乘:
v1 = Matrix([1,2,3])
v2 = Matrix([4,5,6])
num = v1.dot(v2)                                                       # num = 32
v3 = v1.cross(v2)                                                      # v3 = Matrix([ [-3, 6, -3] ])

计算行列式(determinant)
d0 = M.det()                                                              # d0 = 0     

计算逆矩阵(inverse)
Mi0 = M.inv()
Mi1 = M.inv(method = 'LU')

计算伴随矩阵
Ma = M.adjugate(method = 'berkowitz')












    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多