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')