• 沒有找到結果。

第10讲 线性方程组

N/A
N/A
Protected

Academic year: 2021

Share "第10讲 线性方程组"

Copied!
13
0
0

加載中.... (立即查看全文)

全文

(1)

  某食品

蛋白质(%) 20 16 10 15 15

脂肪(%) 3 8 2 5 5

碳水化合物(%) 10 25 20 5 12

第10讲 线性方程组

作者:欧新宇(Xinyu OU)

本章要点

1. 线性方程概述

2. 线性方程组解的几何意义 3. 高斯消元法与行阶梯方程组 4. 矩阵的初等变换

5. 线性方程组应用实例(Python)

1. 线性方程组概述

【例5.1】食品配方的应用

某食品厂收到某种食品的订单,要求这种食品由甲、乙、丙、丁四种原料做成,且该食品中含蛋白质、

脂肪和碳水化合物的比例分别为15%、5%和12%。而甲、乙、丙、丁原料中含蛋白质、脂肪和碳水化 合物的百分比由下表给出。那么,如何用这四种原料配置出满足要求的食品呢?

解出上述方程组的解,即可获得四种原料的配比。

线性代数的重要任务之一——解方程

【定义】 若线性方程组无解,则称该方程组是不相容的;如果线性方程组至少存在一个解,则称该方程 是相容的。

2. 线性方程组解的几何意义

2.1 适定二元线性方程组的求解

(a) 有唯一解的方程

(2)

对于该等式,可以由下而上地回代解出 ,这是解线性方程组的规范方法。

(b) 无解的方程

该等式为矛盾方程,无解。

(c) 有无穷解的方程

该等式有无穷解。

2.2 超定二元方程组的近似解

三个方程,只有两个变量。它们所对应的三根直线并不共点,即方程组不相容,称为超定方程组。它没 有精确解,但有近似解——最小二乘解。

(3)

2.3 三元方程组的求解

1. 从第2个方程中减去第1个方程的2倍,得到 x 系数为零的新的第2个方程,再从第3个方程中减去第 1个方程的-5倍,得到 x 系数为零的新的第3个方程。

2. 再将第2个方程乘7/5与第3个方程相加,在第3个方程中消去 y。于是形成了阶梯形的结构。可以由 下而上地回代解出z, y, x,这是解线性方程组的规范方法。

这三个方程在笛卡尔坐标系中的图形是三个平面,方程组的解就是它们的交点坐标。

若将第三个方程改一下,消元后剩了两个方程,交点就成了交线,说明有无数个解,构成了一根直线。

与二元方程类似,三元方程也存在如下的解空间:共线、无解、两两共线。

(4)

对于更多元的线性方程组,不可能想象出其空间的几何图形,但关于欠定适定不相容方程(超定)

的基本概念是一脉相承的,它们的解的特性也都可以推广到高维空间。

3. 高斯消元法与行阶梯方程组

3.1 高斯消元法

将求解方法推广到高阶系统,需要借助于矩阵,并用计算机进行求解,这是线性代数与初等代数的区 别。设 为方程的个数, 为未知数的个数,则 元线性方程组可以表示为:

线性方程组中解的全体称为方程组的解集(solution set)。解方程组就是求其全部解,即解集。一般情况 下,变量的个数 与方程的个数 不一定相等。

适定方程组 (m=n):存在着唯一的一组解;

欠定方程组 (m<n):其解存在,但不唯一;

超定方程组 (m>n):不存在精确解,可以求出其近似解。

【定义】 若两个含有相同变量的方程组具有相同的解集,则称它们是等价的,这两个方程被称为同解方 程组。

考虑以下两个方程组:

( )

不难得到它们的解都是(-2, 3, 2),因此这两个方程称为同解方程组

【定义】消元法: 通过消元变换把方程组化为容易求解的阶梯形结构的同解方程组

【例5.2】 利用消元法求解方程组

求解方程组 (I)

解:对(I)式进行消元变化可以得到(II), (III)式。

求行最简形

(II)

(III)

1. 将(I)式中的第一个方程分别乘以-3/3及-2/3,加到第二、三方程上,可以消去后两个方程中的变量 ;

2. 将(II)式中的第二个方程乘-2/3,加到第三个方程中,消去其中的 ,得到第(III)个方程组;

3. 第(III)个方程组称为行阶梯形方程组。这样的阶梯形方程组可以用回代法方便地逐个求出它的解。

回代过程如下:

(IV)

(5)

(V)

(VI)

1. 由最后一个方程解出 2. 代入第二个方程,解得:

3. 再将 代入第一个方程,得到: 。

最后的行阶梯形方程组(VI)只保留了系数均为1的对角项。得到它就等于求出了方程组的解。

3.2 行阶梯矩阵

