MATLAB中的矩阵与向量运算

合集下载

MATLAB软件在线性代数教学中的应用

MATLAB软件在线性代数教学中的应用

MATLAB软件在线性代数教学中的应用【摘要】MATLAB软件在线性代数教学中的应用日益重要。

本文从向量和矩阵运算、线性方程组求解、特征值和特征向量计算、线性代数可视化教学以及矩阵分解和奇异值分解等方面探讨了MATLAB的应用。

通过实际案例展示了MATLAB在教学中的实际应用,有助于学生更好地理解线性代数的概念和应用。

结合结论部分讨论了MATLAB在线性代数教学中的重要性以及未来的发展方向,强调了MATLAB在提升学生学习效果和培养解决实际问题能力方面的巨大潜力。

MATLAB在线性代数教学中的应用有着广阔的发展前景,为教学提供了更加丰富和多样化的教学手段。

【关键词】MATLAB, 线性代数, 教学应用, 向量, 矩阵运算, 线性方程组, 特征值, 特征向量, 可视化教学, 矩阵分解, 奇异值分解, 重要性, 发展方向1. 引言1.1 MATLAB软件在线性代数教学中的应用概述MATLAB是一种强大的数学软件,广泛应用于高等教育领域,尤其在线性代数教学中发挥着重要作用。

在在线性代数教学中,MATLAB可以帮助学生更好地理解抽象的数学概念,提高他们的数学建模和问题求解能力。

通过MATLAB软件,学生可以直观地进行向量和矩阵运算,求解线性方程组,计算特征值和特征向量,进行矩阵分解和奇异值分解等操作。

MATLAB软件提供了丰富的数学函数和工具箱,使得学生可以方便地进行各种数学计算和仿真实验。

通过MATLAB的可视化功能,学生可以直观地观察数学概念的几何意义,加深对数学知识的理解。

MATLAB还支持编程功能,学生可以通过编写脚本和函数来实现复杂的数学运算和算法,培养他们的编程能力。

在线性代数教学中,MATLAB软件的应用不仅可以帮助学生更好地掌握数学知识,提高数学建模和问题求解能力,还可以激发学生的学习兴趣,培养他们的创新思维和实践能力。

MATLAB软件在线性代数教学中的应用具有重要意义,对提升教学效果和培养学生的数学素养具有积极作用。

Matlab矩阵运算基础数值运算

Matlab矩阵运算基础数值运算

data =
1.1000 3.0000 4.0000
2.3000 2.0000 1.0000
.
13
3.2 矩阵运算
主要介绍矩阵的算术运算、关系运算、逻辑 运算和常用的有关矩阵的其他运算(矩阵的 逆,矩阵的秩、矩阵的分解等)。
.
14
3.2.1 矩阵的算术运算
1、矩阵的加(+)减(-)运算:
A±B 矩阵A和矩阵B的和与差,即矩阵相应 位置的元素相加、减。
>> A=magic(3)
D=
A= 816
0.5492 0.2421 -0.6520 0.9075
357
1.0047 -0.4941
492
>> C*D
>> B=inv(A)
ans =
B=
1.0000 0.0000
0.1472 -0.1444 0.0639
0.0000 1.0000
-0.0611 0.0222 0.1056
~ A 对单个矩阵或标量进行取反运算,结果是0-1矩阵。
.
28
3.2.3 矩阵的逻辑运算
例3-11 1 0 3
1 2 0
A2.6 1 2, B0 5 0
0 3 1
1 0 1
计算 A&B, A|B, ~A Nhomakorabea.
29
3.2.4 矩阵函数
1、矩阵的共轭
MATLAB中求矩阵的共轭矩阵的函数是conj,其 调用格式为:
除或浮点溢出都不按错误处理,只是给出警告信息,同时用“Inf”
标记。
.
20
3.2.1 矩阵的算术运算
4、 矩阵的幂运算:^ A^B A的B次方。

MATLAB的基本使用教程

MATLAB的基本使用教程

MATLAB的基本使用教程MATLAB是一种强大的数学计算软件,广泛应用于科学、工程和技术领域。

它提供了丰富的功能和工具,能够快速、有效地处理和分析各种数学问题。

本文将介绍MATLAB的基本使用方法,帮助初学者快速入门。

一、MATLAB的安装与启动1、下载和安装MATLAB软件:在MathWorks官方网站上下载适合自己操作系统的MATLAB软件,并根据安装提示进行安装。

安装完成后,会生成一个MATLAB的启动图标。

2、启动MATLAB:双击MATLAB的启动图标,或者在命令行中输入"matlab"命令,即可启动MATLAB。

二、MATLAB的基本操作1、工作环境:MATLAB提供了一个强大的集成开发环境(IDE),可以在其中编写和运行代码。

在MATLAB的界面中,包括主窗口、命令窗口、变量窗口、编辑器等。

2、命令窗口:在命令窗口中可以输入和执行MATLAB命令。

可以直接在命令窗口中输入简单的计算,例如输入"2+3"并按下回车键,即可输出计算结果。

3、脚本文件:MATLAB可以编写和运行脚本文件,将一系列命令组织起来,并按顺序执行。

在编辑器中编写MATLAB代码,并将文件保存为.m扩展名的脚本文件。

然后在命令窗口中输入脚本文件的文件名(不带扩展名),按下回车键即可执行脚本文件中的代码。

4、变量和赋值:在MATLAB中,可以创建和操作各种类型的变量。

例如,可以使用"="符号将一个值赋给一个变量,例如"A=5"。

在后续的计算和分析中,可以使用这个变量,例如输入"B=A+3",结果B 将被赋值为8。

