第三章 Matlab 矩阵运算及函数
文章目录
前言
本章节将详细介绍MATLAB在矩阵运算方面的基本内容。首先,我们将从矩阵的创建开始,介绍如何使用MATLAB创建各种类型的矩阵,并掌握矩阵的基本运算方法。然后我们将通过实例分析,展示MATLAB在解决实际问题中的应用,并探讨MATLAB在新技术和新领域中的应用前景。希望通过小节的介绍,读者能够掌握MATLAB的矩阵运算和作图功能,并在实际工作中灵活运用。
矩阵运算是matlab非常重要的功能,更是数模中使用最多的模块,最好能够熟练的掌握以及精通matlab 的矩阵运算。
一、矩阵运算基础
1.矩阵的创建
在MATLAB中,矩阵的创建是矩阵运算的第一步。以下是几种常见的创建矩阵的方法:
1.1直接输入法创建矩阵
在MATLAB命令窗口中,可以直接输入矩阵的元素并用方括号[]将其括起来,元素之间用逗号,或空格分隔,行与行之间用分号;(或换行符)分隔。例如
>> A = [1 2 3; 4 5 6; 7 8 9]; % 创建一个3x3的矩阵
B = [1 2 3 4; 5 6 0 0]; % 注意,矩阵B的行数不同,不是方阵
>> A
A =
1 2 3
4 5 6
7 8 9
>> B
B =
1 2 3 4
5 6 0 0
1.2冒号运算符创建矩阵
冒号运算符:在MATLAB中非常有用,它可以用来创建等差数列,从而进一步生成矩阵。例如:
>> C = 1:5; % 创建一个1x5的行向量,元素为1到5
D = 1:2:9; % 创建一个1x5的行向量,元素从1开始,步长为2,到9结束(不包括9)
E = [1:3; 4:6]; % 创建一个2x3的矩阵,其中第一行是1到3,第二行是4到6
>> C
C =
1 2 3 4 5
>> D
D =
1 3 5 7 9
>> E
E =
1 2 3
4 5 6
>>
1.3使用函数(如linspace、logspace)创建矩阵
MATLAB提供了linspace和logspace等函数来创建特定类型的矩阵。
- linspace(a, b, n)函数用于创建从a到b之间的n个等间距的数,形成一个行向量。
- logspace(a, b, n)函数用于创建从10a到10b之间的n个对数等间距的数,也形成一个行向量。
例如:
>> F = linspace(0, 1, 5); % 创建一个从0到1之间等间距的5个数的行向量
G = logspace(-1, 1, 3); % 创建一个从0.1到10之间对数等间距的3个数的行向量
>> F
F =
0 0.2500 0.5000 0.7500 1.0000
>> G
G =
0.1000 1.0000 10.000
1.4利用MATLAB内置函数创建特定类型的矩阵
MATLAB还提供了许多内置函数来创建特定类型的矩阵,如:
- rand(m, n)函数用于创建m行n列的随机矩阵,元素在0到1之间均匀分布。
- ones(m, n)函数用于创建m行n列的全1矩阵。
- zeros(m, n)函数用于创建m行n列的全0矩阵。
如下所示:
>> H = rand(3, 4); % 创建一个3x4的随机矩阵
I = ones(2, 2); % 创建一个2x2的全1矩阵
J = zeros(4, 1); % 创建一个4x1的全0列向量
>> H
H =
0.0975 0.9575 0.9706 0.8003
0.2785 0.9649 0.9572 0.1419
0.5469 0.1576 0.4854 0.4218
>> I
I =
1 1
1 1
>> J
J =
0
0
0
0
通过上述四种方法,用户可以轻松地在MATLAB中创建各种类型和大小的矩阵,为后续的矩阵运算奠定基础,当然,创建矩阵的方法不仅仅就只有上述的四种,还有很多种生成矩阵的方式。
二、矩阵基本运算
1.基本运算
在MATLAB中,矩阵的基本运算包括加法、减法、乘法、与向量的运算、转置、共轭和逆运算等。这些运算是进行更复杂矩阵操作的基础。
1.1 矩阵的加法、减法和乘法运算
- 加法:两个同型矩阵(即行数和列数都相同的矩阵)可以进行加法运算。MATLAB中直接使用加号+进行矩阵加法。
>> A = [1 2; 3 4];
B = [5 6; 7 8];
C = A + B; % C = [6 8; 10 12]
>> A
A =
1 2
3 4
>> B
B =
5 6
7 8
>> C
C =
6 8
10 12
- 减法:与加法类似,同型矩阵可以使用减号-进行减法运算。
D = A - B; % D = [-4 -4; -4 -4]
- 乘法:矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数。在MATLAB中,使用星号*进行矩阵乘法。
在matlab里,自然指数e为exp,但是当你想用的时候要用exp(1),代表e的1次方。圆周率π为pi:
>> E = [1 2; 3 4];
F = [2; 3];
G = E * F; % G = [8; 18](注意这里F是一个列向量)
% 对于矩阵之间的乘法
H = [1 2; 3 4];
I = [2 3; 4 5];
J = H * I; % J是一个2x2的矩阵
>> G
G =
8
18
>> J
J =
10 13
22 29
1.2矩阵与向量的运算
- 当向量被视为列向量时,可以直接与矩阵进行乘法运算,如上述的G = E * F示例。
- 如果向量是行向量,则可以使用左乘的方式与矩阵相乘,或者先将行向量转置为列向量再进行乘法运算
如果不进行转置就进行运算,则会报错
>> A=[1,2,3]%行向量
A =
1 2 3
>> B=ones(3)
B =
1 1 1
1 1 1
1 1 1
>> A*B
ans =
6 6 6
>> B*A
错误使用 *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。
//此处报错是因为没有进行正确的矩阵运算,行列不一致//
1.3矩阵的转置
- 矩阵的转置是将矩阵的行转换为列的过程。在MATLAB中,使用单引号’或函数transpose()进行矩阵转置。
>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2
>> A'
ans =
8 3 4
1 5 9
6 7 2
1.4矩阵的共轭
- 对于复数矩阵,共轭是指矩阵中每个元素的实部保持不变,虚部取反。在MATLAB中,使用点号.后跟单引号’来获取矩阵的共轭。
>> % 假设L是一个复数矩阵
L = [1+2i 3-4i; 5+6i 7-8i];
M = conj(L); % 或者 M = L.';(注意这里的点号'.'表示复数共轭)
>> M
M =
1.0000 - 2.0000i 3.0000 + 4.0000i
5.0000 - 6.0000i 7.0000 + 8.0000i
>> L
L =
1.0000 + 2.0000i 3.0000 - 4.0000i
5.0000 + 6.0000i 7.0000 - 8.0000i
1.5矩阵的逆运算
- 对于方阵(行数和列数相等的矩阵),如果其行列式不为零,则存在逆矩阵。在MATLAB中,使用inv()函数来计算矩阵的逆。
>> N = [1 2; 3 4];
if det(N) ~= 0 % 判断行列式是否为零
O = inv(N);
else
disp('矩阵不可逆');
end
>> N
N =
1 2
3 4
>> inv(N)
ans =
-2.0000 1.0000
1.5000 -0.5000
小结
通过掌握这些基本的矩阵运算,用户可以在MATLAB中执行更复杂的数值计算任务。 在实际应用中,可以结合上述运算符和函数进行复杂的矩阵运算。例如,计算矩阵的幂、求解线性方程组等。
三、矩阵的线性代数运算
在MATLAB中,矩阵的线性代数运算涵盖了行列式、迹、秩的计算,特征值和特征向量的求解,矩阵的分解,以及线性方程组的求解。这些运算是矩阵分析和线性代数中的基础且重要的概念
1.1行列式、迹和秩的计算
-
行列式(Determinant):行列式是方阵的一个数值,可以反映矩阵的线性变换性质。在MATLAB中,可以使用det()函数来计算矩阵的行列式。
-
迹(Trace):矩阵的迹是其对角线上元素之和,对于方阵A,其迹tr(A)等于A的特征值之和。在MATLAB中,可以使用trace()函数来计算。
-
秩(Rank):矩阵的秩是其行(或列)向量组的秩,也就是线性无关的行(或列)向量的最大个数。在MATLAB中,可以使用rank()函数来计算。
代码如下:
>> A = [1 2; 3 4];
detA = det(A) % 计算矩阵A的行列式
detA =
-2
>> traceA = trace(A) % 计算矩阵A的迹
traceA =
5
>> rankA = rank(A) % 计算矩阵A的秩
rankA =
2
1.2特征值和特征向量的求解
矩阵的特征值和特征向量在许多数学和工程应用中都很重要。在MATLAB中,可以使用eig()函数来计算矩阵的特征值和特征向量。
>> [V, D] = eig(A); % V是特征向量矩阵,D是对角线为特征值的对角矩阵
>> V
V =
-0.8246 -0.4160
0.5658 -0.9094
>> D
D =
-0.3723 0
0 5.3723
1.3矩阵的分解
MATLAB提供了多种矩阵分解的方法,如LU分解、QR分解等。
- LU分解:将一个矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积。在MATLAB中,可以使用lu()函数进行LU分解。
- QR分解:将一个矩阵分解为一个正交矩阵Q和一个上三角矩阵R的乘积。在MATLAB中,可以使用qr()函数进行QR分解。
>> [L, U, P] = lu(A) % L是下三角矩阵,U是上三角矩阵,P是置换矩阵
L =
1.0000 0
0.3333 1.0000
U =
3.0000 4.0000
0 0.6667
P =
0 1
1 0
>> [Q, R] = qr(A) % Q是正交矩阵,R是上三角矩阵
Q =
-0.3162 -0.9487
-0.9487 0.3162
R =
-3.1623 -4.4272
0 -0.6325
如果A是奇异矩阵或欠定/超定方程组,MATLAB会给出警告或错误,并提供最小二乘解(对于超定方程组)或广义逆解(对于奇异或欠定方程组)。
1.4线性方程组的求解
- 在matlab中,线性方程的求解使用左除运算符‘\‘’
对于线性方程组Ax = b,如果矩阵A是方阵且非奇异(行列式不为零),则可以使用逆矩阵来求解x = A^-1b。但是,在实际应用中,直接计算逆矩阵是不推荐的,因为计算量大且容易出错。MATLAB提供了左除运算符\来高效地求解线性方程组
>> b = [1; 2];
x = A \ b; % 使用左除运算符求解线性方程组
>> x
x =
0
0.5000
3.总结
好啦,以上就是matlab初级教程第三课要讲的内容,MATLAB是进行矩阵运算的强大工具,它提供了丰富的函数和运算符来支持各种线性代数运算。现在我们对MATLAB矩阵基础运算小节进行一个简短的总结:
- 基本矩阵运算:包括加法、减法和乘法。同型矩阵可以进行加法和减法运算,而矩阵乘法需要满足特定的维度要求。
- 行列式、迹和秩:det()函数用于计算矩阵的行列式,trace()函数用于计算矩阵的迹(对角线元素之和),rank()函数用于计算矩阵的秩(线性无关的行或列的最大数)。
- 特征值和特征向量:eig()函数用于求解矩阵的特征值和特征向量,返回的向量矩阵包含特征向量,对角矩阵包含对应的特征值。
- 矩阵分解:MATLAB支持多种矩阵分解方法,如LU分解(lu()函数)和QR分解(qr()函数),这些分解在数值分析和优化问题中非常有用。
- 线性方程组的求解:对于线性方程组Ax = b,可以使用左除运算符\来高效地求解。MATLAB会自动处理方程组的类型(如超定、欠定或适定),并给出相应的解或最小二乘解。
这些基础运算和函数构成了MATLAB矩阵运算的基石,通过结合使用它们,用户可以在MATLAB中执行复杂的数学计算和分析任务。