【定义】 若一个矩阵满足

(1)每一个非零行中的第一个非零元为1;

(2)第k行的元不全为零时,第k+1行首变量之前零的个数多于第k行首变量之前零的个数;

(3)所有元素均为零的行必在不全为零的行之后,

则称其为行阶梯形矩阵。

【例5.3】 下列矩阵为行阶梯形矩阵

【例5.4】 下列矩阵不是行阶梯形矩阵

3.3 消元法的三种同解变换

在消元过程中,主要对原方程组进行了三种变换: 1. 互换两个方程的位置;称为位置变换。 2. 用一个非零数 k 乘某个方程;称为数乘变换

3. 把一个方程的 k 倍加到另一个方程上。称为消元变换

这三种变换称为线性方程组的同解变换。因为对方程组而言,这些变换不会改变方程组的解。 消元法规则刻板,容易程序化,其计算量又是最少的,所以可以利用计算机程序实现。消元法是一 切线性方程组求解的基础。

4. 矩阵的初等变换

重新审视【例5.2】 可以发现,从方程组(I)变换到方程组(VI)的全过程中,方程组中的变量 并没有 参与任何运算,参与运算的只是方程组的系数和常数。于是可省略变量,只提取方程组等式左端的系数 和右端常数,分别写成如下系数矩阵 和常数向量 。

其中,矩阵 的行号表示方程的序号,列号表示变量 的序号。由矩阵 很容易恢复出方程组原型。所 以,可以通过这两个矩阵来研究线性方程组。学习线性代数的主要目标就是,要学会利用矩阵来描述系 统,并用矩阵软件工具去解决各种问题

(6)

4.1 基于增广矩阵的方程组

【定义】 由线性方程组所有系数所构成的矩阵,称为线性方程组的系数矩阵。系数矩阵为 阶方阵的方 程组也称为 阶方程组。

在 【例5.2】 中, 是三阶线性方程组的系数矩阵。把 并排起来组成的矩阵 ,称为方程组的增广 矩阵,知道了 也就知道了线性方程组的全部参数。所有针对方程组所做的消元变换,都可以表示为对 系数增广矩阵的行变换。

4.2 矩阵的初等行变换

【定义】 下面三种变换称为矩阵的初等行变换:以下的 r表示行(row) 1. 交换两行的位置(交换第 行,记作 );

2. 以非零数 乘某行(以k乘第i行,记作 );

3. 把某一行的 倍加到另一行上(把第 行的 倍加到第 行上,记作 )

矩阵的这三种初等行变换就对应于方程组的三种初等变换(位置、数乘和消元)。它们都是可逆的,且其 逆变换是同一类型的初等变换,由此可知,初等行变换是同解变换。

如果矩阵 经有限次初等行变换变成矩阵 ,就称矩阵 与矩阵 等价。

方程消元等价于行变换 线性方程组和它的增广矩阵是一一对应的,对线性方程组进行初等行变换就是对 其增广矩阵进行初等行变换。于是解方程组的过程可用矩阵的初等行变换来一一对照。

前向消元过程

系数矩阵

对最后一个矩阵按照消元回代的思想继续进行初等行变换,最终可以获得一个对角矩阵;之后再将各行 除以对角元素,最终可以获得一个单位矩阵,此时最右一列就是方程组的解。

4.3 行最简形矩阵

事实上,在进行消元变化的时候,如果给出的原始矩阵不是满秩的方阵,则所获得的矩阵将不再是一个 单位矩阵,而是行最简形矩阵。这意味着对于系数矩阵为非适定矩阵或奇异矩阵的方式组来说,方程组 将无法获得唯一解。

(7)

【定义】若一个矩阵满足

(1)矩阵式行阶梯型的;

(2)每一行的第一个非零元是该列唯一的非零元,

则称该矩阵为行最简形矩阵(reduced row echelon form)。

下列矩阵为行最简形:

5. 线性方程组应用实例(Python)

Numpy.linalg库

numpy.linalg是Numpy库中提供的线性代数库,主要包括矩阵的点积、内积、矩阵积、行列式、逆矩阵 和求解矩阵方程的函数。其中np.linalg.solve(A,b)可以实现线性方程的求解。但对于非适定方程或系数矩 阵为奇异矩阵时,该库无法进行运算。

那如何解决呢?使用符号矩阵进行运算。

1. 将方程式转换为系数增广矩阵

2. 使用Sympy库将增广矩阵化简为行最简形 3. 根据输出结果获得未知数的解空间

Sympy 库

SymPy是一个符号计算的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简 洁、易于理解和扩展。它完全由Python写成,不依赖于外部库。

此处,我们使用sympy库中最基本的运算函数:

解线性方程组(求阶梯矩阵):Sympy.Matrix.rref()

