许多计算问题都涉及到为一组未知变量找到值,使得它们同时满足多个线性关系。比如根据供需方程来确定产品的合适价格,或者在预算限制下确定资源的最佳分配。这些情况经常会形成线性方程组。
一个包含两个方程和两个未知变量 x1x_1x1 和 x2x_2x2 的系统:
2x1+3x2=72x_1 + 3x_2 = 72x1+3x2=7
1x1−1x2=11x_1 - 1x_2 = 11x1−1x2=1
我们的目标是找到使这两个方程都成立的 x1x_1x1 和 x2x_2x2 的值。虽然我们可以使用基础代数中的代入法或消元法来解这个系统,但线性代数提供了一种更系统、可扩展的方法,尤其是在处理大量方程和变量时。第一步是使用矩阵和向量 (vector)来表示这个系统。
我们可以把这个系统分成三个不同的部分:
变量的系数(即与 x1x_1x1 和 x2x_2x2 相乘的数字)。
变量本身(x1x_1x1, x2x_2x2)。
方程右侧的常数(7 和 1)。
我们将这些部分组织成矩阵和向量的形式。
系数矩阵 (A)
我们将变量的系数收集到一个矩阵中,我们称之为 AAA。矩阵中的每一行对应一个方程,每一列对应一个变量。
对于我们的例子系统:
2x1+3x2=72x_1 + 3x_2 = 72x1+3x2=7
1x1−1x2=11x_1 - 1x_2 = 11x1−1x2=1
系数是 2、3、1 和 -1。我们将其排列如下:
A=[231−1]A = \begin{bmatrix} 2 & 3 \\ 1 & -1 \end{bmatrix}A=[213−1]
第一行 [23][2 \quad 3][23] 包含第一个方程的系数。第二行 [1−1][1 \quad -1][1−1] 包含第二个方程的系数。第一列 [21]\begin{bmatrix} 2 \\ 1 \end{bmatrix}[21] 包含 x1x_1x1 的系数,第二列 [3−1]\begin{bmatrix} 3 \\ -1 \end{bmatrix}[3−1] 包含 x2x_2x2 的系数。
变量向量 (vector) (x)
未知变量被排列成一个列向量,通常表示为 xxx:
x=[x1x2]x = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}x=[x1x2]
常数向量 (vector) (b)
方程右侧的常数也被排列成一个列向量,通常表示为 bbb:
b=[71]b = \begin{bmatrix} 7 \\ 1 \end{bmatrix}b=[71]
组装矩阵方程:Ax = b
现在,这些部分是如何组合在一起的呢?回顾上一章中矩阵乘法的定义。我们将系数矩阵 AAA 乘以变量向量 (vector) xxx:
Ax=[231−1][x1x2]Ax = \begin{bmatrix} 2 & 3 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}Ax=[213−1][x1x2]
进行矩阵-向量乘法(AAA 的每一行与列向量 xxx 的点积):
Ax=[(2×x1)+(3×x2)(1×x1)+(−1×x2)]=[2x1+3x2x1−x2]Ax = \begin{bmatrix} (2 \times x_1) + (3 \times x_2) \\ (1 \times x_1) + (-1 \times x_2) \end{bmatrix} = \begin{bmatrix} 2x_1 + 3x_2 \\ x_1 - x_2 \end{bmatrix}Ax=[(2×x1)+(3×x2)(1×x1)+(−1×x2)]=[2x1+3x2x1−x2]
仔细观察得到的向量。它的第一个元素 2x1+3x22x_1 + 3x_22x1+3x2,正是我们第一个原始方程的左侧。它的第二个元素 x1−x2x_1 - x_2x1−x2,是第二个原始方程的左侧。
原始系统规定这些表达式必须分别等于常数 7 和 1。我们将这些常数记录在向量 bbb 中。因此,我们可以将整个方程组写成一个单一的矩阵方程:
Ax=bAx = bAx=b
代入我们的矩阵和向量:
[231−1][x1x2]=[71]\begin{bmatrix} 2 & 3 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 7 \\ 1 \end{bmatrix}[213−1][x1x2]=[71]
这个紧凑形式 Ax=bAx = bAx=b 完美地表示了原始的线性方程组。
一般形式
这种表示方式不限于两个方程。任何包含 nnn 个未知数的 mmm 个线性方程组:
a11x1+a12x2+⋯+a1nxn=b1a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n = b_1a11x1+a12x2+⋯+a1nxn=b1
a21x1+a22x2+⋯+a2nxn=b2a_{21}x_1 + a_{22}x_2 + \dots + a_{2n}x_n = b_2a21x1+a22x2+⋯+a2nxn=b2
⋮\vdots⋮
am1x1+am2x2+⋯+amnxn=bma_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n = b_mam1x1+am2x2+⋯+amnxn=bm
都可以写成矩阵形式 Ax=bAx = bAx=b,具体如下:
AAA 是 m×nm \times nm×n 的系数矩阵:
A=[a11a12…a1na21a22…a2n⋮⋮⋱⋮am1am2…amn]A = \begin{bmatrix}
a_{11} & a_{12} & \dots & a_{1n} \\
a_{21} & a_{22} & \dots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \dots & a_{mn}
\end{bmatrix}A=a11a21⋮am1a12a22⋮am2……⋱…a1na2n⋮amn
xxx 是 n×1n \times 1n×1 的变量列向量 (vector):
x=[x1x2⋮xn]x = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}x=x1x2⋮xn
bbb 是 m×1m \times 1m×1 的常数列向量:
b=[b1b2⋮bm]b = \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_m \end{bmatrix}b=b1b2⋮bm
这种 Ax=bAx = bAx=b 格式是线性代数中的标准形式。它将已知的系数 (AAA)、未知变量 (xxx) 和目标结果 (bbb) 分开。这种结构有益处,因为它使我们能够运用矩阵代数中强大的运算和思路,例如矩阵求逆(我们稍后会讨论),以高效地分析和解决这些系统。以这种形式表示数据和关系在许多学科中都很常见,包括机器学习 (machine learning),你可能会在线性回归等算法中遇到它。