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

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

本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:156204968@qq.com

本章将介绍与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 = -2 -2 -2 -2 -1 4 2 3 -6 -3 -3 -2
②求矩阵A+B,在命令窗口输入以下内容:
>> A+B %求解矩阵加法
运算结果如下:
ans = 4 6 8 10 11 8 4 11 12 9 7 4

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

3.1.2 乘法运算

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

(1)两个矩阵相乘

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

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

例如在【例3.2】中求A=2*C,在命令窗口输入以下内容:
>> A=2*C
运算结果如下:
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-1B或A/B=AB-1。其中,A-1是矩阵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。
>> X1=[1 2 3;4 5 6;7 8 9];
>> X2=eye(3); %生成对角单位阵
①求X1/X2,在命令窗口输入:
>>X1/X2 %求解矩阵的右除
矩阵X1/X2的运算结果如下:
ans = 1 2 3 4 5 6 7 8 9
②求X1\X2,在命令窗口输入:
>>X1\X2 %求解矩阵的左除
矩阵X1\X2的运算结果如下:
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018.
ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -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。
>> A=[2 -1 3; 3 1 -5; 4 -1 1];
>> B=[5;5;9]; %输入矩阵A和B

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

在线性方程组A*x=B中,m×n阶矩阵A的行数m表示方程数,列数n表示未知数的个数。若n=m,A为方阵,A\B=inv(A)*B;若m>n,是最小二乘解,X=inv(A'*A)*(A'*B);若m<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},其中,VA的特征向量,\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^2x_1^{-1}2^{x_1}的值。
在命令输入窗口中,输入以下矩阵x1。
>> x1=[1 2 3;4 5 6;7 8 9];
在矩阵x1的基础上分别进行矩阵的乘方运算,具体如下:
①计算x1^2,在命令窗口中输入以下内容:
>> x1^2
x1^2的运算结果如下:
ans = 30 36 42 66 81 96 102 126 150
②计算x1^-1,在命令窗口中输入以下内容:
>> x1^-1
x1^-1的运算结果如下:
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018.
ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504
③计算2^x1,在命令窗口中输入以下内容:
>> 2^x1
2^x1的运算结果如下:
ans = 1.0e+004 * 0.7962 0.9782 1.1603 1.8029 2.2154 2.6276 2.8097 3.4523 4.0950

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

作者:德特数据
联系方式:156204968@qq.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352