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)

Matlab中的向量和矩阵操作技巧

Matlab中的向量和矩阵操作技巧

Matlab中的向量和矩阵操作技巧引言Matlab是一种常用的科学计算和数据分析的工具,它在向量和矩阵操作方面有着强大的功能。

本文将介绍一些在Matlab中常用的向量和矩阵操作技巧,让读者能够更加高效地进行数据处理和分析。

1. 向量和矩阵的创建和初始化在Matlab中,创建和初始化向量和矩阵非常简单。

下面我们通过几个示例来展示不同方式下的向量和矩阵创建和初始化操作。

1.1 向量的创建和初始化向量可以通过矩阵的一列或者一行进行创建。

例如,我们可以使用下面的代码创建一个行向量:a = [1 2 3 4 5];我们也可以通过reshape函数将一个矩阵转换为向量。

例如,我们可以使用下面的代码将一个3x3的矩阵转换为一个列向量:b = reshape([1 2 3; 4 5 6; 7 8 9], 9, 1);1.2 矩阵的创建和初始化矩阵可以通过直接赋值或者使用特定的函数进行创建和初始化。

例如,我们可以使用下面的代码创建一个3x3的矩阵:A = [1 2 3; 4 5 6; 7 8 9];我们也可以使用随机数生成函数来创建和初始化矩阵。

例如,我们可以使用rand函数创建一个3x3的随机矩阵:B = rand(3, 3);2. 向量和矩阵的运算Matlab提供了丰富的向量和矩阵运算符和函数,使得向量和矩阵之间的运算非常简便。

下面我们将介绍一些常用的向量和矩阵运算。

2.1 向量和矩阵的加法和减法向量和矩阵的加法和减法可以直接使用"+"和"-"运算符。

例如,我们可以使用下面的代码实现两个向量的加法和减法:a = [1 2 3];b = [4 5 6];c = a + b;d = a - b;我们可以用相同的方法对矩阵进行加法和减法运算。

2.2 向量和矩阵的乘法向量和矩阵的乘法在Matlab中有两种方式:点乘和矩阵乘法。

点乘使用"."运算符,矩阵乘法使用"*"运算符。

Matlab程序设计第2章矩阵及其运算

Matlab程序设计第2章矩阵及其运算

2.2.2 创建二维数组 方法2:用函数生成特殊矩阵
函数 zeros (全零阵) 格式 B = zeros(n) B = zeros(m,n) 函数 ones (全1阵) 格式 B = ones(n) B = ones(m,n) 函数 eye(单位矩阵) 格式 B = eye(n) B = eye(m,n) %生成n×n全零阵 %生成m×n全零阵
2.2.4二维数组的寻访与赋值
判断数组维数和大小 1) 判断数组维数的指令:ndims 2) 判断数组大小的指令:size 例如:上例中数组A的维数和大小分别为
>> An=ndims(A), As=size(A) An = 2 As = 3 3
表示数组A大小的行数组的长度 (As的长度) 等于数组A的 维数 (An),length(As)=An 数组A的长度指最长维的长度:length(A)=max(As)。
注意: 1) 子数组寻访取决于 x ( index )中的下标index。 2) 下标 index 可以是单个数值或数组,但是 index 的元素取 值必须在 [ 1 , end ] 的范围内。end 为数组最大下标。 3) 子数组赋值时,注意被赋值的子数组长度与送入的数组长 度一致。
2.2.4二维数组的寻访与赋值
%生成n×n全1阵 %生成m×n全1阵 %生成n×n单位阵 %生成m×n单位阵
2.2.2 创建二维数组 方法2:用函数生成特殊矩阵
函数 randn 格式 y = randn(n) y = randn(m,n) %生成n×n正态分布随机矩阵 %生成m×n正态分布随机矩阵
产生均值为0.6,方差为0.1的4阶矩阵 >> mu=0.6; sigma=0.1; >> x=mu+sqrt(sigma)*randn(4) x= 0.8311 0.7799 0.1335 1.0565 0.7827 0.5192 0.5260 0.4890 0.6127 0.4806 0.6375 0.7971 0.8141 0.5064 0.6996 0.8527

MATLAB中的矩阵运算

