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