# coding=utf8 from __future__ import division import copy
def list_to_matrix(l): """ 列表转变为1*n矩阵 :param l: list :return: 矩阵 """ m = [l] return m
def inverse(matrix): """ 矩阵高斯消元法求逆 :param matrix: :return: 逆矩阵 """ extend_matrix = copy.deepcopy(matrix) l = len(matrix) for i in range(0, l): # 在矩阵右边补充一个单位矩阵,使用初等变换求逆矩阵 extend_matrix[i].extend([0]*i) extend_matrix[i].extend([1]) extend_matrix[i].extend([0]*(l-i-1)) for i in range(0, len(extend_matrix)): # 判断矩阵对角线上是否有0,有0则置换,如置换不了,则没有逆矩阵 if extend_matrix[i][i] == 0: for j in range(i, len(extend_matrix)): if extend_matrix[j][i] != 0: # 进行行交换 extend_matrix[i], extend_matrix[j] = extend_matrix[j], extend_matrix[i] break if j >= len(extend_matrix)-1: print('没有逆矩阵') return 0 break for i in range(0, len(extend_matrix)): # 开始计算逆矩阵 f = extend_matrix[i][i] for j in range(0, len(extend_matrix[i])): # 先把对角元素换为1 extend_matrix[i][j] /= f for m in range(0, len(extend_matrix)): if m == i: continue b = extend_matrix[m][i] for n in range(0, len(extend_matrix[i])): # 再把对角元素所在列的其余元素换为0 extend_matrix[m][n] -= extend_matrix[i][n] * b for i in range(0, len(extend_matrix)): extend_matrix[i] = extend_matrix[i][l:] return extend_matrix