← 返回《人工智能数学基础》
📑 查看全课大纲(第 79 / 93 节)
  1. 1.概论和集合的定义
  2. 2.逼疯康托的实数集理论
  3. 3.常用不等式与映射
  4. 4.函数及特殊函数
  5. 5.序列极限的定义
  6. 6.序列极限的性质与夹逼定理
  7. 7.重要极限
  8. 8.无穷小量,无穷大量和一组重要的阶的比较关系
  9. 9.聚点原理
  10. 10.函数极限及其性质
  11. 11.重要极限与等价无穷小
  12. 12.连续函数
  13. 13.导数的概念(那些年,扛起牛顿的胡克)
  14. 14.定义法求导
  15. 15.函数四则运算的导数与反函数求导法则
  16. 16.复合函数,隐函数,参数式求导
  17. 17.不定式求导之“洛必达与伯努利的师生情”
  18. 18.一阶微分
  19. 19.高阶导数
  20. 20.高阶微分
  21. 21.罗尔中值定理与拉格朗日中值定理
  22. 22.柯西空降科学院遭排挤
  23. 23.泰勒公式与泰勒的克妻属性
  24. 24.利用泰勒展开唯一性定理计算泰勒展开
  25. 25.泰勒公式的余项估计
  26. 26.极值问题与导数
  27. 27.函数凹凸性
  28. 28.无卵用的渐近线与函数作图
  29. 29.不定积分的定义
  30. 30.第一换元法
  31. 31.第二换元法
  32. 32.分部积分法
  33. 33.有理式积分
  34. 34.三角替换
  35. 35.定积分的概念
  36. 36.定积分的性质与积分中值定理
  37. 37.变上限定积分
  38. 38.微积分基本定理之“高斯教你如何优雅地装逼”
  39. 39.定积分的换元法
  40. 40.奇偶函数与周期函数的定积分
  41. 41.曲线求长与不可求长曲线(海岸线居然算不出长度?)
  42. 42.旋转体体积
  43. 43.旋转体侧面积
  44. 44.极坐标下图形的面积(数学系常用表白曲线)
  45. 45.欧式空间
  46. 46.点列极限,开集与闭集
  47. 47.多元函数的定义
  48. 48.多元函数的极限
  49. 49.多元连续函数
  50. 50.一阶偏导数
  51. 51.高阶偏导数
  52. 52.全微分
  53. 53.方向导数与梯度
  54. 54.链式法则
  55. 55.一阶全微分形式的不变性与高阶微分
  56. 56.多元函数的泰勒公式
  57. 57.隐函数存在定理与逆映射存在定理
  58. 58.多元函数的极值
  59. 59.矩阵基础知识
  60. 60.行列式的定义与特殊矩阵的行列式
  61. 61.行列式的性质
  62. 62.行列式按k行展开
  63. 63.线性方程组初步与高斯消元法
  64. 64.齐次线性方程组与Cramer法则
  65. 65.线性空间
  66. 66.线性相关与线性无关
  67. 67.向量组的秩
  68. 68.矩阵的秩与线性方程组有解的充要条件
  69. 69.齐次线性方程组的解集结构
  70. 70.非齐次线性方程组解集结构
  71. 71.基与维数
  72. 72.矩阵的乘法
  73. 73.特殊矩阵
  74. 74.矩阵乘积的秩与行列式
  75. 75.矩阵的逆
  76. 76.正交矩阵
  77. 77.矩阵对角化与特征值特征向量
  78. 78.实对称矩阵对角化
  79. 79.二次型与正定矩阵
  80. 80.LU分解
  81. 81.Cholesky分解
  82. 82.SVD分解
  83. 83.线搜索
  84. 84.步长
  85. 85.最速下降法和牛顿法
  86. 86.共轭梯度法
  87. 87.拟牛顿法
  88. 88.无约束优化
  89. 89.若干知识点补充(一)
  90. 90.若干知识点补充(二)
  91. 91.凸优化问题
  92. 92.对偶问题(一)
  93. 93.对偶问题(二)

二次型与正定矩阵

约 34 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

二次型与正定矩阵

