本博文源于线性代数基础,旨在用python进行学习。学习用python矩阵乘积、矩阵的秩、矩阵的逆、矩阵的转置、矩阵的化简,求解线性方程组。
例题1:已知A,B矩阵(如下图),求:
- 2A-3B
- B的秩
- A的逆
- A的转置
- AB
- A的行简化阶梯形矩阵
>>> from sympy import *
>>> init_printing(use_unicode=True)
>>> A = Matrix([[3,-1,2],[1,5,7],[5,4,-3]])
>>> A
⎡3 -1 2 ⎤
⎢ ⎥
⎢1 5 7 ⎥
⎢ ⎥
⎣5 4 -3⎦
>>> B = Matrix([[7,5,-4],[1,1,9],[3,-2,1]])
>>> B
⎡7 5 -4⎤
⎢ ⎥
⎢1 1 9 ⎥
⎢ ⎥
⎣3 -2 1 ⎦
>>> 2*A-3*B
⎡-15 -17 16 ⎤
⎢ ⎥
⎢-1 7 -13⎥
⎢ ⎥
⎣ 1 14 -9 ⎦
>>> B.rank()
3
>>> A.inv().evalf(4)
⎡0.2057 -0.02392 0.08134 ⎤
⎢ ⎥
⎢-0.1818 0.09091 0.09091 ⎥
⎢ ⎥
⎣0.1005 0.08134 -0.07656⎦
>>> A.T
⎡3 1 5 ⎤
⎢ ⎥
⎢-1 5 4 ⎥
⎢ ⎥
⎣2 7 -3⎦
>>> A*B
⎡26 10 -19⎤
⎢ ⎥
⎢33 -4 48 ⎥
⎢ ⎥
⎣30 35 13 ⎦
>>> A.rref()[0]
⎡1 0 0⎤
⎢ ⎥
⎢0 1 0⎥
⎢ ⎥
⎣0 0 1⎦
>>> A
⎡3 -1 2 ⎤
⎢ ⎥
⎢1 5 7 ⎥
⎢ ⎥
⎣5 4 -3⎦
>>> B
⎡7 5 -4⎤
⎢ ⎥
⎢1 1 9 ⎥
⎢ ⎥
⎣3 -2 1 ⎦
>>>
例题2 解出下式的X
[ 1 2 3 2 2 1 3 4 3 ] X = [ 2 5 3 1 4 3 ] \left[ \begin{array}{l} 1 & 2 & 3 \\ 2 & 2 & 1 \\ 3 & 4 & 3 \end{array} \right]X=\left[ \begin{array}{l} 2 & 5 \\ 3 & 1 \\ 4 & 3 \\ \end{array} \right] ⎣⎡123224313⎦⎤X=⎣⎡234513⎦⎤
利用X= A − 1 B A^{-1}B A−1B即可
>>> from sympy import *
>>> init_printing(use_unicode=True)
>>> A = Matrix([[1,2,3],[2,2,1],[3,4,3]])
>>> print(A.rank()) # 先判断矩阵A是否满秩,从而确定矩阵A是否可逆
3
>>> B = Matrix([[2,5],[3,1],[4,3]])
>>> print(A.inv()*B)
Matrix([[3, 2], [-2, -3], [1, 3]])
>>>
>>>
>>> A.inv()*B
⎡3 2 ⎤
⎢ ⎥
⎢-2 -3⎥
⎢ ⎥
⎣1 3 ⎦
>>>
例题3.求出AXB=C中的X
A = [ 1 2 3 2 2 1 3 4 3 ] , B = [ 2 1 5 3 ] , C = [ 1 3 2 0 3 1 ] A=\left[ \begin{array}{l} 1 & 2 & 3 \\ 2 & 2 & 1 \\ 3 & 4 & 3 \end{array} \right],B=\left[ \begin{array}{l} 2 & 1 \\ 5 & 3 \\ \end{array} \right],C=\left[ \begin{array}{l} 1 & 3 \\ 2 & 0 \\ 3 & 1 \\ \end{array} \right] A=⎣⎡123224313⎦⎤,B=[2513],C=⎣⎡123301⎦⎤
from sympy import *
init_printing(use_unicode=True)
A = Matrix([[1,2,3],[2,2,1],[3,4,3]])
print(A.rank())
B = Matrix([[2,1],[5,3]])
C = Matrix([[1,3],[2,0],[3,1]])
print(B.rank())
print(A.inv()*C*B.inv())