5、矩阵和向量:MATLAB中的基本数据结构是矩阵和向量。

可以使用方括号[]来创建矩阵和向量,并使用逗号或空格来分隔不同的元素。

例如,"[1,2,3]"表示一个包含3个元素的行向量。

6、矩阵运算:MATLAB提供了丰富的矩阵运算符和函数,可以对矩阵进行各种运算。

MATLAB矩阵及运算

MATLAB矩阵及运算

点乘——元素对元素乘法 叉乘——矩阵对矩阵乘法
对比举例
矩阵的右除、左除
MATLAB的基本处理单元是复数矩阵(标量是一 个1*1的矩阵)。而在《线性代数》理论中没有除 法运算。所以定义了除法为乘法的逆运算。
注意:因为矩阵乘法不满足交换律,即一般 A*B≠B*A,所以除法要考虑“右除”、“左 除”。
2.1.2 变量
变量的命名规则: 1)变量名、函数名对字母的大、小写敏感。 2)变量名由字母、数字和下划线构成。第一个
字母必须是英文字母。 3)有字符个数限制(版本5.0 :最多31个字符)
2.1.2 变量
MATLAB系统默认变量
重点
(注意大小写!)
i或j:
虚单元 正确:5+7j 错误:5+j7
2.1表达式
表达式 (即语句):将变量、数值、函数 用操作符连接起来,就构成了表达式 。
例如:a=(10j+sqrt(10))/2; %注释 ☆行末的“;”用于抑制结果在屏幕上显示
例如: sin(a),sin(b) ,a+b ☆同在一行的表达式,必须用“,”分开
2.2 矩阵的产生与操作
矩阵的产生:
A./Baa31//b b1 3
a2/b2 a4/b4
B.\A
A.\Bbb31//aa13 bb42//aa42B./A
分析:
K/N=K*inv(N)
因为N不是方阵,没有逆 阵,所以报告错误。
K\N=inv(K)*N
因为K的逆阵尺寸2×2, N的尺寸2×3,所以结 果矩阵2×3。
矩阵元素的指数运算
这种战略取得了成功:使人们不在编程细节上化 精力,把注意力集中到科学计算的方法和建模合理性等 大问题上。

MATLAB之(一)数组、矩阵和函数及运算

MATLAB之(一)数组、矩阵和函数及运算

说明 4位小数
3.14159265358979 15位小数
3.14
2位小数
355/113
最接近的有理数
format short e,t =pi 3.1416e+000
科学计数
format long e ,t =pi 四、函数
3.141592653589793e+000
MATLAB提供了大量的函数,按照起用法分为标量函数、 向量函数和矩阵函数。
14
b= 1 3 5 7
c=6:-3:-6(从6到-6公差为-3的等差数组)
c=
6 3 0 -3 -6 e=[0:2:8,ones(1,3)](等差数组和行向量的拼接)
e=
0 2468111
2数组的运算
数组除作为1×n矩阵(行向量)遵循矩阵运算外,
MATLAB还为数组提供了一些特殊运算。两个数组间的
的最重要特征是按元素进行运算。
2021/4/14
13
1 数组的输入 ⑴可以像1×n矩阵(即行向量)一样输入,如: a=[2,3,4,5] a=
2345
⑵数组常用“:”来方便地生成一些特殊的数组。如:
a=1:5(从1到5公差为1的等差数组)
a=
12345
b=1:2:7(从1到7公差为2的等差数组)
2021/4/14
(5) randn(生成正态分布随机矩阵); U=ones(3)
W=zeros(2,3) V=eye(2,4)
U=
W=
V=
111
000
2021/4/14
000
1000 0100
111
9
111
X=rand(2,3)
X=

MATLAB中的矩阵与向量运算

MATLAB中的矩阵与向量运算

