2024Matlab数模初级教程- 第三章 Matlab 矩阵运算及函数

第三章 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中执行复杂的数学计算和分析任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐以礼

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值