线性代数计算代码(python)
行向量 \([-1,0,1]\)
np.array([[-1,0,1]])
列向量 \([-1,0,1]^T\)
np.array([[-1],[0],[1]])
注意:无论是行向量还是列向量都需要双重方括号
求向量的点乘和叉乘
v1 = np.array([1, 0, 0])
v2 = np.array([0, 1, 0])
inner_product = np.dot(v1, v2)
cross_product = np.cross(v1, v2)
求逆矩阵
import numpy as np
from scipy import linalg
A = np.array([[ 1, 2],
[ 3, 4]])
A_I = linalg.inv(A)
print(A_I)
print(np.dot(A,A_I))
求特征值与特征向量
import numpy as np
from scipy import linalg
A = np.array([[3, 1],
[0, 2]])
eigen_value, eigen_evector = linalg.eig(A)
print(eigen_value)
print(eigen_evector)
奇异值分解
import numpy as np
A = np.array([[1,0,0],
[0,1,0],
[1,1,1]])
U,D,V = np.linalg.svd(A) # 对矩阵A进行奇异值分解
D = np.array([[D[0],0,0], [0,D[1],0], [0,0,D[2]]]) # 将向量D转化为对角矩阵
print(np.dot(np.dot(U,D),V) - A) # 验证UDV==A
解方程 \(Ax=b\),其中 \(A\) 为可逆矩阵
import numpy as np
A = np.array([[1 , 2],
[3 , 5]])
b = np.array([[1],
[2]])
x = np.linalg.solve(A, b)
print(x)