import numpy as np
def get_row(matrix, row):
return matrix[row]
def get_column(matrix, column_number):
column = []
for i in range(len(matrix)):
column.append(matrix[i][column_number])
return column
#行与列的点积
def dot_product(vector_one, vector_two):
if len(vector_one)!=len(vector_two):
return
else:
result=0
for i in range(len(vector_one)):
result+=vector_one[i]*vector_two[i]
return result
def matrix_multiplication(matrixA, matrixB):
m_rows = len(matrixA)
p_columns = len(matrixB[0])
result=np.zeros((m_rows,p_columns))
for i in range(m_rows):
for j in range(p_columns):
result[i][j]+=dot_product(get_row(matrixA,i), get_column(matrixB,j))
print(result)
#矩阵转置
def transpose(m):
T=[list(i)for i in zip(*m)]
return T
def minus(matrixA,matrixB):
if (len(matrixA)==len(matrixB))and(len(matrixA[0])==len(matrixB[0])):
for i in range(len(matrixA)):
for j in range(len(matrixA[0])):
matrixA[i][j] -= matrixB[i][j]
return matrixA
#单位矩阵
def identity_matrix(num):
id_matrix=np.zeros((num,num))
for i in range(num):
for j in range(num):
if i == j:
id_matrix[i][j] += 1
return id_matrix
#矩阵求逆
def inverse_matrix(matrix):
inverse = []
if len(matrix) != len(matrix[0]):
raise ValueError('The matrix must be square')
if len(matrix) == 1:
inverse.append(1.0 / matrix[0][0])
return inverse
elif len(matrix) == 2:
det = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]
tr = matrix[0][0] + matrix[1][1]
if det == 0:
raise NotImplementedError('this functionality is not implemented')
else:
inverse=(1/det)*(minus(tr*identity_matrix(2),matrix))
return inverse
else:
raise RuntimeError('this is the error message')
print(inverse_matrix([[100]]))
print(inverse_matrix([[4, 5], [14, 7]]))
Python实现矩阵代数基础计算
最新推荐文章于 2024-07-12 16:16:27 发布