之欧侯瑞魂创作4.1 数组运算和矩阵运算从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操纵简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表4.1.1列出了两种运算指令形式的实质内涵的异同.4.1.1 数组运算和矩阵运算指令形式和实质内涵数组运算矩阵运算指令含义指令含义A.'非共轭转置A'共轭转置A=s把标量s赋给数组A的每个元素s+B把标量s分别与数组B的每个元素相加sB, Bs标量s分别与数组B的元素之差s.*A标量s分别与数组A的元素之积s*A标量s分别与矩阵A的元素之积s./B, B.\s标量s分别被数组B的元素除s*inv(B)矩阵B的逆乘标量sA.^n数组A的每个元素的n次方A^nA为方阵时,矩阵A的n次方A+B数组对应元素的相加A+B矩阵相加AB数组对应元素的相减AB矩阵相减A.*B数组对应元素的相乘A*B内维相同矩阵的乘积A./BA的元素被B的对应元素除A/BA右除BB.\A一定与上相同B\AA左除B(一般与右除分歧)exp(A)以e为底,分别以A的元素为指数,求幂expm(A)A的矩阵指数函数log(A)对A的各元素求对数logm(A)A的矩阵对数函数sqrt(A)对A的积各元素求平方根sqrtm(A)A的矩阵平方函数从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,介入运算的数组必须同维,运算所得的结果数组也是总与原数组同维.4.2 数组的基本运算在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组.4.2.1 点转置和共轭转置. ' ——点转置.非共轭转置,相当于conj(A').>> a=1:5;>> b=a. 'b =12345>> c=b. 'c =1 2 3 4 5这标明对行向量的两次转置运算便得到原来的行向量.' ——共轭转置.对向量进行转置运算并对每个元素取其共轭.如: >> d=a+i*ad =Columns 1 through 31.0000 + 1.0000i2.0000 + 2.0000i3.0000 + 3.0000i Columns 4 through 54.0000 + 4.0000i5.0000 + 5.0000i>> e=d'e =1.0000 1.0000i2.0000 2.0000i3.0000 3.0000i4.0000 4.0000i5.0000 5.0000i4.2.2 纯量 (标量) 和数组的四则运算纯量和数组之间可以进行简单数学运算.如:加,减,乘,除及其混合运行.>> g=[1 2 3 45 6 7 89 10 11 12]>> g=g2g =1 0 1 23 4 5 67 8 9 10>> 2*g1ans =3 1 1 35 7 9 1113 15 17 194.2.3 数组间的四则运算在MATLAB中,数组间进行四则运算时,介入运算的数组必须具有相同的维数,加,减,乘,除运算是按元素与元素的方式进行的.其中,数组间的加,减运算与矩阵的加,减运算要同,运算符为:"+","".但是,数组间的乘,除运算与矩阵间的乘,除运算完全分歧,运算符号也有不同,数组间的乘,除运算符为:".*","./"或".\".1. 数组按元素相加,减>> g=[1 2 3 45 6 7 89 10 11 12]>> h=[1 1 1 1; 2 2 2 2; 3 3 3 3] >> g+h % 按元素相加ans =2 3 4 57 8 9 1012 13 14 15>> ansh % 按元素相减ans =1 2 3 45 6 7 89 10 11 12>> 2*gh % 混合运算ans =1 3 5 78 10 12 1415 17 19 212. 按元素乘>> g.*hans =10 12 14 1627 30 33 363. 按元素除数组间的除法运算符有两个,即左除:"./"和右除:".\",它们之间的关系是:a./b=b.\a>> g./hans =1.00002.00003.00004.00002.50003.00004.1000 4.00003.0000 3.3333 3.66674.0000>> h.\gans =1.00002.00003.00004.00002.50003.00004.1000 4.00003.0000 3.3333 3.66674.00004.2.4 幂运算在MATLAB中,数组的幂运算的运算为:".^",暗示每一个元素进行幂运算.>> g.^2 % 数组g每个元素的平方ans =25 36 49 6481 100 121 144>> g.^(1) % 数组g的每个元素的倒数ans =1.0000 0.5000 0.3333 0.25000.2000 0.1667 0.1429 0.12500.1111 0.1000 0.0909 0.0833>> 2.^g % 以g的每个元素为指数对2进行乘方运算ans =2 4 8 1632 64 128 256512 1024 2048 4096>> g.^h % 以h的每个元素为指数对g中相应元素进行乘方运算ans =1 2 3 425 36 49 64729 1000 1331 1728>> g.^(h1)ans =1 1 1 15 6 7 881 100 121 1444.2.5 数组的指数,对数和开方运算在MATLAB中,所谓数组的运算实质是是数组内部每个元素的运算,因此,数组的指数,对数和开方运算与标量的运算规则完全是一样的,运算符函数分别为:exp( ),log( ),sqrt( )等.>> a=[1 3 4;2 6 5;3 2 4];>> c=exp(a)c =2.7183 20.0855 54.59827.3891 403.4288 148.413220.0855 7.3891 54.5982>>数组的对数,开方运算与数组的指数运算,其方式完全一样,这里不详述.4.3 向量运算对于一行或一列的矩阵,为向量,MATLAB有专门的函数来进行向量点积,叉积和混合积的运算.4.3.1 向量的点积运算在高等数学中,我们知道,两向量的点积指两个向量在其中一个向量方向上的投影的乘积,通经常使用来定义向量的长度.在MATLAB 中,向量的点积用函数"dot"来实现,其调用格式如下:C=dot(A,B) ——返回向量A与B的点积,结果存放于C中.C=dot(A,B, DIM) ——返回向量A与B在维数为DIM的点积,结果存放于C中.>> A=[2 4 5 3 1];>> B=[3 8 10 12 13];>> C=dot(A,B)C =137>> C=dot(A,B,4)C =6 32 50 36 134.3.2 向量的叉积运算在高等数学中,我们知道,两向量的叉积返回的是与两个向量组成的平面垂直的向量.在MATLAB中,向量的点积用函数"cross"来实现,其调用格式如下:C=cross(A,B) ——返回向量A与B的叉积,即:,结果存放于C中. C=cross(A,B, DIM) ——返回向量A与B在维数为DIM的叉积,结果存放于C中.>> A=[2 4 5];>> B=[3 8 10];>> C=cross(A,B)C =0 5 44.3.3 向量的混合运算>> D=dot(A, cross(B,C))D =41上例标明,首先进行的是向量B与C的叉积运算,然后再把叉积运算的结果与向量A进行点积运算.4.4 矩阵的基本运算如果说MATLAB的最大特点是强大的矩阵运算功能,此话毫不为过.事实上,MATLAB中所有的计算都是以矩阵为基本单元进行的.MATLAB对矩阵的运算功能最全面,也是最为强大的.矩阵在形式上与构造方面是等同于前面所述的数组的,当其数学意义却是完全分歧的.矩阵的基本运算包含矩阵的四则运算,矩阵与标时的运算,矩阵的幂运算,指数运算,对数运算,开方运算及以矩阵的逆运算,行列式运算等.4.4.1 矩阵的四则运算矩阵的四则运算与前面介绍的数组的四则运算基底细同.但也有一些不同.1. 矩阵的加减矩阵的加,减与数组的加,减是完全相同的,运算时要求两矩阵的大小完全相同.>> a=[1 2; 3 5; 2 6];>> b=[2 4; 1 8; 9 0];>> c=a+bc =3 64 1311 62. 矩阵的相乘对于矩阵的乘法,从线性代数中,我们知道,要求进行相乘的两矩阵有相同的公共维.如:>> a=[1 2; 3 5; 2 6];>> b=[2 4 1; 8 9 0];>> c=a*bc =18 22 146 57 352 62 2设A矩阵为一个阶的矩阵,则要求与之相乘的B矩阵必须是一个阶,得到矩阵是阶的.即,只有当第一个矩阵 (左矩阵) 的列数等于第二个矩阵 (右矩阵) 的行数时,两个矩阵的乘积才有意义.3. 矩阵的除法对于矩阵的除法有两个运算符号,分别为左除符号"\"和右除符号"/".矩阵的右除运算速度要慢一点,而左除运算可以防止奇异矩阵的影响.对于方程,若此方程为超定的方程,则使用除法可以自动找到使的平方最小化的解.若此方程为不定方程,则使用除法运算符至少求得的解至多有rank(A) (矩阵A的秩)个非零元素,而且求得的解是这种类型的解中范数最小的一个.>> a=[21 34 20; 5 78 20; 21 14 17; 34 31 38];>> b=[10 20 30 40]';>> x=b\ax =0.7667 1.1867 0.8767上面方程是超定方程.要注意的:结果矩阵x是列向量形式.如果, >> a=[21 34 20 5; 78 20 21 14; 17 34 31 38];>> b=[10 20 30]';>> x=b\ax =1.6286 1.2571 1.1071 1.0500上面的方程为不定方程.4. 矩阵与标量间的四则运算矩阵与标量的四则运算和数组与标量间的四则运算完全相同,即矩阵中的每个元素与标量进行加,减,乘,除四则运算.需要说明的是,当进行除法运算时,标量只能做除数.5. 矩阵的幂运算矩阵的幂运算与标量的幂运算分歧.用符号"^",它不是对矩阵的每个元素进行幂运算,而是与矩阵的某种分解有关.>> b=[21 34 20; 78 20 21; 17 34 31];>> c=b^2c =3433 2074 17543555 3766 26313536 23126. 矩阵的指数,对数运算与开方运算矩阵的指数运算,对数运算与开方运算与数组相应的运算是分歧的.它其实不是对矩阵中的单个元素的运算,而是对整个矩阵的运算.这些运算函数如下:expm, expm1, expm2, expm3 ——指数运算函数;logm ——对数运算函数;sqrtm ——开方运算函数.>> a=[1 3 4; 2 6 5; 3 2 4];>> c=expm(a)c =1.0e+004 *0.4668 0.7694 0.92000.7919 1.3065 1.56130.4807 0.7919 0.9475>> c=logm(a)c =0.5002 + 2.4406i 0.5960 0.6800i 0.7881 1.2493i 0.4148 + 0.4498i 1.4660 0.1253i 1.0108 0.2302i 0.5780 1.6143i 0.4148 + 0.4498i 1.0783 + 0.8263i >> c=sqrtm(a)c =0.6190 + 0.8121i 0.8128 0.2263i 1.1623 0.4157i0.3347 + 0.1497i 2.3022 0.0417i 1.1475 0.0766i1.0271 0.5372i 0.3347 + 0.1497i 1.6461 + 0.2750i 7. 矩阵的转置,逆运算与行列式运算矩阵的转置的运算符为"'".求逆用运算函数:inv( ).而用函数:det( )则可求的矩阵行列式的大小.>> a=[1 2 0; 2 5 1; 4 10 1];>> c=a'c =1 2 42 5 100 1 1>> b=inv(a)b =5 2 22 1 10 2 1>> d=det(a)d =14.5 矩阵的特殊运算矩阵的特殊运算包含矩阵特征值运算,条件数运算,奇异值运算,范数运算,秩运算,正交化运算,迹运算,伪逆运算等,这些运算,MATLAB都可以非常方便地给出.4.5.1 矩阵的特征值运算在线性代数中,计算矩阵的特征值过程相当复杂.而在MATLAB中,矩阵特征值运算只需用函数"eig( )"或"eigs( )"计算即可得到.其使用格式如下.E=eig(X) ——生成由矩阵X的特征值所组成的一个列向量; [V,D]=eig(X) ——生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.eigs( )函数使用迭代法求解矩阵的特征值和特征向量.D=eigs(X) ——生成由矩阵X的特征值所组成的一个列向量.X 必定是方阵,最好是大型稀疏矩阵;[V,D]=eigs(X) ——生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.>> a=[1 2 0; 2 5 1; 4 10 1];[b,c]=eig(a)b =0.2440 0.9107 0.44720.3333 0.3333 0.00000.9107 0.2440 0.8944c =3.7321 0 00 0.2679 00 0 1.00004.5.2 矩阵 (向量) 的范数运算为了反映了矩阵 (向量) 某些特性,线性代数中引入了范数的概念,它分为2范数,1范数,无穷范数和Frobenius范数等.在MATLAB 中,用函数norm( )或normest( ) 计算矩阵 (向量) 的范数.其使用格式如下.norm(X) ——计算矩阵 (向量) X的2范数;norm(X,2) ——同上;norm(X,1) ——计算矩阵 (向量) X的1范数;norm(X,inf) ——计算矩阵 (向量) X的无穷范数;norm(X,'fro') ——计算矩阵 (向量) X的Frobenius范数; normest(X) ——只计算矩阵 (向量) X的2范数;而且是2范数的估计值,适用于计算norm(X)比较费时的情况. >> X=hilb(4)X =1.0000 0.5000 0.3333 0.25000.5000 0.3333 0.2500 0.20000.3333 0.2500 0.2000 0.16670.2500 0.2000 0.1667 0.1429>> norm(4)ans =4>> norm(X)ans =1.5002>> norm(X,2)ans =1.5002>> norm(X,1)ans =2.0833>> norm(X,inf)ans =2.0833>> norm(X,'fro')ans =1.5097>> normest(X)ans =1.50024.5.3 矩阵的条件数运算矩阵的条件数是判断矩阵"病态"程度的一个量值,矩阵A的条件数越大,标明A越"病态",反之,标明A越"良态".如Hilbert矩阵就是一个有名的病态矩阵.cond(X) ——返回矩阵X的2范数的条件数;cond(X, P) ——返回矩阵X的P范数的条件数,其中P为1,2,inf或fro;rcond(X) ——用于计算矩阵条件数的倒数值,当矩阵X为"病态"时,rcond(X)就接近0,X为"良态"时,rcond(X)就接近1. condest(X) ——计算关于矩阵X的1范数的条件数的估计值. >> M=magic(3)M =8 1 63 5 74 9 2>> H=hilb(4)H =1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 >> c1=cond(M)c1 =4.3301>> c2=cond(M)c2 =4.3301>> c3=rcond(M)c3 =0.1875>> c4=condest(M)c4 =5.3333>> h1=cond(H)h1 =1.5514e+004>> h2=cond(H,inf)h2 =2.8375e+004>> h3=rcond(H)h3 =3.5242e005>> h4=condest(H)h4 =2.8375e+004从上计算可以看出,魔方矩阵比较"良态",而Hilbert矩阵是"病态"的.4.5.4 矩阵的秩秩是线性代数中的相当重要的概念之一,通常矩阵可以经过初等行列式或列变换,将其转化为行阶梯形矩阵,而行阶梯矩阵所包含非零行的行数是一个定的,这个确定的非零行的行数就是矩阵的秩.矩阵中的秩用函数rank( )来计算.>> T=rand(6)T =0.9501 0.4565 0.9218 0.4103 0.1389 0.01530.2311 0.0185 0.7382 0.8936 0.2028 0.74680.6068 0.8214 0.1763 0.0579 0.1987 0.44510.4860 0.4447 0.4057 0.3529 0.6038 0.93180.8913 0.6154 0.9355 0.8132 0.2722 0.46600.7621 0.7919 0.9169 0.0099 0.1988 0.4186>> r=rank(T)r =6由上计算可知,矩阵T为满秩矩阵. >> T1=[1 1 1; 2 2 3]T1 =1 1 12 2 3>> r=rank(T1)r =2由上计算可知,矩阵T1为行满秩矩阵.。

