html企业网站源码下载,做公众号要不要有自己的网站,网站上的图片格式怎么做,不用网站怎么做落地页线性代数
线性代数#xff08;如矩阵乘法、矩阵分解、行列式以及其他方阵数学等#xff09;是任何数组库的重要组成部分#xff0c;NumPy中实现了线性代数中常用的各种操作#xff0c;并形成了numpy.linalg线性代数相关的模块。本节主要介绍如下函数#xff1a;
diag如矩阵乘法、矩阵分解、行列式以及其他方阵数学等是任何数组库的重要组成部分NumPy中实现了线性代数中常用的各种操作并形成了numpy.linalg线性代数相关的模块。本节主要介绍如下函数
diag以一维数组的形式返回方阵的对角线或非对角线元素或将一维数组转换为方阵非对角线元素为0。dot矩阵乘法。trace计算对角线元素的和。det计算矩阵行列式。eig计算方阵的特征值和特征向量。inv计算方阵的逆。
向量与矩阵
矩阵有多行多列元素组成的一个集合一个m*n的矩阵有m行n列个元素
向量如果一个矩阵只有一列那么就是一个列向量如果只有一行那么就是一个行向量
从某个角度来说矩阵就是由多个向量组成的
矩阵相乘
A矩阵m行
B矩阵n列
前提mn
C矩阵AB乘积
乘积C的第m行、n列 矩阵A的第m行的元素与矩阵B第n列元素的乘积之和
# 矩阵相乘
a np.arange(12)
b a.reshape([3, 4])
c a.reshape([4, 3])
# 矩阵b的第二维大小必须等于矩阵c的第一维大小
d b.dot(c) # 等价于 np.dot(b, c)
print(a: \n{}.format(a))
print(b: \n{}.format(b))
print(c: \n{}.format(c))
print(d: \n{}.format(d))a: [ 0 1 2 3 4 5 6 7 8 9 10 11] b: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] c: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] d: [[ 42 48 54] [114 136 158] [186 224 262]]
# numpy.linalg 中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西
# np.linalg.diag 以一维数组的形式返回方阵的对角线或非对角线元素
# 或将一维数组转换为方阵非对角线元素为0
e np.diag(d)
f np.diag(e)
print(d: \n{}.format(d))
print(e: \n{}.format(e))
print(f: \n{}.format(f))d: [[ 42 48 54] [114 136 158] [186 224 262]] e: [ 42 136 262] f: [[ 42 0 0] [ 0 136 0] [ 0 0 262]]
# trace, 计算对角线元素的和
g np.trace(d)
g440
# det计算行列式
h np.linalg.det(d)
h1.3642420526593978e-11
# eig计算特征值和特征向量
i np.linalg.eig(d)
i(array([4.36702561e02, 3.29743887e00, 3.13152204e-14]), array([[ 0.17716392, 0.77712552, 0.40824829], [ 0.5095763 , 0.07620532, -0.81649658], [ 0.84198868, -0.62471488, 0.40824829]]))
# inv计算方阵的逆
tmp np.random.rand(3, 3)
j np.linalg.inv(tmp)
jarray([[-0.59449952, 1.39735912, -0.06654123], [ 1.56034184, -0.40734618, -0.48055062], [ 0.10659811, -0.62164179, 1.30437759]])
补充矩阵的逆
矩阵的逆是指对于一个n维的矩阵A存在一个n维的矩阵B使得A乘以B等于单位矩阵E即ABBAE。其逆矩阵求解方法有以下几种
伴随矩阵法 伴随矩阵法是求解矩阵逆的一种方法。对于一个n维矩阵A其逆矩阵可以用下式表示A^(-1)1/|A| * Adj(A)其中|A|表示A的行列式Adj(A)表示A的伴随矩阵。伴随矩阵的求法是先求出矩阵A的代数余子式然后将其转置得到的矩阵即为伴随矩阵。
初等变换法 初等变换法是求解矩阵逆的另一种方法。将待求逆的矩阵A和单位矩阵E按行合并成一个矩阵[A|E]然后对其进行初等变换直到左边的矩阵变为单位矩阵右边的矩阵即为所求的逆矩阵。
高斯-约旦消元法 高斯-约旦消元法也是求解矩阵逆的一种方法。将待求逆的矩阵A和单位矩阵E按列合并成一个矩阵[A|E]然后对其进行高斯-约旦消元直到左边的矩阵变为单位矩阵右边的矩阵即为所求的逆矩阵。
分块矩阵法 分块矩阵法适用于分块矩阵的求逆即将一个大的矩阵分成多个小的矩阵。其方法是将大矩阵A分成四个小矩阵A11、A12、A21、A22并根据矩阵分块公式求出逆矩阵。
代码合集
import numpy as npdef func1():a np.arange(12)b a.reshape([3, 4])c a.reshape([4, 3])# 矩阵b的第二维大小必须等于矩阵c的第一维大小d b.dot(c) # 等价于 np.dot(b, c)# np.dot(b, c)print(a: \n{}.format(a))print(b: \n{}.format(b))print(c: \n{}.format(c))print(d: \n{}.format(d))# numpy.linalg 中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西# np.linalg.diag 以一维数组的形式返回方阵的对角线或非对角线元素# 或将一维数组转换为方阵非对角线元素为0print(linalg test)e np.diag(d)f np.diag(e)print(d: \n{}.format(d))print(e: \n{}.format(e))print(f: \n{}.format(f))# 计算对角线元素之和g np.trace(d)print(g)# det计算行列式h np.linalg.det(d)print(h)# eig计算特征值和特征向量i np.linalg.eig(d)print(i)def func2():# 计算方阵的逆# https://blog.51cto.com/u_15072903/3963066tmp np.random.rand(3, 3)print(tmp)j np.linalg.inv(tmp)print(j)print(tmp.dot(j))print(j.dot(tmp))if __name__ __main__:# func1()func2()