1.矩阵的幂计算(设计思想:递归)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
def matrixPow(Matrix,n):
if(type(Matrix)==list):
Matrix=np.array(Matrix)
if(n==1):
return Matrix
else:
return np.matmul(Matrix,matrixPow(Matrix,n-1))
2.求逆矩阵/伴随矩阵
设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。当矩阵A的行列式|A|不等于0时才存在可逆矩阵。
import numpy as np
A = np.array([[1, -2, 1], [0, 2, -1], [1, 1, -2]])
#np.linalg.det求方阵的行列式(如果行列式不等于0才存在可逆矩阵),使用linalg.inv求得方阵的逆矩阵
if np.linalg.det(A):
B = np.linalg.inv(A)
print(B)
#伴随矩阵
C = np.linalg.det(A) * np.linalg.inv(A)
3.矩阵的秩
import numpy as np
A = np.array([[1, -2, 1], [0, 2, -1], [1, 1, -2]])
#返回矩阵的秩
B = np.linalg.matrix_rank(A)
print(B)
4.单位矩阵&反向单位矩阵
# 单位矩阵,type是ndarray
A = np.eye(3)
"""
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
"""
print(A)
# 自定义:斜对角矩阵(可构建数量矩阵)aE
B = np.eye(3)*3.14
"""
[[3.14 0. 0. ]
[0. 3.14 0. ]
[0. 0. 3.14]]
"""
print(B)
# 反向单位矩阵
C = np.fliplr(A)
"""
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]]
"""
print(C)
5.矩阵乘法
1.如有对角形矩阵A,A左(右)乘矩阵B,等于用A主对角线上的元素依次乘B各行(列)。AB为左乘,左乘行乘;BA为右乘,右乘列乘。
import numpy as np
def matrixDot(p1, p2):
return np.dot(p1, p2)