第3章 实验二矩阵与向量运算

第3章 实验二矩阵与向量运算

第3章 实验二矩阵与向量运算实验目的:在MATLAB 里,会对矩阵与向量进行加、减、数乘、求逆及矩阵的特征值运算,以及矩阵的LU 分解。

3.1 矩阵、逆矩阵运算 例3.1 设矩阵A 、B 如下:1221,3415A B -⎡⎤⎡⎤==⎢⎥⎢⎥⎣⎦⎣⎦,分别求出B A +、B A *、A 的逆矩阵,A 矩阵的行列式的值。

在matlab 软件中的命令窗口输入: A=[1 2;3 4]; B=[-2 1;1 5]; A+B 得到: ans =-1 3 4 9A 的逆矩阵由命令inv(A)计算,例如:令A=[1 2;3 4]; 则 C=inv(A) 得到: C =-2.0000 1.0000 1.5000 -0.5000对于任意非奇异的方阵,都可以用命令inv 计算其逆矩阵。

在matlab 里,矩阵乘法用乘法运算符表示,可以通过命令输入:A*B得到:ans =0 11 -2 23在matlab 里,可以通过命令输入:det(A)得到: -2在matlab 里,在矩阵的后面加一个撇号得到该矩阵的转置,例如: F=A ’ 使矩阵F 变为A 的转置。

