"""
scipy4.0:线性计算与矩阵分解
马玉华 2019.11.19
"""
import scipy
import numpy as np
def main():
from scipy import linalg as lg
arr = np.array([[1,2],[3,4]])
print('det:',lg.det(arr)) # 运算行列式
print('inv:',lg.inv(arr)) # 逆矩阵 # A=inv(B),其中B是输入的可逆矩阵,输出A就是B的逆矩阵,逆矩阵满足性质 AB=BA=E (E是单位阵)
b = np.array([6,14])
print('solve:',lg.solve(arr,b)) # 解线性方程组 # 解方程arr * [[x],[y]] = b , 返回[x,y]
# 特征值、特征向量
"""设A是n阶方阵,如果数λ和n维非零列向量x使关系式Ax=λx成立,那么,λ称为矩阵A特征值,非x称为对应特征值λ的特征向量。
式Ax=λx也可写成(A-λE)X=0。它有非零解的充分必要条件是系数行列式| A-λE|=0,可以用这个行列式先解出λ,用方程|A-λE|X=0再解出对应λ的特征向量x"""
print('eig:',lg.eig(arr)) # 打印特征值arr、特征向量arr
# 矩阵分解,分解成 arr = arr1 * arr2
print('lu分解:',lg.lu(arr))
print('qr分解:',lg.qr(arr))
print('svd分解:',lg.svd(arr))
print('schur分解:',lg.schur(arr))
if __name__ == '__main__':
main()
输出结果:
"C:\Users\mayuhuaw\Desktop\Python数据分析-基础技术\3. scipy\venv\Scripts\python.exe" "C:/Users/mayuhuaw/Desktop/Python数据分析-基础技术/3. scipy/scipy4.0:线性计算与矩阵分解.py"
det: -2.0
inv: [[-2. 1. ]
[ 1.5 -0.5]]
solve: [2. 2.]
eig: (array([-0.37228132+0.j, 5.37228132+0.j]), array([[-0.82456484, -0.41597356],
[ 0.56576746, -0.90937671]]))
lu分解: (array([[0., 1.],
[1., 0.]]), array([[1. , 0. ],
[0.33333333, 1. ]]), array([[3. , 4. ],
[0. , 0.66666667]]))
qr分解: (array([[-0.31622777, -0.9486833 ],
[-0.9486833 , 0.31622777]]), array([[-3.16227766, -4.42718872],
[ 0. , -0.63245553]]))
svd分解: (array([[-0.40455358, -0.9145143 ],
[-0.9145143 , 0.40455358]]), array([5.4649857 , 0.36596619]), array([[-0.57604844, -0.81741556],
[ 0.81741556, -0.57604844]]))
schur分解: (array([[-0.37228132, -1. ],
[ 0. , 5.37228132]]), array([[-0.82456484, -0.56576746],
[ 0.56576746, -0.82456484]]))
进程已结束,退出代码 0