求矩阵的秩: Sympy.Matrix.rank()

【计算题】求解线性方程组

【例5.3】 求下列方程组的解

不难发现,该方程组是一个适定方程,因此我们尝试使用两种方法进行求解。

(1) numpy.linalg.solve() (2) sympy.matrix.rref()

import numpy as np import sympy

A = np.array([[2,-2,2,6],[2,-1,2,4],[3,-1,4,4],[1,1,-1,3]]) b = np.array([[-16],[-10],[-11],[-12]])

out1= np.linalg.solve(A,b) print('out1=\n{}'.format(out1))

# 将系数矩阵合并为增广矩阵,并转换为sympy.Matrix格式 M = sympy.Matrix(np.concatenate((A,b), axis=1)) out2 = M.rref()

print('out2=\n{}'.format(out2))

(8)

【结果分析】

numpy.linalg.solve()方法可以直接输出方程组的解空间矩阵,但该方法对于超定矩阵和欠定矩阵 会给出维度不匹配的信息;

sympy.matrix.rref()方法利用矩阵变换的方法,将系数增广矩阵化简为行最简形矩阵,此时最右 边的一列就是解空间矩阵

【计算题】求解线性方程组

【例5.4】 设方程组的系数矩阵𝑨,𝒃如下,判断它的解的性质及𝑨的秩。

  out1=

[[11.]

[-8.]

[-6.]

[-7.]]

out2=

(Matrix([

[1, 0, 0, 0, 11], [0, 1, 0, 0, -8], [0, 0, 1, 0, -6],

[0, 0, 0, 1, -7]]), (0, 1, 2, 3))

import numpy as np import sympy

A = np.array([[-2,-2,2,-2,2],       [1,-5,1,-1,-3],       [-1,2,-5,5,6],       [-1,2,1,-1,0]]) b = np.array([[-2],[-1],[2],[0]])

# 将系数矩阵合并为增广矩阵,并转换为sympy.Matrix格式 M = sympy.Matrix(np.concatenate((A,b), axis=1))

print('rank ={}'.format(M.rank())) print('out = {}'.format(M.rref())) display(M.rref()[0])

rank =4

out = (Matrix([

[1, 0, 0, 0, 0, -2/9], [0, 1, 0, 0, 0, 2/9], [0, 0, 1, -1, 0, -2/3],

[0, 0, 0, 0, 1, -1/3]]), (0, 1, 2, 4))

(9)

0 1 2 3

3 0 -1 6

【结果分析】

在本例中,方程组是一个欠定矩阵,因此无法使用 numpy.linalg.solve() 方法进行求解。因此,在后续 的例题中,我们都将使用基于行最简形矩阵化简的方法rref()完成。

函数 sympy.matrix.rref() 方法的输出是一个2维元组,其中:

第一项为,化简后的行最简形矩阵;

第二项为,行最简形中“1”所在列的序号。此例中,该项的的长度为4,说明原矩阵4个主元和主元 行,即矩阵的秩 。该结论也可以通过M.rank()方法进行验证。

【应用题】计算插值多项式

【例5.5】 求插值多项式 的各系数,使它能通过下表中各点。并求多项式 在 时的值。

解:根据题目列出要求,列出方程组:

x=A\b

【结果分析】

以上代码给出了插值方程的解,将其带入多项式可以得到完整的插值多项式:

当 时,

import sympy

A = sympy.Matrix([[1,0,0,0,3],       [1,1,1,1,0],       [1,2,4,8,-1],       [1,3,9,27,6]])

out = A.rref()

print('out = {}'.format(out[0]))

t = 1.5

res = out[0][0,4] + out[0][1,4]*1.5 + out[0][2,4]*1.5**2 + out[0][3,4]*1.5**3 print('p = {:.3f}'.format(res))

out = Matrix([[1, 0, 0, 0, 3], [0, 1, 0, 0, -2], [0, 0, 1, 0, -2], [0, 0, 0, 1, 1]])

p = -1.125

(10)

。 插值的图例如下所示:

【应用题】平板稳态温度的计算

【例5.6】 如图所示,假设存在一个密度均匀的金属元器件,在其四周我们获得了8个点的瞬时温度。已 知元器件各点的温度等于其四周温度

的平均值,求abcd四个点的温度。

解:按要求得到abcd四点的温度程式,整理以后可以得到矩阵 :

【结果分析】

从程序输出结果可以得到abcd四个点的温度分别是:20度, 55/2度, 45/2度, 30度。

【应用题】交通流量分析 import sympy

A = sympy.Matrix([[4,-1,-1,0,30],       [-1,4,0,-1,60],       [-1,0,4,-1,40],       [0,-1,-1,4,70]]) print('out = {}'.format(A.rref()))