小象实战讲义 · 人工智能数学基础

在多元函数极值分析中,我们曾提到海塞矩阵的正定性决定了函数的凹凸性。本节将系统学习这一关键概念背后的数学理论—二次型与正定矩阵。我们将从多元二次多项式的矩阵表示出发,理解如何通过坐标变换简化其形式,并最终掌握判断矩阵正定性的多种方法,为后续的最优化理论奠定坚实的代数基础。

💡 核心导读

  • 二次型的矩阵表示:任何 nn 元二次齐次多项式都可以唯一地表示为一个对称矩阵 AA 的二次型 XTAXX^T A X
  • 合同变换与标准型:通过可逆的线性替换(合同变换),可以将二次型化为只含平方项的标准型,这对应于将对称矩阵合同对角化。
  • 正定性的本质:正定二次型(矩阵)意味着对于任何非零向量,其二次型值恒为正。这等价于矩阵的所有特征值大于零,或合同于单位矩阵。
  • 实用的判定准则:对于实对称矩阵,其正定性的充要条件是所有顺序主子式大于零,这是一个非常便于计算验证的判据。

二次型的基本概念与矩阵表示

一个 nn二次型是指关于 nn 个变量 x1,x2,,xnx_1, x_2, \dots, x_n 的二次齐次多项式,其一般形式为: f(x1,x2,,xn)=a11x12+2a12x1x2++2a1nx1xn+a22x22++annxn2.f(x_1, x_2, \dots, x_n) = a_{11}x_1^2 + 2a_{12}x_1x_2 + \dots + 2a_{1n}x_1x_n + a_{22}x_2^2 + \dots + a_{nn}x_n^2. 其中,xixjx_i x_jxjxix_j x_i 是同类项,因此我们总可以合并,并约定其系数满足 aij=ajia_{ij} = a_{ji}。这使得所有交叉项的系数可以对称地表示。

引入列向量 X=(x1,x2,,xn)TX = (x_1, x_2, \dots, x_n)^T,我们可以将上述二次型简洁地表示为矩阵形式: f(X)=XTAX,f(X) = X^T A X, 其中 AA 是一个 nn实对称矩阵,其元素 Aij=aijA_{ij} = a_{ij}。具体展开为: XTAX=(x1x2xn)(a11a12a1na12a22a2na1na2nann)(x1x2xn).X^T A X = \begin{pmatrix} x_1 & x_2 & \dots & x_n \end{pmatrix} \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1n} \ a_{12} & a_{22} & \dots & a_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{1n} & a_{2n} & \dots & a_{nn} \end{pmatrix} \begin{pmatrix} x_1 \ x_2 \ \vdots \ x_n \end{pmatrix}. 矩阵 AA 称为该二次型的系数矩阵

几何背景:二次型对应于 nn 维空间中的二次曲面(如二维的圆锥曲线、三维的椭球面、双曲面等)。研究二次型的一个核心目标是,能否通过坐标变换(即换一组基)来简化其表达式,消除交叉项,使其只包含平方项。这在代数上对应于将对称矩阵合同对角化。

合同变换与二次型的标准型

为了研究上述坐标变换,我们引入两个关键定义。

定义1(非退化线性替换):设 X,YX, Y 是两组 nn 维变量,若存在一个 nn 阶可逆矩阵 CC,使得 X=CY,X = C Y, 则称此变换为一个非退化线性替换。“非退化”源于 CC 可逆,保证了变换前后自由度不变,信息无损失。

定义2(等价二次型):设 f(X)=XTAXf(X) = X^T A Xg(Y)=YTBYg(Y) = Y^T B Y 是两个 nn 元二次型。若存在一个非退化线性替换 X=CYX = C Y,使得 f(X)=g(Y)f(X) = g(Y),则称这两个二次型等价

X=CYX = C Y 代入 f(X)f(X)f(X)=(CY)TA(CY)=YT(CTAC)Y.f(X) = (C Y)^T A (C Y) = Y^T (C^T A C) Y. 由于 f(X)=g(Y)=YTBYf(X) = g(Y) = Y^T B Y 对任意 YY 成立,因此有 CTAC=BC^T A C = B。这引出了矩阵的合同概念。