下面的命令创建一个m ×m 的单位矩阵: s=eye(m)m ×n 的零矩阵用s=zeros(m*n)给出。

m ×n 的元素都是1的矩阵用写为: w=ones(m,n)如果A 是一个矩阵,则zeros(size(A))和ones(size(A))分别得到与A 大小相同的零矩阵和单位矩阵。

命令rand(m,n)创建一个m ×n 的随机矩阵。

命令hilb(m)创建一个Hilbert 矩阵的特殊矩阵。

3.2 矩阵的特征值设A 是一个n ×n 方阵,X 是一个n 维向量,乘积Y=AX 可以看作是n 维空间变换。

如果能够找到一个标量λ,使得存在一个非零向量X ,满足:AX=λX (3.1) 则可以认为线性变换T(X)=AX 将X 映射为λX,此时,称X 是对应于特征值λ的特征向量。

第2-1章 MATLAB矩阵及其运算

第2-1章  MATLAB矩阵及其运算

例2-3 分别建立3×3、3×2和与矩阵A同样 大小的零矩阵。 (1) 建立一个3×3零矩阵。 zeros(3) (2) 建立一个3×2零矩阵。 zeros(3,2) (3) 设A为2×3矩阵,则可以用 zeros(size(A))建立一个与矩阵A同样大小 零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样 大小的零矩阵
2.矩阵拆分
(1) 利用冒号表达式获得子矩 阵 ① A(:,j)表示取A矩阵的第j列 全部元素;A(i,:)表示A矩阵第i 行的全部元素;A(i,j)表示取A 矩阵第i行、第j列的元素。
• ② A(i:i+m,:)表示取A矩阵第i~i+m行 的全部元素;A(:,k:k+m)表示取A矩 阵第k~k+m列的全部元素, A(i:i+m,k:k+m)表示取A矩阵第i~i+m 行内,并在第k~k+m列中的所有元 素。 此外,还可利用一般向量和end运 算符来表示矩阵下标,从而获得子 矩阵。end表示某一维的末尾元素 下标。
(4) 托普利兹矩阵 托普利兹(Toeplitz)矩阵除第一行第 一列外,其他每个元素都与左上角 的元素相同。生成托普利兹矩阵的 函数是toeplitz(x,y),它生成一个以x 为第一列,y为第一行的托普利兹 矩阵。这里x, y均为向量,两者不 必等长。toeplitz(x)用向量x生成一个 对称的托普利兹矩阵。例如 T=toeplitz(1:6)
(5) 伴随矩阵 MATLAB生成伴随矩阵的函数是 compan(p),其中p是一个多项式 的系数向量,高次幂系数排在 前,低次幂排在后。例如,为 了求多项式的x3-7x+6的伴随矩 阵,可使用命令: p=[1,0,-7,6]; compan(p)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1 数组运算和矩阵运算从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表4.1.1 数组运算和矩阵运算指令形式和实质内涵数组运算矩阵运算指令含义指令含义A.'非共轭转置A'共轭转置A=s把标量s赋给数组A的每个元素s+B把标量s分别与数组B的每个元素相加s-B, B-s标量s分别与数组B的元素之差s.*A标量s分别与数组A的元素之积s*A标量s分别与矩阵A的元素之积s./B, B.\s标量s分别被数组B的元素除s*inv(B)矩阵B的逆乘标量sA.^n数组A的每个元素的n次方A^n A为方阵时,矩阵A的n次方A+B数组对应元素的相加A+B矩阵相加A-B数组对应元素的相减A-B矩阵相减A.*B数组对应元素的相乘A*B内维相同矩阵的乘积A./B A的元素被B的对应元素除A/B A右除BB.\A一定与上相同B\A A左除B(一般与右除不同)exp(A)以e为底,分别以A的元素为指数,求幂expm(A) A的矩阵指数函数log(A) 对A的各元素求对数logm(A) A的矩阵对数函数sqrt(A) 对A的积各元素求平方根sqrtm(A) A的矩阵平方函数从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,参与运算的数组必须同维,运算所得的结果数组也是总与原数组同维.4.2 数组的基本运算在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组.4.2.1 点转置和共轭转置. ' ——点转置.非共轭转置,相当于conj(A').>> a=1:5;>> b=a. 'b =12345>> c=b. 'c =1 2 3 4 5这表明对行向量的两次转置运算便得到原来的行向量.' ——共轭转置.对向量进行转置运算并对每个元素取其共轭.如:>> d=a+i*ad =Columns 1 through 31.0000 + 1.0000i2.0000 + 2.0000i3.0000 + 3.0000iColumns 4 through 54.0000 + 4.0000i5.0000 + 5.0000i>> e=d'e =1.0000 - 1.0000i2.0000 - 2.0000i3.0000 - 3.0000i4.0000 - 4.0000i5.0000 - 5.0000i4.2.2 纯量(标量) 和数组的四则运算纯量和数组之间可以进行简单数学运算.如:加,减,乘,除及其混合运行.>> g=[1 2 3 45 6 7 89 10 11 12]>> g=g-2g =-1 0 1 23 4 5 67 8 9 10>> 2*g-1ans =-3 -1 1 35 7 9 1113 15 17 194.2.3 数组间的四则运算在MATLAB中,数组间进行四则运算时,参与运算的数组必须具有相同的维数,加,减,乘,除运算是按元素与元素的方式进行的.其中,数组间的加,减运算与矩阵的加,减运算要同,运算符为:"+","-".但是,数组间的乘,除运算与矩阵间的乘,除运算完全不同,运算符号也有差别,数组间的乘,除运算符为:".*","./"或".\".1. 数组按元素相加,减>> g=[1 2 3 45 6 7 89 10 11 12]>> h=[1 1 1 1; 2 2 2 2; 3 3 3 3]>> g+h % 按元素相加ans =2 3 4 57 8 9 1012 13 14 15>> ans-h % 按元素相减ans =1 2 3 45 6 7 89 10 11 12>> 2*g-h % 混合运算ans =1 3 5 78 10 12 1415 17 19 212. 按元素乘>> g.*hans =1 2 3 410 12 14 1627 30 33 363. 按元素除数组间的除法运算符有两个,即左除:"./"和右除:".\",它们之间的关系是: a./b=b.\a>> g./hans =1.00002.00003.00004.00002.50003.00004.1000 4.00003.0000 3.3333 3.66674.0000>> h.\gans =1.00002.00003.00004.00002.50003.00004.1000 4.00003.0000 3.3333 3.66674.00004.2.4 幂运算在MATLAB中,数组的幂运算的运算为:".^",表示每一个元素进行幂运算. >> g.^2 % 数组g每个元素的平方ans =1 4 9 1625 36 49 6481 100 121 144>> g.^(-1) % 数组g的每个元素的倒数ans =1.0000 0.5000 0.3333 0.25000.2000 0.1667 0.1429 0.12500.1111 0.1000 0.0909 0.0833>> 2.^g % 以g的每个元素为指数对2进行乘方运算ans =2 4 8 1632 64 128 256512 1024 2048 4096>> g.^h % 以h的每个元素为指数对g中相应元素进行乘方运算ans =1 2 3 425 36 49 64729 1000 1331 1728>> g.^(h-1)ans =1 1 1 15 6 7 881 100 121 1444.2.5 数组的指数,对数和开方运算在MATLAB中,所谓数组的运算实质是是数组内部每个元素的运算,因此,数组的指数,对数和开方运算与标量的运算规则完全是一样的,运算符函数分别为:exp( ),log( ),sqrt( )等.>> a=[1 3 4;2 6 5;3 2 4];>> c=exp(a)c =2.7183 20.0855 54.59827.3891 403.4288 148.413220.0855 7.3891 54.5982>>数组的对数,开方运算与数组的指数运算,其方式完全一样,这里不详述.4.3 向量运算对于一行或一列的矩阵,为向量,MATLAB有专门的函数来进行向量点积,叉积和混合积的运算.4.3.1 向量的点积运算在高等数学中,我们知道,两向量的点积指两个向量在其中一个向量方向上的投影的乘积,通常用来定义向量的长度.在MATLAB中,向量的点积用函数"dot"来实现,其调用格式如下:C=dot(A,B) ——返回向量A与B的点积,结果存放于C中.C=dot(A,B, DIM) ——返回向量A与B在维数为DIM的点积,结果存放于C中.>> A=[2 4 5 3 1];>> B=[3 8 10 12 13];>> C=dot(A,B)C =137>> C=dot(A,B,4)C =6 32 50 36 134.3.2 向量的叉积运算在高等数学中,我们知道,两向量的叉积返回的是与两个向量组成的平面垂直的向量.在MATLAB中,向量的点积用函数"cross"来实现,其调用格式如下:C=cross(A,B) ——返回向量A与B的叉积,即:,结果存放于C中.C=cross(A,B, DIM) ——返回向量A与B在维数为DIM的叉积,结果存放于C中.>> A=[2 4 5];>> B=[3 8 10];>> C=cross(A,B)C =0 -5 44.3.3 向量的混合运算>> D=dot(A, cross(B,C))D =41上例表明,首先进行的是向量B与C的叉积运算,然后再把叉积运算的结果与向量A进行点积运算.4.4 矩阵的基本运算如果说MATLAB的最大特点是强大的矩阵运算功能,此话毫不为过.事实上,MATLAB中所有的计算都是以矩阵为基本单元进行的.MATLAB对矩阵的运算功能最全面,也是最为强大的.矩阵在形式上与构造方面是等同于前面所述的数组的,当其数学意义却是完全不同的.矩阵的基本运算包括矩阵的四则运算,矩阵与标时的运算,矩阵的幂运算,指数运算,对数运算,开方运算及以矩阵的逆运算,行列式运算等.4.4.1 矩阵的四则运算矩阵的四则运算与前面介绍的数组的四则运算基本相同.但也有一些差别.1. 矩阵的加减矩阵的加,减与数组的加,减是完全相同的,运算时要求两矩阵的大小完全相同.>> a=[1 2; 3 5; 2 6];>> b=[2 4; 1 8; 9 0];>> c=a+bc =3 64 1311 62. 矩阵的相乘对于矩阵的乘法,从线性代数中,我们知道,要求进行相乘的两矩阵有相同的公共维.如:>> a=[1 2; 3 5; 2 6];>> b=[2 4 1; 8 9 0];>> c=a*bc =18 22 146 57 352 62 2设A矩阵为一个阶的矩阵,则要求与之相乘的B矩阵必须是一个阶,得到矩阵是阶的.即,只有当第一个矩阵(左矩阵) 的列数等于第二个矩阵(右矩阵) 的行数时,两个矩阵的乘积才有意义.3. 矩阵的除法对于矩阵的除法有两个运算符号,分别为左除符号"\"和右除符号"/".矩阵的右除运算速度要慢一点,而左除运算可以避免奇异矩阵的影响.对于方程,若此方程为超定的方程,则使用除法可以自动找到使的平方最小化的解.若此方程为不定方程,则使用除法运算符至少求得的解至多有rank(A) (矩阵A的秩)个非零元素,而且求得的解是这种类型的解中范数最小的一个.>> a=[21 34 20; 5 78 20; 21 14 17; 34 31 38];>> b=[10 20 30 40]';>> x=b\ax =0.7667 1.1867 0.8767上面方程是超定方程.要注意的:结果矩阵x是列向量形式.如果,>> a=[21 34 20 5; 78 20 21 14; 17 34 31 38];>> b=[10 20 30]';>> x=b\ax =1.6286 1.2571 1.1071 1.0500上面的方程为不定方程.4. 矩阵与标量间的四则运算矩阵与标量的四则运算和数组与标量间的四则运算完全相同,即矩阵中的每个元素与标量进行加,减,乘,除四则运算.需要说明的是,当进行除法运算时,标量只能做除数.5. 矩阵的幂运算矩阵的幂运算与标量的幂运算不同.用符号"^",它不是对矩阵的每个元素进行幂运算,而是与矩阵的某种分解有关.>> b=[21 34 20; 78 20 21; 17 34 31];>> c=b^2c =3433 2074 17543555 3766 26313536 2312 20156. 矩阵的指数,对数运算与开方运算矩阵的指数运算,对数运算与开方运算与数组相应的运算是不同的.它并不是对矩阵中的单个元素的运算,而是对整个矩阵的运算.这些运算函数如下:expm, expm1, expm2, expm3 ——指数运算函数;logm ——对数运算函数;sqrtm ——开方运算函数.>> a=[1 3 4; 2 6 5; 3 2 4];>> c=expm(a)c =1.0e+004 *0.4668 0.7694 0.92000.7919 1.3065 1.56130.4807 0.7919 0.9475>> c=logm(a)c =0.5002 + 2.4406i 0.5960 - 0.6800i 0.7881 - 1.2493i0.4148 + 0.4498i 1.4660 - 0.1253i 1.0108 - 0.2302i0.5780 - 1.6143i 0.4148 + 0.4498i 1.0783 + 0.8263i>> c=sqrtm(a)c =0.6190 + 0.8121i 0.8128 - 0.2263i 1.1623 - 0.4157i0.3347 + 0.1497i 2.3022 - 0.0417i 1.1475 - 0.0766i1.0271 - 0.5372i 0.3347 + 0.1497i 1.6461 + 0.2750i7. 矩阵的转置,逆运算与行列式运算矩阵的转置的运算符为"'".求逆用运算函数:inv( ).而用函数:det( )则可求的矩阵行列式的大小. >> a=[1 2 0; 2 5 -1; 4 10 -1];>> c=a'c =1 2 42 5 100 -1 -1>> b=inv(a)b =5 2 -2-2 -1 10 -2 1>> d=det(a)d =14.5 矩阵的特殊运算矩阵的特殊运算包括矩阵特征值运算,条件数运算,奇异值运算,范数运算,秩运算,正交化运算,迹运算,伪逆运算等,这些运算,MATLAB都可以非常方便地给出.4.5.1 矩阵的特征值运算在线性代数中,计算矩阵的特征值过程相当复杂.而在MATLAB中,矩阵特征值运算只需用函数"eig( )"或"eigs( )"计算即可得到.其使用格式如下.E=eig(X) ——生成由矩阵X的特征值所组成的一个列向量;[V,D]=eig(X) ——生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.eigs( )函数使用迭代法求解矩阵的特征值和特征向量.D=eigs(X) ——生成由矩阵X的特征值所组成的一个列向量.X必然是方阵,最好是大型稀疏矩阵;[V,D]=eigs(X) ——生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.>> a=[1 2 0; 2 5 -1; 4 10 -1];[b,c]=eig(a)b =-0.2440 -0.9107 0.4472-0.3333 0.3333 0.0000-0.9107 -0.2440 0.8944c =3.7321 0 00 0.2679 00 0 1.00004.5.2 矩阵(向量) 的范数运算为了反映了矩阵(向量) 某些特性,线性代数中引入了范数的概念,它分为2-范数,1-范数,无穷范数和Frobenius范数等.在MATLAB中,用函数norm( )或normest( ) 计算矩阵(向量) 的范数.其使用格式如下.norm(X) ——计算矩阵(向量) X的2-范数;norm(X,2) ——同上;norm(X,1) ——计算矩阵(向量) X的1-范数;norm(X,inf) ——计算矩阵(向量) X的无穷范数;norm(X,'fro') ——计算矩阵(向量) X的Frobenius范数;normest(X) ——只计算矩阵(向量) X的2-范数;并且是2-范数的估计值,适用于计算norm(X)比较费时的情况.>> X=hilb(4)X =1.0000 0.5000 0.3333 0.25000.5000 0.3333 0.2500 0.20000.3333 0.2500 0.2000 0.16670.2500 0.2000 0.1667 0.1429>> norm(4)ans =4>> norm(X)ans =1.5002>> norm(X,2)ans =1.5002>> norm(X,1)ans =2.0833>> norm(X,inf)ans =2.0833>> norm(X,'fro')ans =1.5097>> normest(X)ans =1.50024.5.3 矩阵的条件数运算矩阵的条件数是判断矩阵"病态"程度的一个量值,矩阵A的条件数越大,表明A越"病态",反之,表明A越"良态".如Hilbert矩阵就是一个有名的病态矩阵.cond(X) ——返回矩阵X的2-范数的条件数;cond(X, P) ——返回矩阵X的P-范数的条件数,其中P为1,2,inf或fro;rcond(X) ——用于计算矩阵条件数的倒数值,当矩阵X为"病态"时,rcond(X)就接近0,X为"良态"时,rcond(X)就接近1.condest(X) ——计算关于矩阵X的1-范数的条件数的估计值.>> M=magic(3)M =8 1 63 5 74 9 2>> H=hilb(4)H =1.0000 0.5000 0.3333 0.25000.5000 0.3333 0.2500 0.20000.3333 0.2500 0.2000 0.16670.2500 0.2000 0.1667 0.1429>> c1=cond(M)c1 =4.3301>> c2=cond(M)c2 =4.3301>> c3=rcond(M)c3 =0.1875>> c4=condest(M)c4 =5.3333>> h1=cond(H)h1 =1.5514e+004>> h2=cond(H,inf)h2 =2.8375e+004>> h3=rcond(H)h3 =3.5242e-005>> h4=condest(H)h4 =2.8375e+004从上计算可以看出,魔方矩阵比较"良态",而Hilbert矩阵是"病态"的.4.5.4 矩阵的秩秩是线性代数中的相当重要的概念之一,通常矩阵可以经过初等行列式或列变换,将其转化为行阶梯形矩阵,而行阶梯矩阵所包含非零行的行数是一个定的,这个确定的非零行的行数就是矩阵的秩.矩阵中的秩用函数rank( )来计算.>> T=rand(6)T =0.9501 0.4565 0.9218 0.4103 0.1389 0.01530.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.6154 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186 >> r=rank(T)r =6由上计算可知,矩阵T为满秩矩阵.>> T1=[1 1 1; 2 2 3]T1 =1 1 12 2 3>> r=rank(T1)r =2由上计算可知,矩阵T1为行满秩矩阵.参考网站:.cn/s/blog_489f4bab01000aju.html。

相关文档
最新文档