编程之线性代数矩阵和概率论统计知识回顾

普通编程已经被AI覆盖,我们要向意念编程和自编程等高阶进化。

1.矩阵求逆

要计算矩阵的逆,我们需要手动执行高斯-约旦消元法。假设矩阵A是:

复制代码
A = [[1, 1],
     [3, 2]]

下面是求逆的具体步骤:

1.1 构造增广矩阵[A|I],其中I是单位矩阵:

复制代码
[1 1 | 1 0]
[3 2 | 0 1]

2. 进行行变换,将左侧变为单位矩阵:

  • 第2行 = 第2行 - 3×第1行:

    复制代码
    [1  1  |  1   0]
    [0 -1  | -3   1]
  • 第2行 = -1×第2行:

    复制代码
    [1 1 |  1  0]
    [0 1 |  3 -1]
  • 第1行 = 第1行 - 第2行:

    复制代码
    [1 0 | -2  1]
    [0 1 |  3 -1]

3. 右侧部分即为A的逆矩阵:

复制代码
A⁻¹ = [[-2,  1],
       [3,  -1]]

验证结果:两个矩阵相乘应得到单位矩阵

复制代码
A × A⁻¹ = [[1×(-2)+1×3, 1×1+1×(-1)],
           [3×(-2)+2×3, 3×1+2×(-1)]] = [[1,0],
                                        [0,1]]

这就是np.linalg.inv(A)计算出[[-2. 1. ] [ 1.5 -0.5]](可能你的原矩阵不同)的数学原理和过程。

python 复制代码
import numpy as np
A = np.array([[1, 1], [3, 2]])
# 求逆
A_inv = np.linalg.inv(A)
print("矩阵求逆:\n", A_inv)  # 输出[[-2.   1. ] [ 1.5 -0.5]]

2. 特征值和特征向量




用Python验证

可以用NumPy快速计算验证结果:

python 复制代码
import numpy as np

A = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(A)

print("特征值:", eigenvalues)
print("特征向量(列向量):\n", eigenvectors)

输出结果应与上述推导一致(特征向量可能差一个非零常数倍,因为特征向量不唯一)。

3 均值 方差 标准差(总体、样本)等概念

要计算数组 arr = np.array([1, 2, 3, 4, 5]) 的方差和标准差,步骤如下:

步骤1:明确概念

  • 方差(Variance):衡量数据离散程度的指标,计算每个数据与平均值的差的平方的平均值。
  • 标准差(Standard Deviation):方差的平方根,与原始数据单位一致。

步骤2:计算平均值(Mean)

![先计算数组的平均值 ( \mu ):

\mu = \frac{1 + 2 + 3 + 4 + 5}{5} = \frac{15}{5} = 3 \]](https://i-blog.csdnimg.cn/direct/6c43e4bfb5b24d56b9f72d759114d4b8.png) #### **步骤3:计算方差(Variance)** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/31c22bcbca7e4e7e917022a569892b61.png) #### **步骤4:计算标准差(Standard Deviation)** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/683ab801982b4b08b7697948eecb88dc.png) #### **用Python验证** 使用NumPy计算(默认计算总体方差和标准差,`ddof=1` 表示样本统计量): ```python import numpy as np arr = np.array([1, 2, 3, 4, 5]) # 总体方差和标准差 var_pop = np.var(arr) # 结果:2.0 std_pop = np.std(arr) # 结果:1.414... # 样本方差和标准差(ddof=1表示自由度为n-1) var_samp = np.var(arr, ddof=1) # 结果:2.5 std_samp = np.std(arr, ddof=1) # 结果:1.581... print("总体方差:", var_pop) print("总体标准差:", std_pop) print("样本方差:", var_samp) print("样本标准差:", std_samp) ``` 输出结果与手工计算一致。