定义3(合同矩阵):对于两个 nn 阶矩阵 AABB,如果存在一个可逆矩阵 CC,使得 CTAC=B,C^T A C = B, 则称 AABB 合同

因此,两个二次型等价,当且仅当它们的系数矩阵合同。我们的核心问题转化为:对于一个实对称矩阵 AA,能否找到一个可逆矩阵 CC,使得 CTACC^T A C 是一个对角矩阵 Λ=diag(λ1,λ2,,λn)\Lambda = \operatorname{diag}(\lambda_1, \lambda_2, \dots, \lambda_n)

答案是肯定的。回顾上一节关于实对称矩阵的结论:任何 nn 阶实对称矩阵 AA 都可以正交相似于一个对角矩阵。即存在正交矩阵 TT(满足 T1=TTT^{-1} = T^T),使得 T1AT=TTAT=Λ.T^{-1} A T = T^T A T = \Lambda. 这正是矩阵的合同关系 CTAC=ΛC^T A C = \Lambda,其中 C=TC = T 是可逆的。因此,任何实对称矩阵都合同于一个对角矩阵

对应到二次型上,这意味着总可以通过一个非退化线性替换 X=TYX = T Y,将二次型 XTAXX^T A X 化为: YTΛY=λ1y12+λ2y22++λnyn2.Y^T \Lambda Y = \lambda_1 y_1^2 + \lambda_2 y_2^2 + \dots + \lambda_n y_n^2. 这种只含平方项的形式称为二次型的标准型。对角矩阵 Λ\Lambda 对角线上的元素 λi\lambda_iAA 的特征值。

import numpy as np
import sympy as sp

# 示例:将二次型化为标准型
# 定义二次型 f = 2x1^2 + 2x2^2 + 2x3^2 + 2x1x2 + 2x1x3
# 其系数矩阵 A
A = np.array([[2, 1, 1],
              [1, 2, 0],
              [1, 0, 2]])

# 验证A是对称矩阵
print("矩阵A:\n", A)
print("A是否对称?", np.allclose(A, A.T))

# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
print("\n特征值:", eigenvalues)
print("特征向量矩阵(列向量):\n", eigenvectors)

# 验证正交矩阵性质(实对称矩阵的特征向量矩阵是正交矩阵)
T = eigenvectors
print("\nT^T * T 是否近似单位阵?\n", np.round(T.T @ T, 10))

# 验证合同对角化:T^T * A * T 应为对角阵
Lambda = T.T @ A @ T
print("\n合同对角化结果 T^T * A * T:\n", np.round(Lambda, 10))
# 对角线元素应为特征值
print("对角线元素(应与特征值对应):", np.diag(np.round(Lambda, 10)))

正定二次型与正定矩阵

在优化问题中,我们关心二次型取值的符号。

定义4(正定二次型):设 f(X)=XTAXf(X) = X^T A X 是一个实二次型。如果对于任意非零列向量 XRnX \in \mathbb{R}^n,都有 f(X)=XTAX>0,f(X) = X^T A X > 0, 则称 f(X)f(X)正定二次型

定义5(正定矩阵):若实对称矩阵 AA 对应的二次型 XTAXX^T A X 是正定的,则称 AA正定矩阵。简言之,正定矩阵是正定的实对称矩阵的简称

正定矩阵在多元函数极值判别中扮演着“二阶导数大于0”的角色。若函数在某点的海塞矩阵(二阶偏导数构成的对称矩阵)正定,则该点为局部极小值点。

正定矩阵的等价刻画

AAnn 阶实对称矩阵,则以下命题等价:

  1. AA 是正定矩阵。
  2. AA 合同于单位矩阵 II,即存在可逆矩阵 CC,使得 CTAC=IC^T A C = I
  3. AA 的所有特征值 λ1,λ2,,λn\lambda_1, \lambda_2, \dots, \lambda_n 均为正数。
  4. AA 的各阶顺序主子式均大于零。

