欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

线性代数基础

程序员文章站 2022-07-12 14:51:35
...

线性代数

向量

1.线性相关与线性无关

  • 向量组线性相关

存在一组不全为的实数,使得:

即至少有一个向量可以用其余向量线性表示。

  • 向量组线性无关

当且仅当时,才有:

即存在一个向量,其不能等于向量组内任意向量,可由向量组内向量进行唯一的线性表示。

2. 向量空间的维数

一个向量空间所包含的最大线性无关向量的数据,称为向量空间的维数。

3. 向量的点积(内积)

import numpy as np

u, v = np.array([1, 2, 3]), np.array([4, 5, 6])

uv = u.dot(v)
uv = np.dot(u, v)
uv
32

4. 三维向量的叉积(外积)

其中, 为轴的单位向量。

  • 和 的叉积垂直于构成的平面,其方向符合右手规则;

  • 叉积的模等于构成的平面四边形的面积;

import numpy as np

u, v = np.array([1, 2, 3]), np.array([4, 5, 6])

uv = np.cross(u, v).sum()
uv
0

5. 三维向量的混合积

  • 其物理意义为:以为三个棱边所围成平行六面体的体积。当构成右手系时,该平行六面体的体积为正号。

6. 三维向量的并矢积

也记作 或者

import numpy as np

u, v = np.array([1, 2, 3]), np.array([4, 5, 6])

uv = np.outer(u, v)
uv
array([[ 4,  5,  6],
       [ 8, 10, 12],
       [12, 15, 18]])

7. Gram - Schmidt正交化

设 是 中的一个线性无关向量组,若令

则就是一个正交向量组,若再令

就得到一个标准正交向量组 ,且该向量组与 等价。

import numpy as np

A = np.array([[1,1,6],  ## numpy.linalg 是对列向量进行标准正交化
              [1,2,4],
              [1,3,2]])

q, r = np.linalg.qr(A)
q, r
(array([[-5.77350269e-01,  7.07106781e-01,  4.08248290e-01],
        [-5.77350269e-01,  5.55111512e-17, -8.16496581e-01],
        [-5.77350269e-01, -7.07106781e-01,  4.08248290e-01]]),
 array([[-1.73205081, -3.46410162, -6.92820323],
        [ 0.        , -1.41421356,  2.82842712],
        [ 0.        ,  0.        ,  0.        ]]))

矩阵

1. 矩阵的运算

  • 加法 , 都为矩阵

  • 数乘

  • 乘积

  • 点乘(阿达马积)

  • 克罗内克积

2.

,转置;
,矩阵的逆;
,伴随矩阵。

反矩阵


  • 若矩阵可逆,则

  • 若为阶方阵,则

import numpy as np

A = np.mat(np.random.randint(10, size = (3,3)))
A = np.mat([[-3, 2, -5], [-1, 0, -2], [3, -4, 1]])
print(A)
print(A.T) # 转置
print(A.I) # 逆
print(np.linalg.det(A)) # 行列式
print(np.dot(np.linalg.det(A), A.I)) # 伴随矩阵
[[-3  2 -5]
 [-1  0 -2]
 [ 3 -4  1]]
[[-3 -1  3]
 [ 2  0 -4]
 [-5 -2  1]]
[[ 1.33333333 -3.          0.66666667]
 [ 0.83333333 -2.          0.16666667]
 [-0.66666667  1.         -0.33333333]]
-6.0
[[-8. 18. -4.]
 [-5. 12. -1.]
 [ 4. -6.  2.]]

3. 矩阵的秩

  • 初等变换不改变矩阵的秩

  • ,特别当,则:

  • 若存在,则;若存在,则;若,则;若,则

  • 只有零解

import numpy as np
A = np.array([[1, 1], [2, 2]]) # rank = 1
# A = np.array([[1, 2], [3, 4]]) # rank = 2
A_rank = np.linalg.matrix_rank(A)
A_rank
1

4. 特征值与特征向量

  • 设为阶矩阵,若存在常数和维非零向量,使得

  • 设是的一个特征值,则 特征值 , 特征值 , 特征值 , 特征值 , 特征值 , 特征值 , 特征值 , 特征值

  • 若为的个特征值,则

  • 设为的个特征值,对应特征向量为,若,则

import numpy as np

A = np.mat([[-1, 1, 0], [-4, 3, 0], [1, 0, 2]])
eigenvalue, featurevector = np.linalg.eig(A)
eigenvalue, featurevector
(array([2., 1., 1.]), matrix([[ 0.        ,  0.40824829,  0.40824829],
         [ 0.        ,  0.81649658,  0.81649658],
         [ 1.        , -0.40824829, -0.40824829]]))

5. 相似矩阵

  • 设都是阶矩阵,若存在可逆矩阵,使,则称是的相似矩阵, 并称矩阵与相似,记为。
    对进行运算称为对进行相似变换,称可逆矩阵为相似变换矩阵。