MATLAB中的矩阵运算
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
●randn生成正态分布的随机阵 生成正态分布的随机阵 randn(n)生成 ×n的正态随机阵; 生成n× 的正态随机阵 的正态随机阵; 生成 randn(m,n),randn([m,n])生成 ×n的正态随机阵; 生成m× 的正态随机阵 的正态随机阵; 生成 randn(size(A))生成与矩阵 大小相同的正态随机阵。 生成与矩阵A大小相同的正态随机阵 生成与矩阵 大小相同的正态随机阵。 (5)其它基本运算 左右翻转; 上下翻转; ●fliplr(A) 将A左右翻转;●flipud(A) 将A上下翻转; 左右翻转 上下翻转 旋转90度 返回A ● rot90(A) 将 A旋转 度 。 ● tril(A)返回 A 的下三角部分 ; 旋转 返回 的下三角部分; tril(A,k)返回A第K 条对角线以下部分,K=0为主对角线, 返回A 条对角线以下部分,K=0为主对角线, 返回 K>0为主对角线以上,K<0为主对角线以下。 K>0为主对角线以上,K<0为主对角线以下。 返回A ●triu(A), triu(A,K)返回A的上三角部分,其它同上。 返回 的上三角部分,其它同上。 返回以向量v为主对角线的矩阵 ●diag(v)返回以向量 为主对角线的矩阵; 返回以向量 为主对角线的矩阵; diag(v,k) 若 v 是 n 个 元 素 的 向 量 , 则 它 返 回 一 个 大 小 为 n+abs(k)方阵,向量 位于第 条对角线上。K=0代表主对角线 方阵, 位于第k条对角线上 方阵 向量v位于第 条对角线上。 代表主对角线 为主对角线以上, 为主对角线以下。 , k>0为主对角线以上,k<0为主对角线以下。 diag(A)以向量 为主对角线以上 为主对角线以下 以向量 形式, 返回A 的主对角线元素; 对于矩阵A 形式 , 返回 A 的主对角线元素 ; diag(A,k)对于矩阵 A , 返回 对于矩阵 由第k条对角线构成的列向量 条对角线构成的列向量。 由第 条对角线构成的列向量。

第二讲 MATLAB基本操作

第二讲 MATLAB基本操作

三、矩阵及其运算
(四)矩阵的基本数值运算
(1)矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算是指矩阵各元素与常 数之间的四则运算。 数之间的四则运算。 例如: 例如 a=[1,2,3;4,5,6;7,8,9]; 求: c=a+2; d=a-2; e=a*2; f=a/2;
(一)矩阵的生成
矩阵的生成有多种方式,通常使用的有四种: 矩阵的生成有多种方式,通常使用的有四种: (1)在命令窗口中直接输入矩阵; 在命令窗口中直接输入矩阵; 把矩阵的元素直接排列到方括号中, 把矩阵的元素直接排列到方括号中,每行 内的元素用空格或逗号相隔, 内的元素用空格或逗号相隔,行于行之间的内 容用分号相隔。 容用分号相隔。 通过语句和函数产生矩阵; (2)通过语句和函数产生矩阵; 文件中建立矩阵; (3)在M文件中建立矩阵; 从外部的数据文件中导入矩阵; (4)从外部的数据文件中导入矩阵; 例如: 例如 a=[1 2 3;4 5 6;7 8 9], b=[2,4,6,8;1,3,5,7;1,2,3,4],
四、数组及其运算
(一)数组的生成
(1)在命令窗口中直接输入向量 格式:a=[a1,a2,a3, …an ] 格式: (2)等差元素向量的生成 生成法: 格式: (i)冒号“:”生成法: 格式:a=a1:m:an )冒号“ (ii)使用线性等分向量函数 )使用线性等分向量函数linspace法: 法 格式: 格式:a=linspace(a1,an,n)
三、矩阵及其运算
(三)矩阵中元素的操作
的第r行 (1)提取矩阵 的第 行:A(r,:) )提取矩阵A的第 ( ,:) 的第r列 (:,r) (2)提取矩阵 的第 列:A(:, ) )提取矩阵A的第 (:, 的每一列, 拉伸为一个列向量: (:) (3)依次提取矩阵 的每一列,将A拉伸为一个列向量:A(:) )依次提取矩阵A的每一列 拉伸为一个列向量 (4)取矩阵 的第 1~i2行、第j1~j2列构成新矩阵 的第i 列构成新矩阵:A(i1:i2, j1:j2) )取矩阵A的第 的第i 构成新矩阵:A(i2:-1:i1,:) (5)以逆序提取矩阵 的第 1~i2行,构成新矩阵 )以逆序提取矩阵A的第 : 的第j 构成新矩阵:A(:, j2:-1:j1 ) (6)以逆序提取矩阵 的第 1~j2列,构成新矩阵 )以逆序提取矩阵A的第 : 的第i 构成新矩阵:A(i1:i2,: ] ,:)=[ (7)删除 的第 1~i2行,构成新矩阵 )删除A的第 的第j 构成新矩阵:A(:, (8)删除 的第 1~j2列,构成新矩阵 :, j1:j2)=[ ] )删除A的第 拼接成新矩阵: (9)将矩阵 和B拼接成新矩阵:[A B];[A;B] )将矩阵A和 拼接成新矩阵 ; ;