顺序主子式是指:取矩阵 AA 的前 kk 行和前 kk 列构成的子矩阵的行列式,记为 Δk\Delta_k,其中 k=1,2,,nk = 1, 2, \dots, n

部分结论的说明

  • (1) \Leftrightarrow (2):若 AA 正定,其特征值全为正数 λi>0\lambda_i > 0。令 D=diag(λ1,,λn)D = \operatorname{diag}(\lambda_1, \dots, \lambda_n),则 AA 合同于 DD。取 P=diag(1/λ1,,1/λn)P = \operatorname{diag}(1/\sqrt{\lambda_1}, \dots, 1/\sqrt{\lambda_n}),则有 PTDP=IP^T D P = I。由于合同关系具有传递性,故 AA 合同于 II。反之,若 AA 合同于 II,则对任意非零 XX,令 Y=C1XY = C^{-1}X(亦非零),有 XTAX=YT(CTAC)Y=YTIY=YTY>0X^T A X = Y^T (C^T A C) Y = Y^T I Y = Y^T Y > 0,故 AA 正定。
  • (1) \Leftrightarrow (3)AA 正交相似于特征值对角阵 DD,即 AA 合同于 DDAA 正定当且仅当 DD 正定,而对角矩阵 DD 正定等价于其对角线元素(即特征值)全大于零。
  • (1) \Leftrightarrow (4):此为Sylvester 定理,其证明思路基于数学归纳法和矩阵分块,是判定正定性最常用的计算工具。
import numpy as np

# 示例:判断矩阵的正定性
def is_positive_definite(matrix):
    """
    通过三种方法判断实对称矩阵是否正定。
    1. 检查所有特征值是否大于0。
    2. 检查所有顺序主子式是否大于0。
    3. 尝试进行Cholesky分解(仅对正定矩阵成功)。
    """
    A = np.array(matrix, dtype=float)
    n = A.shape[0]
    
    # 方法1:特征值判据
    eigvals = np.linalg.eigvals(A)
    all_eig_positive = np.all(eigvals > 0)
    
    # 方法2:顺序主子式判据
    leading_principal_minors = []
    all_minors_positive = True
    for k in range(1, n+1):
        minor = np.linalg.det(A[:k, :k])
        leading_principal_minors.append(minor)
        if minor <= 0:
            all_minors_positive = False
    
    # 方法3:Cholesky分解
    try:
        L = np.linalg.cholesky(A) # 若成功,则A正定
        cholesky_success = True
    except np.linalg.LinAlgError:
        cholesky_success = False
    
    print(f"矩阵:\n{A}")
    print(f"特征值:{eigvals} -> 全大于0: {all_eig_positive}")
    print(f"顺序主子式 (1到{n}阶): {leading_principal_minors} -> 全大于0: {all_minors_positive}")
    print(f"Cholesky分解成功: {cholesky_success}")
    print(f"综合判断为正定矩阵: {all_eig_positive and all_minors_positive and cholesky_success}\n")
    return all_eig_positive

# 测试一个正定矩阵
A_pos = np.array([[4, 1, 0],
                  [1, 5, 2],
                  [0, 2, 6]])
is_positive_definite(A_pos)

# 测试一个非正定矩阵(有负特征值)
A_neg = np.array([[1, 2, 3],
                  [2, 1, 2],
                  [3, 2, 1]])
is_positive_definite(A_neg)

# 测试一个半正定矩阵(有零特征值,即正文练习1中的系数矩阵)
A_semi = np.array([[1, 1, 1],
                   [1, 2, 0],
                   [1, 0, 2]])
print("半正定矩阵测试:")
is_positive_definite(A_semi) # 特征值为 0, 2, 3:三种判据均失败

其他定号性

类似地,我们可以定义其他定号性:

  • 半正定:对任意非零 XRnX \in \mathbb{R}^n,有 XTAX0X^T A X \geq 0。等价于所有特征值 λi0\lambda_i \geq 0
  • 负定:对任意非零 XRnX \in \mathbb{R}^n,有 XTAX<0X^T A X < 0。等价于 A-A 为正定矩阵。
  • 半负定:对任意非零 XRnX \in \mathbb{R}^n,有 XTAX0X^T A X \leq 0。等价于所有特征值 λi0\lambda_i \leq 0
  • 不定:既不是正定、负定、半正定,也不是半负定。

