本文主要是介绍漫步线性代数四——矩阵符号和矩阵乘法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于 3 × 3 的例子,我们能够写出所有的公式。可以列出消去步骤,一个方程减去另一个方程的倍数达到三角矩阵的形式。对于一个大的系统,这种跟踪消去的步骤太长了,所以我们需要更加简洁的记录方式。
我们现在引进矩阵符号来描述开始的系统,用矩阵乘法来描述计算步骤会更简单。注意三种不同类型的量都出现在例子中:
N i n e c o e f f i c i e n t s T h r e e u n k n o w n s T h r e e r i g h t − h a n d s i d e s 2 u 4 u − 2 u + − + v 6 v 7 v + + w 2 w = = = 5 − 2 9 (1)
右边是列向量
b 。左边是未知量
u , v , w 。另外,左边有九个系数(其中一个碰巧是零)。自然地,我们用一个向量来表示三个未知量:
T h e u n k n o w n i s x = ⎡ ⎣ ⎢ u v w ⎤ ⎦ ⎥ T h e s o l u t i o n i s x = ⎡ ⎣ ⎢ 1 1 2 ⎤ ⎦ ⎥
九个系数分为三行和三列,得到
3 × 3 的矩阵:
C o e f f i c i e n t m a t r i x A = ⎡ ⎣ ⎢ 2 4 − 2 1 − 6 7 1 0 2 ⎤ ⎦ ⎥
A 是一个方阵,因为方程个数等于未知量的个数。如果
n 个方程有
n 个未知量,那么我们有
n × n 矩阵。更一般地,可能
m 个方程有
n 个未知量。那么
A 是
m 行
n 列的长方形。它将是一个
m × n 矩阵。
矩阵互相相加,或乘以某个常数值,每一次执行一列的时候,效果和向量完全一样。事实上我们可以将向量看做矩阵的特殊情况;他们是只有一列的矩阵。和向量一样,如果两个矩阵形状相同时,他们才能执行加法:
A d d i t o n A + B ⎡ ⎣ ⎢ 2 3 0 1 0 4 ⎤ ⎦ ⎥ + ⎡ ⎣ ⎢ 1 − 3 1 2 1 2 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 3 0 1 3 1 6 ⎤ ⎦ ⎥
M u l t i p l i c a t i o n 2 A ⎡ ⎣ ⎢ 2 3 0 1 0 4 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 4 6 0 2 0 8 ⎤ ⎦ ⎥
矩阵和向量相乘
我们想用三个未知量 u , v , w 重写方程,得到简化的矩阵形式 A x = b 。全写出来就是,矩阵乘以向量等于向量:
M a t r i x f o r m A x = b ⎡ ⎣ ⎢ 2 4 − 2 1 − 6 7 1 0 2 ⎤ ⎦ ⎥ ⎡ ⎣ ⎢ u v w ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 5 − 2 9 ⎤ ⎦ ⎥ (2)
右边
b 是非齐次项列向量。左边是
A × x 。我们准确的定义这个乘法以便于它能够重现最初的系统。
A x 的第一项来自
A 的第一行乘以列向量
x ;
R o w t i m e s c o l u m n [ 2 1 1 ] ⎡ ⎣ ⎢ u v w ⎤ ⎦ ⎥ = [ 2 u + v + w ] = [ 5 ] (3)
乘积
A x 的第二部分是
4 u − 6 v + 0 w ,来自于
A 的第二行。矩阵方程
A x = b 等价于方程(1)中三个联立的方程组。
行乘列是所有矩阵乘法的基础。两个向量相乘得到一个数。这个数称为两个向量的内积。换句话说, 1 × n 矩阵(行向量)和 n × 1 矩阵(列向量)相乘得到一个 1 × 1 矩阵:
I n n e r p r o d u c t [ 2 1 1 ] ⎡ ⎣ ⎢ 1 1 2 ⎤ ⎦ ⎥ = [ 2 ⋅ 1 + 1 ⋅ 1 + 1 ⋅ 2 ] = [ 5 ]
这表明给出的解
x = ( 1 , 1 , 2 ) 满足第一个方程。
矩阵 A 和一个向量x 相乘有两种方法。一种方法是一次乘以一行, A 的每行和x 结合给出 A x 的一部分。当 A 有三行是,存在三个内积:
A x b y r o w s ⎡ ⎣ ⎢ 1 3 1 1 0 1 6 1 4 ⎤ ⎦ ⎥ ⎡ ⎣ ⎢ 2 5 0 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 1 ⋅ 2 + 1 ⋅ 5 + 6 ⋅ 0 3 ⋅ 2 + 0 ⋅ 5 + 3 ⋅ 0 1 ⋅ 2 + 1 ⋅ 5 + 4 ⋅ 0 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 7 6 7 ⎤ ⎦ ⎥ (4)
通常这就是
A x 的解释,但是第二种方法同样重要。事实上,它更重要!它是一次乘以一列。
A x 乘积一下就计算出来,就像矩阵
A 三列的组合:
A x b y c l u m n s 2 ⎡ ⎣ ⎢ 1 3 1 ⎤ ⎦ ⎥ + 5 ⎡ ⎣ ⎢ 1 0 1 ⎤ ⎦ ⎥ + 0 ⎡ ⎣ ⎢ 6 3 4 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 7 6 7 ⎤ ⎦ ⎥ (5)
答案就是两倍的第1列加5倍的第2列。它对应于线性方程组的列图像。如果右边
b 是7,6,7,那么解就是2,5,0。当然行图像也是如此(我们最终要做相同的乘法)。
列规则将会一遍又一遍的使用,现在我们在强调一遍:
1、A x 的乘积可以利用方程(5)中的列找出来,因此 A x 是 A 列的组合,其中系数是x 的元素。
为了让 A × x 在 n 维空间中,我们需要一个符号来表示A 的每一项。第 i 行,第j 列的元素用 a i j 表示。第一个下标给出行数,第二个下标指示列。(在方程(4)中, a 21 是3, a 13 是6)如果 A 是一个m × n 矩阵,然后索引从1到 m -有m 行,索引 j 从1到n 。合在一起,矩阵有 m n 个元素并且 a m n 位于右下角。
一个下标对向量来说已经足够了。 x 的第j 个元素用 x j 表示。(以上的乘法有 x 1 = 2 , x 2 = 5 , x 3 = 0 )通常 x 写成列向量,就像n × 1 矩阵。但有时它写成一条线,如 x = ( 2 , 5 , 0 ) 。括号和逗号强调它不是 1 × 3 矩阵。而是一个列向量,它只是暂时躺着而已。
为了描述乘积 A x ,我们使用“sigma”符号求和 Σ 表示和:
S i g m a n o t a t i o n T h e i t h c o m p o n e n t o f A x i s ∑ j = 1 n a i j x j
这个和取
A 的第i 行。索引
j 取1到n 的所有值,然后将结果加起来-和就是
a i 1 x 1 + a i 2 x 2 + ⋯ + a i n x n 。
我们再次见到行的长度( A 的列数)必须匹配x 的长度。一个 m × n 矩阵乘以 n 维向量(得到m 维向量)。求和符号比啥都写满简单许多,但是矩阵符号要更好。(爱因斯坦用“张量符号”,其中重复的索引意味着求和。他写 a i j x j 或 a j i x j ,我们不是爱因斯坦,所以保持用符号 Σ )
消元的矩阵形式
到目前为止,对方程组,我们有一种方便速记的形式 A x = b 。 那么在消元过程中是怎么进行操作的呢?在我们的示例中,第一步是中用第二个方程减去第一个方程的2倍。对于右边就是, b 的第二个元素减去第一个元素的2倍。如果我们用初等矩阵(或消元矩阵)乘以b ,会取得同样的效果:
E l e m e n t a r y m a t r i x E = ⎡ ⎣ ⎢ 1 − 2 0 0 1 0 0 0 1 ⎤ ⎦ ⎥
根据矩阵和向量乘法的规则得以证实:
E b = ⎡ ⎣ ⎢ 1 − 2 0 0 1 0 0 0 1 ⎤ ⎦ ⎥ ⎡ ⎣ ⎢ 5 − 2 9 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 5 − 12 9 ⎤ ⎦ ⎥
5和9保持不变(因为
E 的行1,0,0和0,0,1)。第一次消元步骤后,得到新的第二个元素-12。
它很容易用矩阵E 描述,它单独执行消元步骤。我们也注意到“单位矩阵”,不执行任何操作。
2、单位矩阵 I 主对角线上为1,其余地方为0,不改变向量的值。基本矩阵E i j 表示第 i 行减去ℓ 倍的 j 行。E i j 包含第 i 行第j 列的 − ℓ 。
I = ⎡ ⎣ ⎢ 1 0 0 0 1 0 0 0 1 ⎤ ⎦ ⎥ h a s I b = b E 31 = ⎡ ⎣ ⎢ 1 0 − ℓ 0 1 0 0 0 1 ⎤ ⎦ ⎥ h a s E 31 b = ⎡ ⎣ ⎢ b 1 b 2 b 3 − ℓ b 1 ⎤ ⎦ ⎥
I b = b 类似于乘1运算。典型的消元步骤是 E 31 。重要的问题是:左边的 A 发生了什么?
为了保持相等,A x = b 两边必须使用相同的操作。换句话说,我们也必须用矩阵 E 乘以向量A x 。我们最初的矩阵 E 从第二行减去第一行的2倍,这一步之后,新的简单方程组(等价于旧的)就是E ( A x ) = E b 。因为第一个主元下面都是零,所以它更简单。因为我们可以恢复到最初的方程组(通过第二行加上第一行的2倍)所以他们是等价的。所以这两个方程组具有完全相同的解 x 。
矩阵乘法 现在我们来看最重要的问题:我们如何计算两个矩阵相乘?我们可以从高斯消元法中得到部分线索:我们知道最初的系数矩阵A ,消元矩阵 E ,而且还知道消元后的结果E A 。我们希望并期望
E = ⎡ ⎣ ⎢ 1 − 2 0 0 1 0 0 0 1 ⎤ ⎦ ⎥ t i m e s A = ⎡ ⎣ ⎢ 2 4 − 2 1 − 6 7 1 0 2 ⎤ ⎦ ⎥ g i v e s E A = ⎡ ⎣ ⎢ 2 0 − 2 1 − 8 7 1 − 2 2 ⎤ ⎦ ⎥
矩阵 A 的第二行减去第一行的两倍。矩阵乘法和消元法的行操作比较一致。我们可以将结果写成E ( A x ) = E b 或 ( E A ) x = E b 。 精确地构造矩阵 E A 使得方程成立,括号不是必须的: M a t r i x m u l t i p l i c a t i o n ( E A × x ) e q u a l s ( E × A x ) W e j u s t w r i t e E A x
这是”结合律”,就像 2 × ( 3 × 4 ) = ( 2 × 3 ) × 4 。交换律似乎显而易见,所以很难想象它可能是错的。但是“交换律” 2 × 3 = 3 × 2 对于矩阵来说就不成立 E A ≠ A E 。
关于矩阵乘法还有另一项要求。我们知道如何计算 A x ,一个矩阵和一个向量,新的定义应该也使它满足。当矩阵 B 只包含一个列x 时,矩阵与矩阵 A B 的乘积应该和矩阵与向量的乘积 A x 相同。更重要的是:当 B 包含几列b 1 , b 2 , b 3 时, A B 的列应该是 A b 1 , A b 2 , A b 3 !
M u l t i p l i c a t i o n b y c o l u m n s A B = A ⎡ ⎣ ⎢ b 1 b 2 b 3 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ A b 1 A b 2 A b 3 ⎤ ⎦ ⎥
我们的第一个要求与行有关,而这个与列有关。 A 的第三种方法是描述A B 的每一项。事实上,只有一个可能的规则,不知道是谁发现了它,它恒成立,因为这个规则,我们不用让每对矩阵相乘。如果他们是方形的,他们肯定有相同的大小。如果是矩形的,他们形状肯定不一样; A 的列数必须等于B 的行数。然后 A 可以成B 的每一列。
如果 A 是m × n , B 是n × p ,那么可以做乘法。乘积 A B 是 m × p 。现在我们找出 A B i 行j 列的元素。
3、 A B 的 i , j 项是 A 的第i 行与 B 的第j 列的内积。在图1中, A B 的第3,2项从3行,2列计算得到:
( A B ) 32 = a 31 b 12 + a 32 b 22 + a 33 b 32 + a 34 b 42 (6)
图1: 3 × 4 的矩阵 A 乘以4 × 2 的 矩阵 B 得到3 × 2 的矩阵 A B
注意,当矩阵没有经过消元处理时我们写成 A B 。因为初等矩阵 E ,所以我们前面的示例中写成E A 。之后我们有 P A 或 L U 或 L D U 。矩阵乘法的规则都是一样。
例1 :
A B = [ 2 4 3 0 ] [ 1 5 2 − 1 0 0 ] = [ 17 4 1 8 0 0 ]
17 就是 ( 2 ) ( 1 ) + ( 3 ) ( 5 ) , A 的第一行与B 的第一列内积的结果。 8 就是( 4 ) ( 2 ) + ( 0 ) ( 1 ) , A 的第二行与B 的第二列内积的结果。
B 的第三列是零,所以A B 也是零。 B 包含三列,B 分别乘以每一列。 A B 的每一列都是 A 列的组合。就像矩阵和向量乘法一样,A 列的系数就是 B 中的元素。
例2 :
R o w e x c h a n g e m a t r i x [ 0 1 1 0 ] [ 2 7 3 8 ] = [ 7 2 8 3 ]
例3 :单位矩阵 I 不改变任何矩阵:
I d e n t i t y m a t r i x I A = A a n d B I = B
重要提示:乘法 A B 也可以一次计算一行。在例中1中, A B 的第一行可以使用 A 第一行的数字2和3。这些数字给出2 [ r o w 1 ] + 3 [ r o w 2 ] = [ 17 1 0 ] 。就像之前的消元法, A B 的每行是 B 行的组合。
4、(1)A B 的元素是行和列的乘积:
( A B ) i j = ( r o w i o f A ) × ( c o l u m n j o f B )
(2) A B 的每一列是矩阵和列的乘积:
c o l u m n j o f A B = A × ( c o l u m n j o f B )
(3) A B 的每一行是行和矩阵的乘积:
r o w i o f A B = ( r o w o f A ) × B
这引出了矩阵乘法的一个关键性质。假设三个矩阵 A , B , C 的形状(可能是矩形)可以加倍, A , B 的行乘以 B , C 的列,那么关键性质就是:
5、矩阵乘法满足结合律: ( A B ) C = A ( B C ) ,写作 A B C 。
A B × C = A × B C 。如果 C 刚好是一个向量(只有一列的矩阵),这正好就是之前提到的( E A ) x = E ( A x ) ,这是矩阵乘法规则的基础。如果 C 有几列,我们可以一列列考虑,所利用几次法则。当计算几个矩阵乘法时,括号是没必要的。
还有两个性质需要提到-一个是矩阵乘法满足的,另一个是它不满足的。
6、矩阵乘法满足分配律 :
A ( B + C ) = A B + A C a n d ( B + C ) D = B D + C D
当然这些矩阵的形状必须匹配- B , C 有相同的形状,这样的话他们才可以相加。这个定律的证明太过无聊这里不再陈述。
下面这条性质就不满足了:
7、矩阵乘法不满足交换律:通常\ F E ≠ E F
例4 :假设 E 是第二行减去第一行的2倍,F 是第一行加到第三行上:
E = ⎡ ⎣ ⎢ 1 − 2 0 0 1 0 0 0 1 ⎤ ⎦ ⎥ a n d F = ⎡ ⎣ ⎢ 1 0 1 0 1 0 0 0 1 ⎤ ⎦ ⎥
两个矩阵相乘得:
E F = ⎡ ⎣ ⎢ 1 − 2 1 0 1 0 0 0 1 ⎤ ⎦ ⎥ = F E
无论是哪种顺序
E F 或
F E ,利用第一行改变了第二和第三行的值。
例5 :假设 E 和上面一样,但G 是第二行加到第三行上。现在改变他们的顺序,当先执行 E ,再执行G ,在改变第三行之前第二行已经改变了。如果反过来,那么第三个等式不会受到第一行的影响,我们将会看到 E G 的(3,1)元素为零,而 G E 的是-2:
E F = ⎡ ⎣ ⎢ 1 0 0 0 1 1 0 0 1 ⎤ ⎦ ⎥ ⎡ ⎣ ⎢ 1 − 2 0 0 1 0 0 0 1 ⎤ ⎦ ⎥ = ⎡ ⎣ ⎢ 1 − 2 − 2 0 1 1 0 0 1 ⎤ ⎦ ⎥ b u t E G = ⎡ ⎣ ⎢ 1 − 2 0 0 1 1 0 0 1 ⎤ ⎦ ⎥
因此
E G ≠ G E 。随便举个例子依然如此(大部分矩阵都不满足)。这里的矩阵是有意义的,
E F = F E 而
E G ≠ G E 是有原因的,我们有必要看看三个消元矩阵放一起会发生什么:
G E F = ⎡ ⎣ ⎢ 1 − 2 − 1 0 1 1 0 0 1 ⎤ ⎦ ⎥ a n d E F G = ⎡ ⎣ ⎢ 1 − 2 − 1 0 1 1 0 0 1 ⎤ ⎦ ⎥
G F E 是消元的正确顺序。将最初的矩阵
A 变成了上三角矩阵U ,我会在下一篇文章中再次讲述。
其他矩阵 E F G 更好。对于这个顺序, E 的-2,F 的1和 G <script type="math/tex" id="MathJax-Element-369">G</script> 都未受到影响,他们直接得出乘积,而它却是错误的消元顺序。但幸运的是,它是右边消元步骤的逆(我也会在下一篇文章里讲解)。
注意,下三角矩阵的乘积依然是下三角矩阵。
这篇关于漫步线性代数四——矩阵符号和矩阵乘法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!