matlab点乘

matlab点乘

matlab点乘点乘是矩阵运算中的一种重要操作,它也被称为向量积或内积。

在MATLAB 中,该操作可以通过“.*”符号来实现。

点乘的定义是:对于两个同维度的向量,它们的点乘结果是这两个向量对应分量的乘积之和。

举个例子,假设有两个向量 A 和 B,它们的维度均为 n,那么它们的点乘结果可以表示为:A ·B = A1 * B1 + A2 * B2 + … + An * Bn其中,A1 和 B1 分别代表向量 A 和 B 的第一个分量,An 和 Bn 则分别代表它们的最后一个分量。

在 MATLAB 中,点乘可以应用于任何同维度的矩阵和向量。

例如:A = [1, 2, 3];B = [4, 5, 6];C = A .* B;这段代码的作用是将向量 A 和 B 对应分量相乘,得到新的向量 C。

在这个例子中,C 的值为 [4, 10, 18]。

除了向量外,点乘还可以应用于矩阵的行或列。

如果要对两个矩阵 A和 B 的行进行点乘,可以使用以下代码:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];B = [4, 5, 6; 7, 8, 9; 10, 11, 12];C = A .* B;在这个例子中,A 和 B 都是3x3的矩阵。

通过 A .* B 进行点乘,将得到一个新的3x3的矩阵C。

C 的每个元素都等于 A 和 B 对应位置的元素相乘。

点乘操作在 MATLAB 中的应用非常广泛。

它可以用于解决向量的内积、计算两个矢量之间的夹角、求解向量正交、计算距离和投影等问题。

同时,在图像处理和信号处理等领域中,点乘也有很多实际应用。

例如,在图像中,我们可以用点乘来改变像素亮度和颜色,或者对图像进行滤波等操作。

总之,在 MATLAB 中,点乘是一个非常实用的矩阵运算,有着广泛的应用。

掌握了它的使用方法,我们就可以更加高效地处理各种数据,实现各种复杂的算法和模型。

在Matlab中使用并行计算的技术指南

在Matlab中使用并行计算的技术指南

在Matlab中使用并行计算的技术指南引言:Matlab是一种广泛使用的科学计算软件,它在进行大规模数据处理和复杂计算时表现出色。

然而,随着问题规模的增加,单线程计算的效率可能变得低下。

为了充分利用计算资源,减少计算时间,我们需要深入了解如何在Matlab中使用并行计算的技术。

本文将介绍使用Matlab进行并行计算的技巧和最佳实践,帮助读者快速上手并应用于实际问题。

一、并行计算的基本原理并行计算是指将计算任务分成多个子任务,由各个处理器或计算机同时执行,最后将各个子任务的结果合并得到最终结果。

在Matlab中,我们可以通过利用多个核心、多个计算机或者集群系统来实现并行计算。

具体而言,Matlab提供了以下几种并行计算的方式:1. 向量化和矩阵运算:对于一些可以利用矩阵运算来完成的计算任务,我们可以使用Matlab的并行运算库,如MATLAB Parallel Computing Toolbox,来加速计算过程。

通过使用向量化和矩阵运算,我们可以充分利用现代处理器的SIMD(单指令流多数据流)机制,将多个计算操作合并成一次计算。

2. 多线程并行计算:当某些计算任务无法通过向量化和矩阵运算来加速时,我们可以使用Matlab的并行计算库来实现多线程并行计算。

通过将计算任务分成多个子任务,由多个线程同时执行,可以提高整体计算的效率。

3. 分布式计算:当计算任务的规模较大,单个计算机无法完成时,我们可以使用Matlab的分布式计算工具箱来将任务分发给多个计算机或集群系统来并行计算。

这种方式可以将计算资源充分利用起来,提高计算效率。

二、使用向量化和矩阵运算加速计算过程向量化是指通过对矩阵和向量操作的优化,将多个标量计算操作合并成一次矩阵运算,从而大大提高计算效率。

在Matlab中,我们可以使用矩阵运算函数和元素级函数来实现向量化。

