MATLAB编程与应用系列-第3章 矩阵运算(1)

本系列教程来源于出版设计《基于MATLAB编程基础与典型应用书籍》,如涉及版权问题,请联系:[email protected]。 出版社:人民邮电出版社, 页数:525。

本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected]

本章将介绍与MATLAB矩阵运算有关相关的内容。矩阵运算是MATLAB的基础,是MATLAB强大计算功能的体现。这一章的内容可以帮助读者解决一些学习和工作中常遇到的实际问题,让读者了解基本的矩阵操作技巧,进而最大化地提高MATLAB程序执行效率。 本章包括以下内容:

  • 矩阵的基本运算
  • 矩阵的分解
  • 线性方程组的求解
  • 稀疏矩阵

3.1 矩阵的基本运算

前一章已经介绍过,二维数组和矩阵在外观形状和数据结构上没有根本的区别,但是矩阵作为一种数学变换,其运算有着严格的数学规则。本节将介绍矩阵的基本运算,内容包括基本的四则运算、乘方运算以及各种矩阵函数的运算等。

###3.1.1 加、减运算
矩阵加、减运算符分别为“+”和“-”。对应元素相加、减,即按线性代数中矩阵的“+”,“-”运算进行。

【例3.1】已知矩阵A、B,分别计算A-B和A+B。
在命令窗口中分别输入以下两条语句,生成矩阵A和矩阵B。
>> A=[1 2 3 4; 5 6 3 7; 3 3 2 1]; %使用直接矩阵生成法生成矩阵A和矩阵B
>> B=[3 4 5 6; 6 2 1 4; 9 6 5 3];
①求矩阵A-B,在命令窗口输入以下内容:
>> A-B %求解矩阵减法
运算结果如下:
ans =<br/>-2 -2 -2 -2<br/>-1 4 2 3<br/>-6 -3 -3 -2
②求矩阵A+B,在命令窗口输入以下内容:
&gt;&gt; A+B %求解矩阵加法
运算结果如下:
ans =<br/>4 6 8 10<br/>11 8 4 11<br/>12 9 7 4

注意:(1)A和B矩阵必须大小相同才可以进行加减运算。
(2)如果A、B中有一个是标量,则该标量与矩阵的每个元素进行运算。

###3.1.2 乘法运算
矩阵乘法的运算符为“*”,按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素分别与放在后面的矩阵的各列元素对应相乘并相加。

(1)两个矩阵相乘

【例3.2】已知矩阵C和D,计算Z=CD。
在命令窗口中分别输入以下两条语句,生成矩阵C和矩阵D。
&gt;&gt; C=[2 4 6 8;3 4 5 6;9 6 3 1]; %生成矩阵C和矩阵D
&gt;&gt; D=[1 2 3;4 5 6;7 8 9;3 6 9];
求Z=C
D,在命令窗口输入以下内容:
&gt;&gt; Z=C*D %求解矩阵C和D的乘积
矩阵C和矩阵D相乘后的结果如下:
Z =<br/>84 120 156<br/>72 102 132<br/>57 78 99

(2)矩阵的数乘
标量与矩阵的乘法运算是标量与矩阵中的每一个元素进行相乘的运算。

例如在【例3.2】中求A=2C,在命令窗口输入以下内容:
`>> A=2
C<br/>运算结果如下:<br/>A =
4 8 12 16
6 8 10 12
18 12 6 2`

注意:(1)矩阵相乘的时候,矩阵A的列数必须等于矩阵B的行数,除非其中有一个是标量。
(2)矩阵乘法运算和数组的乘法运算不同,数组的乘法运算符为“.*”,表示数组A和B中的对应元素相乘。A和B数组必须大小相同,除非其中有一个是标量。

###3.1.3 除法运算
在MATLAB中,矩阵除法有两种运算符“\”和“/”,分别表示矩阵运算左除和右除。如果A或B为非奇异矩阵,则A\B=A<sup>-1</sup>B或A/B=AB<sup>-1</sup>。其中,A<sup>-1</sup>是矩阵A的逆。MATLAB提供了用于求矩阵的逆矩阵的函数inv,因此可以用inv(A)求矩阵A的逆矩阵。一般情况下,x=a\b是方程ax=b的解,而x=b/a是方程xa=b的解,两种运算的结果不相等。