📝 动手练一练

  1. 写出二次型的矩阵:将二次型 f(x1,x2,x3)=x12+2x22+2x32+2x1x2+2x1x3f(x_1, x_2, x_3) = x_1^2 + 2x_2^2 + 2x_3^2 + 2x_1x_2 + 2x_1x_3 写成矩阵形式 XTAXX^T A X,并判断其正定性。 提示:先写出对称矩阵 AA,然后计算其特征值或顺序主子式。

  2. 利用顺序主子式判定:判断下列矩阵是否为正定矩阵。 B=(210121012),C=(121212121).B = \begin{pmatrix} 2 & -1 & 0 \ -1 & 2 & -1 \ 0 & -1 & 2 \end{pmatrix}, \quad C = \begin{pmatrix} 1 & 2 & 1 \ 2 & 1 & 2 \ 1 & 2 & 1 \end{pmatrix}.

参考答案

  1. 系数矩阵 A=(111120102)A = \begin{pmatrix}1 & 1 & 1 \ 1 & 2 & 0 \ 1 & 0 & 2\end{pmatrix}。 a) 顺序主子式:Δ1=1>0\Delta_1 = 1 > 0Δ2=1112=1>0\Delta_2 = \begin{vmatrix}1&1\1&2\end{vmatrix}=1 > 0Δ3=det(A)=0\Delta_3 = \det(A) = 0。由于三阶顺序主子式等于0,不满足全大于0,故矩阵 AA 不是正定的。 b) 计算特征值:λ1=0,λ2=2,λ3=3\lambda_1=0, \lambda_2=2, \lambda_3=3。存在零特征值,验证了其为半正定矩阵。 c) 一个标准型为 f=2y22+3y32f = 2y_2^2 + 3y_3^2

  2. 对于矩阵 BB: 一阶顺序主子式:2>02 > 0。 二阶顺序主子式:2112=3>0\begin{vmatrix}2&-1\-1&2\end{vmatrix} = 3 > 0。 三阶顺序主子式:det(B)=2(22(1)(1))(1)((1)20(1))=23+1(2)=4>0\det(B) = 2*(22 - (-1)(-1)) - (-1)((-1)2 - 0(-1)) = 23 + 1*(-2) = 4 > 0。 所有顺序主子式大于0,故 BB 是正定矩阵。 对于矩阵 CC: 一阶顺序主子式:1>01 > 0。 二阶顺序主子式:1221=3<0\begin{vmatrix}1&2\2&1\end{vmatrix} = -3 < 0。 不满足所有顺序主子式大于0,故 CC 不是正定矩阵。计算其特征值可发现其有负值,为不定矩阵。

本章小结

本节我们建立了从多元二次多项式到对称矩阵的桥梁,并深入探讨了其核心性质。

要点回顾

  • 二次型 XTAXX^T A X 是研究多元二次曲面的代数工具,其中 AA 为实对称矩阵。
  • 通过非退化线性替换(合同变换 CTACC^T A C)可将二次型化为标准型,这对应于寻找矩阵的合同对角化。
  • 正定矩阵(XTAX>0,X0X^T A X > 0, \forall X \neq 0)是优化中凸性的判别依据,它有多种等价刻画:合同于单位阵、特征值全正、顺序主子式全正。

行动清单

  1. 强化概念关联:面对一个多元二次函数,尝试立刻写出其海塞矩阵,并思考其正定性与函数图形凹凸性的关系。
  2. 掌握计算工具:对于给定的实对称矩阵,熟练使用 numpy.linalg.eig 计算特征值,或手动计算其顺序主子式,来判定其正定性。
  3. 代码验证:运行讲义中的代码示例,修改矩阵参数,观察正定、半正定、不定矩阵的特征值、主子式及 Cholesky 分解结果的差异,加深数值理解。

— 小象教研组

配套学习资源与课件
  • 第10章讲义(含板书):线性代数(PDF · 15.5MB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问