out = (Matrix([

[1, 0, 0, 0,   20], [0, 1, 0, 0, 55/2], [0, 0, 1, 0, 45/2],

[0, 0, 0, 1,   30]]), (0, 1, 2, 3))

(11)

【例5.7】如图所示,某城市市区的交叉路口由两条单向车道组成。图中给出了在交通高峰时段每小时进 入和离开路口的车辆数。计算在四个交叉路口间车辆的数量。

解: 在每一个路口,必然存在进入的车辆与离开的车辆数相等,于是有:

节点A:

节点B:

节点C:

节点D:

【结果分析】

从结果不难看出,该方程是一个欠定方程组,其秩=3<未知数个数4。即得不出唯一解。如果设 为自由 变量,并将它移到增广项位置,就可以求出解。其物理意义是,给定任意 ,均可得到每个路口的交通 流量。例如,设 ,则:

$X=\begin{bmatrix} 330 \ 170 \ 210 \ 0 \end{bmatrix}

\begin{bmatrix} 1 \ 1 \ 1 \ 0 \end{bmatrix} x_4

= \begin{bmatrix} 330 \ 170 \ 210 \ 0 \end{bmatrix} + 150

= \begin{bmatrix} 480 \ 220 \ 360 \ 150 \end{bmatrix}

=> \left{\begin{aligned} x_1=480 \ x_2=220 \ x_3=360 \ x_4=150 \end{aligned} \right. $

【应用题】化学方程的配平 import sympy

A = sympy.Matrix([[1,-1,0,0,160],       [0,1,-1,0,-40],       [0,0,1,-1,210],       [-1,0,0,1,-330]]) print('out = {}'.format(A.rref()))

out = (Matrix([

[1, 0, 0, -1, 330], [0, 1, 0, -1, 170], [0, 0, 1, -1, 210],

[0, 0, 0, 0,   0]]), (0, 1, 2))

(12)

【例5.8】 给定化学方程式,试将其进行配平。即通过设置系数,实现每个原子左右数量都相等。

为了配平化学方程式,可以设每一种元素为一个未知数,而分子中原子的个数为未知数的系数矩阵,则 我们可以得到以下等式:

四种物质的成分列向量:

待配平方程:

移项后得到系数矩阵和增广矩阵:

 

【结果分析】

从结果不难看出,该方程是一个欠定方程组,其秩=3<未知数个数4。即得不出唯一解。为了实现化学方 程式的配平,我们可以设 (通常取分母的最小公倍数),则方程的解可以变为唯一解。

由此,可以得到配平后的方程:

【应用题】电路图分析

【例5.9】 在一个电路中,可根据电阻大小和电源电压来确定电路中各分支的电流。如图所示,根据基尔 霍夫定律,

1. 任一节点上流出电流的量等于流入电流的量 2. 任一回路上电压的代数和等于各元件压降的代数和 3. 压降 满足欧姆定律

试求三条支路上的电流 。 import sympy

A = sympy.Matrix([[3,0,-1,0,0],       [8,0,0,-2,0],       [0,2,-2,-1,0]]) print('out = {}'.format(A.rref()))

out = (Matrix([

[1, 0, 0, -1/4, 0], [0, 1, 0, -5/4, 0],

[0, 0, 1, -3/4, 0]]), (0, 1, 2))

(13)

根据以上定律可以得到:

节 点 节 点 上 层 回 路 : 下 层 回 路 :

增 广 矩 阵

 

【结果分析】

从结果可以得出方程组的解集: ,即三个支路的电流:

import sympy

A = sympy.Matrix([[1,-1,1,0],       [-1,1,-1,0],       [4,2,0,8],       [0,2,5,9]]) print('out = {}'.format(A.rref()))

out = (Matrix([

[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 1],

[0, 0, 0, 0]]), (0, 1, 2))

參考文獻

相關文件

他所測量了相對成長率 (dP/dt)/P 大約為 0.7944 ,而環境容 量上限大約為 64 。.

第四章 直角座標與二元一次方程式.

第四章 直角座標與二元一次方程式.

超定方程组QR分解算法 数据拟合确定常微分方程..

並藉由適當工具與資訊,去描述、模擬、解釋與 預測各種現象,發揮數學思維方式的特長,做出

Ctrl+N 建立一個新的 VI Ctrl+B 將程式方塊圖中所有壞線移除 Ctrl+R 執行目前的的 VI Ctrl+T 將人機介面與程式方塊圖左右並列 Ctrl+W 關閉目前的的 VI Ctrl+E

教育局 课程发展处 数学教育组.

鉴于课程发展和教学方法的研究和实践一日千里,加上教育局课程发展处多 年来透过不同途径,搜集各界对历史课程及教学等方面的意见,课程发展议会于