与矩阵的除法运算相类似,数组也具有除法运算符。运算符“.\”和“./”分别表示数组运算的左除和右除,表示数组相应元素相除。进行数组除法运算时两数组必须大小相同,除非其中有一个是标量。

【例3.3】已知矩阵X1和X2,分别计算X1/X2、X1\X2。
首先在命令窗口中分别输入以下两条语句,生成矩阵X1和X2。
&gt;&gt; X1=[1 2 3;4 5 6;7 8 9];
&gt;&gt; X2=eye(3); %生成对角单位阵
①求X1/X2,在命令窗口输入:
&gt;&gt;X1/X2 %求解矩阵的右除
矩阵X1/X2的运算结果如下:
ans =<br/>1 2 3<br/>4 5 6<br/>7 8 9
②求X1\X2,在命令窗口输入:
&gt;&gt;X1\X2 %求解矩阵的左除
矩阵X1\X2的运算结果如下:
Warning: Matrix is close to singular or badly scaled.<br/>Results may be inaccurate. RCOND = 1.541976e-018.
ans =<br/>1.0e+016 *<br/>-0.4504 0.9007 -0.4504<br/>0.9007 -1.8014 0.9007<br/>-0.4504 0.9007 -0.4504

【例3.4】已知方程组$\begin{cases}
2x_1-x_2+3x_3=5\
3x_1+x_2-5x_3=5\
4x_1-x_2+x_3=9\
\end{cases}
$,用矩阵除法来解线性方程组。

将该方程变换成AX=B的形式,其中,
$\bf{A}=\begin{bmatrix} {2}&{-1}&{3}\ {3}&{1}&{-5}\ {4}&{-1}&{1}\ \end{bmatrix}$,$\bf{B}=\begin{bmatrix} {5}\ {5}\ {9} \end{bmatrix}$,求解过程如下。

首先在命令窗口中输入矩阵A和矩阵B。
&gt;&gt; A=[2 -1 3; 3 1 -5;<br/>4 -1 1];
&gt;&gt; B=[5;5;9]; %输入矩阵A和B

然后利用矩阵除法计算方程组的解,在命令窗口输入以下内容:
&gt;&gt; X=A\B %用矩阵除法求解方程组
求解的结果如下:
X=<br/>2<br/>-1<br/>0

在线性方程组$Ax=B$中,m×n阶矩阵A的行数m表示方程数,列数n表示未知数的个数。若n=m,$A$为方阵,`A\B=inv(A)B;若m&gt;n,是最小二乘解,X=inv(A‘A)(A‘B);若m&lt;n,则是令X中的n-m个元素为零的一个特殊解,X=inv(A‘A)(A‘B)`。

###3.1.4 乘方运算
矩阵乘方的运算符为“^”,规定只有方阵才能进行乘方运算。可分为下列几种情况。
(1)当A为方阵,P为大于0的整数时,$A^p$表示A的P次方,即A自乘P次;P为小于0的整数时,$A^p$表示A-1的P次方。P为矩阵时不能运算,会出错。
(2)当A为方阵,p为非整数时,则$A^p=V\begin{bmatrix} {d{11}^p}&{}&{}\ {}&{\ddots}&{}\ {}&{}&{d{nn}^p}\ \end{bmatrix}V^{-1}$,其中,$V$为$A$的特征向量,$\begin{bmatrix} {d{11}}&{}&{}\ {}&{\ddots}&{}\ {}&{}&{d{nn}}\ \end{bmatrix}$为特征值对角矩阵。如果有重根,以上指令不成立。
(3)标量的矩阵乘方P^A,标量的矩阵乘方定义为$P^A=V\begin{bmatrix} {p^{d{11}}}&{}&{}\ {}&{\ddots}&{}\ {}&{}&{p^{d{nn}}}\ \end{bmatrix}V^{-1}$,式中V,D取自特征值分解AV=AD。
(4)标量的数组乘方P.^A,标量的数组乘方定义为$P.^A=\begin{bmatrix} {p^{a{11}}}&{\cdots}&{p^{a{1n}}}\ {\vdots}&{\ddots}&{\vdots}\ {p^{a{m1}}}&{\cdots}&{p^{a{mn}}}\ \end{bmatrix}$,数组乘方A.^P,表示A的每个元素的P次乘方。

