#线性代数基础
#11111.行列式 det
import numpy as np
arr=np.array([[1,1],[30,20]]) #即二维数组的定义
print('行列式的逆是',arr.T)
print('行列式的值是:',np.linalg.det(arr))
#应用:求解线性方程组 solve
A=np.array([[1,1],[30,20]]) #系数矩阵
B=np.array([80,2050])
x=np.linalg.solve(A,B)
print('线性方程组的解为:',x)
#22222.矩阵
#创建矩阵的两种方法
A1=np.mat('1 2 3 4;3 4 5 6;5 6 7 8;7 8 9 0')
print(A1)
A2=np.matrix([[1,2,3,4],[3,4,5,6],[5,6,7,8],[7,8,9,0]])
print(A2)
#零矩阵
O=np.zeros((3,3))
print('零矩阵是:\n',O)
#单位矩阵
E=np.identity(3)
print('单位矩阵是:\n',E)
#对角矩阵
C=np.diag([1,2,3,4],k=0)
print('对角矩阵:\n',C)
#提取矩阵的上三角、下三角矩阵
D1=np.triu(A2,k=0)
D2=np.tril(A2,k=0)
print('矩阵A2的上下三角矩阵分别是:\n',D1,'\n',D2)
#矩阵的运算
print(A1+A2)
print(3*A1)
print(A1*A2)
print(A1.T) #转置
print('矩阵的逆是:\n',A1.I)
print('矩阵的逆是:\n',np.linalg.inv(A1))
print('矩阵的秩是:',np.linalg.matrix_rank(A1))
#协方差矩阵
x=np.random.random(size=(2,5)) #随机生成2行5列的矩阵
print('矩阵x的协方差矩阵是:\n',np.cov(x))
print('矩阵x的相关矩阵是:\n',np.corrcoef(x))
#特征值与特征向量:
F=np.matrix([[3,-1],[-1,3]])
print('矩阵的特征值是:',np.linalg.eigvals(A)) #只能求特征值
a,b=np.linalg.eig(A) #可以同时求特征值及特征向量
print('矩阵的特征值和特征向量分别为:',a,'\n',b)