深入学习矩阵运算(数学知识+python代码)

1 定义

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵A也记作Amn

元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵 。

2 基本运算

矩阵运算在科学计算中非常重要,而矩阵的基本运算包括矩阵的加法,减法,数乘,转置,共轭和共轭转置。

2.1 加、减法

例子:

矩阵的加、减法满足下列运算律(ABC都是同型矩阵):

注意的是只有同型矩阵之间才可以进行加减法。

代码实现:

import numpy as np

A = np.array([
    [1, 4, 2],
    [2, 0, 0]
])
B = np.array([
    [0, 0, 5],
    [7, 5, 0]
])

# 加法
print("A + B =\n", A + B)
# 减法
print("A - B =\n", A - B)

结果:

A + B =
 [[1 4 7]
 [9 5 0]]
A - B =
 [[ 1  4 -3]
 [-5 -5  0]]

2.2 数乘

矩阵的数乘满足以下运算律:

矩阵的加减法和矩阵的数乘合称矩阵的线性运算

代码实现:

import numpy as np

C = np.array([
    [1, 8, -3],
    [4, -2, 5]
])

# 数乘
print("2 * C =\n", 2 * C)

结果:

2 * C =
 [[ 2 16 -6]
 [ 8 -4 10]]

2.3 点乘、点除

代码实现:

import numpy as np

A = np.array([
    [-1, 4],
     [2, 3]
])
B = np.array([
    [3, 2],
    [4, 5]
])

# 矩阵点乘
print("A * B =\n", A * B)

# 矩阵点除
print("A / B =\n", A / B)

结果:

A * B =
 [[-3  8]
 [ 8 15]]
A / B =
 [[-0.33333333  2.        ]
 [ 0.5         0.6       ]]

2.4 转置

把矩阵A的行和列互相交换所产生的矩阵称为A的转置矩阵 ,这一过程称为矩阵的转置。

矩阵的转置满足以下运算律:

代码实现:

import numpy as np

D = np.array([
    [2, 4, 3],
    [0, -2, 8]
])

# 转置
print("D transpose\n", D.T)
print("D transpose\n", np.transpose(D))

结果:

D transpose
 [[ 2  0]
 [ 4 -2]
 [ 3  8]]
D transpose
 [[ 2  0]
 [ 4 -2]
 [ 3  8]]

2.5 逆矩阵

代码实现:

import numpy as np

D = np.array([
    [2, 4],
    [0, -2]
])

# 转置
print("D inv\n", np.linalg.inv(D))

结果:

D inv
 [[ 0.5  1. ]
 [-0.  -0.5]

3 乘法

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如Am×n矩阵和Bn×p矩阵,它们的乘积C是一个m×p矩阵

它的一个元素:

并将此乘积记为:C = AB

例如:

矩阵的乘法满足以下运算律:

结合律:(AB)C = A(BC)

左分配律:(A + B) = AC = BC

右分配律:C(A + B) = CA + CB

注:矩阵乘法不满足交换律

代码实现:

import numpy as np

E = np.array([
    [1, 0, 2],
    [-1, 3, 1]
])

F = np.array([
    [3, 1],
    [2, 1],
    [1, 0]
])

# 乘法
print("E * F =\n", E.dot(F))
print("E * F =\n", np.dot(E, F))

结果:

E * F =
 [[5 1]
 [4 2]]
E * F =
 [[5 1]
 [4 2]]

4 特征值与特征向量

n×n的方块矩阵A的一个特征值和对应特征向量是满足

的标量以及非零向量 [14]  。其中v为特征向量λ为特征值。

A的所有特征值的全体,叫做A的谱,记为λ(A)。矩阵的特征值和特征向量可以揭示线性变换的深层特性

代码实现:

import numpy as np

G = np.array([
    [-1, 4],
    [2, 3]
])

# 特征值,特征向量
eigval, eigvec = np.linalg.eig(G)
print("G eig value:\n", eigval)
print('G eig vector:\n', eigvec)

# 直接求解特征值
eigval = np.linalg.eigvals(G)
print("G eig value:\n", eigval)

结果:

G eig value:
 [-2.46410162  4.46410162]
G eig vector:
 [[-0.9390708  -0.59069049]
 [ 0.34372377 -0.80689822]]
G eig value:
 [-2.46410162  4.46410162]

5 矩阵的迹

n×n矩阵A的对角元素之和称为矩阵A的迹(trace),记作tr(A),即

G = np.array([
    [-1, 4],
    [2, 3]
])

# 矩阵的迹
print("G trace:\n", np.trace(G))

结果:

G trace:
 2

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值