Mengqi's blog

线性代数拾遗(四):线性方程组的应用


由于这段时间科研任务较重,加上 hexo 升级后总出现一些奇怪的问题,所以有一段时间没更新这个系列了,今天忙里偷闲补上一篇。

前面几章,我们回顾了一遍线性方程组和矩阵的一些概念。线性代数的最原始问题是解线性方程组,为了解决这个问题,我们引入了向量和矩阵,继而对矩阵的一些特性也进行了一番分析,然后又发现矩阵不但可以表示数据,也可以表示变换。然而,这些概念是如何应用于现实生活呢,实际生活中有哪些线性方程组的例子?这一章我们来介绍一些线性代数的实际应用。

总体上来说,牵涉到多个变量的相互约束,而且这些约束是「线性」的问题时,就有可能通过建立线性方程组从而得到解。

一、经济学例子

这是来自《线性代数及其应用》中的一个例子,很好地展示了线性代数在经济学中的应用:

比如一个国家包括煤炭、电力、钢铁三个部门,各部门都产出一定的资源,同时也消耗一定的资源(为方便讨论,本例中只考虑煤炭、电力、钢铁这三种资源,并且假设所有产出的资源都会被消耗)。比如,煤炭部门生产的每 100 份煤炭中,60 份被电力部门消耗,40 份被钢铁部门消耗;电力部门每生产 100 份煤炭,40 份被煤炭部门消耗,10 份被自己消耗,还有 50 份被钢铁部门消耗;钢铁部门每生产 100 份钢铁,60 份被煤炭部门消耗,20 份被电力部门消耗,还有 20 份被自己消耗。那么,如何给这三种资源定价,使得各部门的收支达到平衡?

首先,上面所述的各部门产出与消耗情况可以用一个表格来表示:

煤炭产出电力产出钢铁产出
煤炭部门的消耗00.40.6
电力部门的消耗0.60.10.2
钢铁部门的消耗0.40.50.2

表中每一行表示某部们消耗各资源的情况,各列表示某资源被各部门消耗的情况。例如,煤炭部门每生产 1 单位的煤炭,就有 0.6 单位被电力部门消耗,0.4 单位被钢铁部门消耗;同时,煤炭部门也会消耗 0.4 单位的电力和 0.6 单位的钢铁来保证生产。

当然我们可以考虑用向量来表示这个表格。将表格中的各行向量化,得到:

Oc=[0,0.4,0.6]Oe=[0.6,0.1,0.2]Os=[0.4,0.5,0.2]\begin{aligned} O_c &= [0, 0.4, 0.6] \\ O_e &= [0.6, 0.1, 0.2] \\ O_s &= [0.4, 0.5, 0.2] \end{aligned}

其中,OcO_c, OeO_e, OsO_s 分别表示煤炭、电力、钢铁各个部门消耗三种资源的量。

各种资源的单位价格也可以用符号定义。例如用 pcp_c, pep_e, psp_s 分别来表示煤炭、电力、钢铁三种资源的价格,那么煤炭部门的总支出就是 0pc+0.4pe+0.6ps=Oc[pcpeps]0 \cdot p_c+0.4 p_e+0.6 p_s = O_c \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix}. 同理,电力部门和钢铁部门的总支出是 Oe[pcpeps],Os[pcpeps]O_e \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix}, O_s \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix}.

也就是说,煤炭部门每生产出 1 单位价值为 pcp_c 的煤炭,它就需要消耗价值为 Oc[pcpeps]O_c \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} 的资源。要使煤炭部门收支平衡,就需要:

Oc[pcpeps]=pcO_c \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} = p_c

同理,要使三个部门都达到收支平衡,需要:

Oc[pcpeps]=[0,0.4,0.6][pcpeps]=pcOe[pcpeps]=[0.6,0.1,0.2][pcpeps]=peOs[pcpeps]=[0.4,0.5,0.2][pcpeps]=ps\begin{aligned} O_c \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= [0 , 0.4, 0.6] \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= p_c \\ O_e \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= [0.6, 0.1, 0.2] \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= p_e \\ O_s \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= [0.4, 0.5, 0.2] \cdot \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= p_s \end{aligned}

借助矩阵的封装,我们可以把这三个式子合并为一个式子:

A[pcpeps]=[pcpeps](AI)[pcpeps]=[000](1)\begin{array}{rccl} \mathbf{A} &\cdot &\begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= \begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} \\ \left( \mathbf{A} - \mathbf{I} \right) &\cdot &\begin{bmatrix}p_c\\ p_e\\ p_s\end{bmatrix} &= \begin{bmatrix}0\\ 0\\ 0\end{bmatrix} \tag{1} \\ \end{array}

其中,3 x 3 矩阵 A\mathbf{A} 就是上面的那个表格。

式子 (1) 是我们熟悉的齐次线性方程组的形式。按照套路,我们化简增广矩阵:

[10.40.600.60.90.200.40.50.80][10.40.60010.8500000][100.940010.8500000]\begin{bmatrix} -1 & 0.4 & 0.6 & 0 \\ 0.6 & -0.9 & 0.2 & 0 \\ 0.4 & 0.5 & -0.8 & 0 \end{bmatrix} \sim \begin{bmatrix} 1 & -0.4 & -0.6 & 0 \\ 0 & 1 & -0.85 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix} \sim \begin{bmatrix} 1 & 0 & -0.94 & 0 \\ 0 & 1 & -0.85 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix}

由此得到通解:pc=0.94psp_c = 0.94 p_s, pe=0.85psp_e = 0.85 p_spsp_s 为自由变量。

所以,各部门达到收支平衡时的平衡价格向量为:

p=ps[0.940.851]\mathbf{p} = p_s \begin{bmatrix} 0.94 \\ 0.85 \\ 1 \end{bmatrix}

也就是说,如果钢铁价格为100元,那么煤炭和电的价格分别为94元和和85元时,整个经济系统可以达到平衡。

二、总结

从上面的例子,我们可以发现:

  • 当一个系统中各个部分之间存在线性约束时(例如化学方程式的配平,各元素之间相互存在约束关系),就有可能借助线性方程组来建模。
  • 当一个问题描述的是一张简单的表格时,我们可以将其向量化为一系列向量,或是一个矩阵,进而进行「批量」计算。

这里,我们再次发现了矩阵「封装」计算的特点。借助向量化矩阵化,我们可以将传统的数学问题转化为线性代数问题(如本文的例子就转化为了齐次线性方程组)。

参考文献

版权声明:

本文中所有文字、图片版权均属本人所有,如需转载请注明来源。