矩阵的基本数值运算包括加、减、乘、数乘、点乘、乘方、左除、右除等。其中,加、减、乘与大家所学的线性代数中的对应运算是一样的,相应的运算符为“+”“-”“*”。
对于上述的四则运算,需要注意的是:矩阵的加、减、乘运算的维数要求与线性代数中的要求一致。
设 A =( a ij ), B =( b ij )都是 m × n 矩阵,矩阵 A 与 B 的和记成 A + B ,规定为
矩阵的加法运算符合如下规律:
交换律:
A
+
B
=
B
+
A
。
结合律:(
A
+
B
)+
C
=
A
+(
B
+
C
)。
例3-21: 验证加法法则。
本实例验证矩阵加法的交换律与结合律。
解 MATLAB程序如下:
>> clear % 清除工作区的变量 >> A=[5,6,9,8;5,3,6,7] % 创建矩阵A A = 5 6 9 8 5 3 6 7 >> B=[3,6,7,9;5,8,9,6] % 创建矩阵B B = 3 6 7 9 5 8 9 6 >> C=[9,3,5,6;8,5,2,1] % 创建矩阵C C = 9 3 5 6 8 5 2 1 >> A+B % 矩阵B、A求和 ans = 8 12 16 17 10 11 15 13 >> B+A % 矩阵B、A求和,验证交换律 ans = 8 12 16 17 10 11 15 13 >> (A+B)+C % 矩阵A、B、C求和 ans = 17 15 21 23 18 16 17 14 >> A+(B+C) % 将矩阵A与矩阵B、C的和求和,验证结合律 ans = 17 15 21 23 18 16 17 14 >> D=[1,5,6;2,5,6] % 创建矩阵D D = 1 5 6 2 5 6 >> A+D 矩阵维度必须一致。 % 只有相同维度的矩阵才能进行加法运算
减法运算法则为: A - B = A +(- B )。
例3-22: 矩阵求和。
本实例求解矩阵之和
。
解 MATLAB程序如下:
>> clear % 清除工作区的变量 >> [1 2 3;-1 5 6]+[0 1 -3;2 1 -1] % 直接输入两个矩阵求和 ans = 1 3 0 1 6 5
例3-23: 矩阵求差。
本实例求矩阵之差
。
解 MATLAB程序如下:
>> clear % 清除工作区的变量 >> A=[5,6,9,8;5,3,6,7]; % 创建矩阵A >> B=[3,6,7,9;5,8,9,6]; % 创建矩阵B >> -B % 计算-B ans = -3 -6 -7 -9 -5 -8 -9 -6 >> A-B % 两个矩阵求差 ans = 2 0 2 -1 0 -5 -3 1
数 λ 与矩阵 A =( a ij ) m × n 的乘积记成 λ A 或 A λ ,规定为
矩阵的数乘运算满足下面的规律:
λ
(
µ
A
)=(
λµ
)
A
。
(
λ+µ
)
A
=λ
A
+µ
A
。
λ
(
A
+
B
)
=λ
A
+λ
B
。
其中, λ , μ 为实数, A , B 为矩阵。
>> clear % 清除工作区的变量 >> A=[1 2 3;0 3 3;7 9 5]; % 创建矩阵A >> A*5 % 计算矩阵A与数值5的乘积 ans = 5 10 15 0 15 15 35 45 25
设 A =( a ij )是一个 m × s 矩阵, B =( b ij )是一个 s × n 矩阵,规定 A 与 B 的积为一个 m × n 矩阵 C =( c ij )。其中, c ij = a i 1 b 1 j + a i 2 b 2 j +…+ a is b sj , i =1,2,…, m , j =1,2,…, n 。
矩阵的乘法需要满足以下条件:
矩阵
A
的列数与矩阵
B
的行数相同。
矩阵 A 乘以矩阵 B 的积矩阵 C 具有以下特点:
积矩阵
C
的行数等于矩阵
A
的行数,积矩阵
C
的列数等于矩阵
B
的列数。
积矩阵
C
的第
i
行
j
列元素值等于矩阵
A
的
i
行元素与矩阵
B
的
j
列元素对应值积的和,即
例如:
>> clear % 清除工作区的变量 >> A=[1 2 3;0 3 3;7 9 5]; % 创建矩阵A >> B=[8 3 9;2 8 1;3 9 1]; % 创建矩阵B >> A*B % 计算矩阵A、B的乘积 ans = 21 46 14 15 51 6 89 138 77
注意
AB ≠ BA ,即矩阵的乘法不满足交换律。
最后需要特别强调的是,由于
所以,若矩阵 A 、 B 满足 AB =0,未必有 A = 0 或 B = 0 的结论。
点乘运算指将两矩阵中相同位置的元素进行相乘运算,将积保存在原位置组成新矩阵。例如:
>> clear >> A=[1 2 3;0 3 3;7 9 5]; >> B=[8 3 9;2 8 1;3 9 1]; >> A.*B ans = 8 6 27 0 24 3 21 81 5
例3-24: 矩阵乘法运算。
解 MATLAB程序如下:
>> clear % 清除工作区的变量 >> A=[0 0;1 1] % 创建矩阵A A = 0 0 1 1 >> B=[1 0;2 0] % 创建矩阵B B = 1 0 2 0 >> 6*A - 5*B % 计算数值与矩阵的乘积后求差 ans = -5 0 -4 6 >> A*B-A % 计算矩阵A乘B的积与矩阵A的差 ans = 0 0 2 -1 >> B*A-A % 计算矩阵B乘A的积与矩阵A的差,验证矩阵的乘法不满足交换律 ans = 0 0 -1 -1 >> A.*B-A % 计算矩阵A点乘矩阵B的积与矩阵A的差 ans = 0 0 1 -1
计算左除 A \ B 时, A 的行数要与 B 的行数一致,计算右除 A / B 时, A 的列数要与 B 的列数一致。
由于矩阵的特殊性, AB 通常不等于 BA ,除法也一样。因此除法要区分左除和右除。
对于线性方程组 DX = B ,如果 D 非奇异,即它的逆矩阵存在,则用MATLAB对其求解的结果为
X=inv(D)*B=D\B
符号“\”称为左除,即分母放在左边。
左除的条件: B 的行数等于 D 的阶数( D 的行数和列数相同,简称阶数)。
例3-25: 求解矩阵左除。
解 MATLAB程序如下:
>> clear % 清除工作区的变量 >> A=[1 2 3;0 3 3;7 9 5]; % 创建矩阵A >> B=[8 3 9;2 8 1;3 9 1]; % 创建矩阵B >> A\B % 两个矩阵左除 ans = 2.1515 -2.2121 2.8485 -3.8485 2.7879 -5.1515 4.5152 -0.1212 5.4848
若方程组表为 XD 1 = B 1 , D 1 非奇异,即它的逆阵inv(D1)存在,则用MATLAB对其求解的结果为
X=B1*inv(D1)=B1/D1
符号“/”称为右除。
右除的条件: B 1 的列数等于 D 1 的阶数( D 1 的行数和列数相同,简称阶数)。
例3-26: 验证矩阵右除。
解 MATLAB程序如下:
>> clear % 清除工作区的变量 >> A=[1 2 3;5 8 6]; % 创建矩阵A >> B=[8 6 9;4 3 7]; % 创建矩阵B >> C=A/B % 两个矩阵右除 C = -0.0400 0.4800 1.2640 -0.7680
所谓矩阵的点除运算,是指将两矩阵中相同位置的元素进行相除运算并将商保存在原位置组成新矩阵,具体如下:
点左除:a.\b表示矩阵
b
中的每个元素除以矩阵
a
对应位置的元素。
点右除:a./b表示矩阵
a
中的每个元素除以矩阵
b
对应位置的元素。