1. 矩阵运算函数:Matlab提供了一系列矩阵运算函数,如矩阵相加(`+`)、矩阵乘法(`*`)、矩阵转置(`'`)、矩阵求逆(`inv`)等。

matlab矩阵运算

matlab矩阵运算
>> B=A’ >> C=A.’
矩阵操作
改变矩阵的形状: 改变矩阵的形状:reshape
reshape(A,m,n): 将矩阵元素按 列方向 进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等! 必须与原矩阵元素个数相等!
矩阵操作
查看矩阵的大小: 查看矩阵的大小:size
size(A) 列出矩阵 A 的行数和列数 size(A,1) 返回矩阵 A 的行数 size(A,2) 返回矩阵 A 的列数
例: 解下列方程组
x + y =1 () 1 (定解方程组) x − y = 4 x + 2y + z =1 (2) (不定方程组) 3 x − 2 y + z = 4 x + 2y =1 (3) 3 x − 2 y = 4 (超定方程组) x− y =2 x + 2y =1 (4) (奇异方程组) 2 x + 4 y = 2
矩阵的 Kronecker 乘积
乘积的定义 矩阵 Kronecker 乘积的定义
设A是n×m矩阵,B是p×q矩阵,则A与B的kronecker乘积为: a11 B a12 B … a1m B a B a B … a B 22 2m C = A ⊗ B = 21 ⋯ ⋯ ⋯ ⋯ an1 B an 2 B … anm B
矩阵基本运算
矩阵的除法: 、 矩阵的除法:/、\ 右除和左除 除法
若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) A\B <==> A 的逆左乘 B <==> inv(A)*B 通常,矩阵除法可以理解为 X=A\B <==> A*X=B X=B/A <==> X*A=B 行数相等时即可进行 时即可进行左除 当 A 和 B 行数相等时即可进行左除 当 A 和 B 列数相等时即可进行右除 列数相等时即可进行右除 时即可进行

MATLAB中的矩阵与向量运算

MATLAB中的矩阵与向量运算

4.1 数组运算和矩阵运算从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表4.1.1列出了两种运算指令形式的实质内涵的异同.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^nA为方阵时,矩阵A的n次方A+B数组对应元素的相加A+B矩阵相加A-B数组对应元素的相减A-B矩阵相减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.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.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为行满秩矩阵.参考网站:/s/blog_489f4bab01000aju.html。

2011第2讲MATLAB矩阵及其运算

2011第2讲MATLAB矩阵及其运算
finda456234数值运算中部分常用数学函数abs绝对值复数模angle复数的相角complex创建一个复数coscosh余弦双曲余弦cotcoth余切双曲余切fixgcd最大公因数lcm最小公倍数log22为底的对数mod有符号的求余log自然对数real复数的实部log10常用对数image复数的虚部sign取数的符号round取整为最近的整数ceil向无穷大舍入取整sqrt平方根exp指数exconj取共轭复数rem相除后求余floor向负无穷取整sinsinh正弦双曲正弦tantanh正切双曲正切secsech正割双曲正割asinasinh反正弦反双曲正弦acosacosh反余弦反双曲余弦atanatanh反正切反双曲正切5724det计算矩阵所对应的行列式的值diag抽取矩阵对角线元素eig求特征值和特征向量inv求矩阵的逆阵lu三角lu分解poly求特征多项式rank求矩阵的秩svd奇异值分解5824241对角阵与三角阵1
2.1.2 预定义变量
在MATLAB工作空间中,还驻留一些由系统本身定义 的变量。预定义变量有特定的含义,在使用时,应尽量避免 对这些变量重新赋值。
预定义变量 ans i、j pi inf eps 含义 计算结果的缺省变量 名 虚数单位 圆周率 无穷大 计算机的最小数 预定义变 量 NaN nargin nargout realmin realmax 含义 不定量,如0/0, ∞/∞ 函数的输入变量个数 函数的输出变量个数 最小正实数 最大正实数
MATLAB的基本算术运算符有:+(加)、-(减)、*(乘)、 /(右除)、\(左除)、^(乘方),等等。 注: 运算是在矩阵意义下进行的,单个数据的算术运算只 是一种特例。
例2-1 计算表达式的值,并显示计算结果。 在MATLAB命令窗口输入命令: x=1+2i; y=3-sqrt(17); z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y)) 其中pi和i都是MATLAB的预定义变量,分别代表 圆周率π和虚数单位。 输出结果是: z= -0.3488 + 0.3286i
  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。

相关文档
最新文档