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

发布于:2025-08-11 ⋅ 阅读:(14) ⋅ 点赞:(0)

普通编程已经被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]](可能你的原矩阵不同)的数学原理和过程。

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快速计算验证结果:

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
]

步骤3:计算方差(Variance)

在这里插入图片描述

步骤4:计算标准差(Standard Deviation)

在这里插入图片描述

用Python验证

使用NumPy计算(默认计算总体方差和标准差,ddof=1 表示样本统计量):

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)

输出结果与手工计算一致。


网站公告

今日签到

点亮在社区的每一天
去签到