【例3.5】已知矩阵$x_1$,分别计算矩阵乘方运算$x_1^2$、$x_1^{-1}$、$2^{x_1}$的值。
在命令输入窗口中,输入以下矩阵x1。
&gt;&gt; x1=[1 2 3;4 5 6;7 8 9];
在矩阵x1的基础上分别进行矩阵的乘方运算,具体如下:
①计算x1^2,在命令窗口中输入以下内容:
&gt;&gt; x1^2
x1^2的运算结果如下:
ans =<br/>30 36 42<br/>66 81 96<br/>102 126 150
②计算x1^-1,在命令窗口中输入以下内容:
&gt;&gt; x1^-1
x1^-1的运算结果如下:
Warning: Matrix is close to singular or badly scaled.<br/>Results may be inaccurate. RCOND = 1.541976e-018.
ans =<br/>1.0e+016 *<br/>-0.4504 0.9007 -0.4504<br/>0.9007 -1.8014 0.9007<br/>-0.4504 0.9007 -0.4504
③计算2^x1,在命令窗口中输入以下内容:
&gt;&gt; 2^x1
2^x1的运算结果如下:
ans =<br/>1.0e+004 *<br/>0.7962 0.9782 1.1603 1.8029 2.2154 2.6276<br/>2.8097 3.4523 4.0950

在例3.5的已知条件基础上进行数组的乘方运算,分别计算2.^x1、x1.^x2。
在命令输入窗口中输入矩阵x2:
&gt;&gt; x2=eye(3);
①计算2.^x1,在命令窗口中输入:
&gt;&gt; 2.^x1
结果如下:
ans =<br/>2 4 8<br/>16 32 64<br/>128 256 512
②计算数组的乘方x1.^x2,在命令窗口中输入:
&gt;&gt; x1.^x2
乘方运算的结果如下:
ans =<br/>1 1 1<br/>1 5 1<br/>1 1 9

作者:德特数据
联系方式:[email protected]

原文地址:http://blog.51cto.com/14047253/2310305

时间: 2024-10-08 13:48:14

MATLAB编程与应用系列-第3章 矩阵运算(1)的相关文章

MATLAB编程与应用系列-第3章 矩阵运算(2)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] ###3.1.5 矩阵函数MATLAB提供了丰富的函数来实现对矩阵的各种运算,下面将逐步介绍.因篇幅关系,将不作数学方面的解释.表3.1所示为常用的矩阵运算函数以及函数相对应的功能描述

MATLAB编程与应用系列-第3章 矩阵运算(4)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] ##3.2 矩阵的分解矩阵的分解是矩阵相关运算中的重要内容,MATLAB提供了用于矩阵分解运算的多种函数.本节将集中介绍MATLAB所提供的矩阵分解运算函数的功能及使用. ###3.2

MATLAB编程与应用系列-第3章 矩阵运算(3)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] ###3.1.8 矩阵和数组运算比较在进行矩阵和数组运算的时候,要认识到矩阵和数组类似运算的区别,两种运算指令形式和实质内涵的异同见表3.3.其中S为标量,A.B为矩阵.表3.3 矩阵

MATLAB编程与应用系列-第1章 MATLAB概述

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] 在科学研究和工程计算领域经常会遇到一些非常复杂的计算问题,利用计算器或手工计算是无法胜任的,只能借助计算机编程来实现,MATLAB正是解决这样复杂计算问题的强大的科学计算软件.MATL

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作(1)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] MATLAB中的数学计算部分包括数值计算和符号计算两大部分,数值计算是MATLAB的核心,在数值计算过程中,同样需要辅以适当的符号运算,目前符号运算的发展也非常完善,同样得到广泛的应用

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作(2)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] 2.2 数组及矩阵的创建和操作 本节将介绍数组及矩阵的创建和操作,包括数组的输入以及数组元素的操作.由于数组和矩阵在创建和寻访的处理方式类似,因此将两者综合一起说明. ###2.2.1

MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] #MATLAB基本介绍Matlab工程软件是MathWorks公司推出的一款具备强大数学运算能力的数学软件.随着工具箱的不断丰富和完善,Matlab工程软件几乎可以应用于社会各种工程领

异步编程系列第04章 编写Async方法

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,愿爱技术的园友们在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而

异步编程系列第03章 自己写异步代码

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,愿爱技术的园友们在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而