MATLAB-simulink的数值运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
2. 矩阵的基本运算
矩阵运算是MATLAB的基础,MATLAB 的矩阵运算功能十分强大,并且运算的形式 和一般的数学表示十分相似。
18
(1) 矩阵的转置
矩阵转置的运算符为“ ' ”。例如 >>A=[1 2 3;4 5 6];B= A’ 结果显示: B=
14 25 36
19
矩阵的转置
如果是复数的矩阵,则转置(’)将同时对复数进行 共轭处理,而 (.’)则只是将其排列形式进行转置。 例: >>b=[1+2i 2-7i]' b=
>>det(a)
ans =
-3
27
(2) 矩阵的迹
假设一个方阵为 A={aij}, i,j=1,2,…,n;则矩阵A 的迹定义为
n
tr(a) aii i 1
即矩阵的迹为该矩阵对角线上各个元素之和。由代 数理论可知矩阵的迹和该矩阵的特征值之和是相同 的。
在MATLAB中提供了求取矩阵迹的函数 trace( ),其调用方法为
>>x=1:5 结果显示:
x=
12345
8
利用语句或函数产生矩阵
利用size( )函数可测取一个矩阵的维数,该 函数的调用格式为
[n, m]=size(A) 其中:A为要测试的矩阵名,而返回的两个参数n和 m分别为A矩阵的行数和列数。
9
利用语句或函数产生矩阵
当要测试的变量是一个向量时,当然仍可由 size( )函数来得出其大小,更简洁地,用户可以使 用length( )函数来求出,该函数的调用格式为
A=eye(n) %产生一个n阶的单位矩阵A A=eye(size(B)) %产生与B矩阵同阶的单位 矩阵A 如:A=eye(5)
16
特殊矩阵的实现
(2) 零矩阵函数zeros( ) (3) 1矩阵函数ones( ) (4) 随机元素矩阵函数rand( ) (5) 对角矩阵函数diag( ) (6) 伴随矩阵函数compan( ) (7) 上三角矩阵函数triu( )和下三角矩阵函数 tril( )
[V,D]=eig(A) 其中:A为要处理的矩阵,D为一个对角矩阵,其对 角线上的元素为矩阵A的特征值,而每个特征值对 应的V矩阵的列为该特征值的特征向量。该矩阵是 一个满秩矩阵,它满足AV=VD,且每个特征向量 各元素的平方和均为1。如果调用该函数时只返回 一个变量D,则D为A的特征值。
31
(6) 矩阵的特征多项式、特征方程和特 征根
>>B=[ -1/3 1.3; sqrt(3) (1+2+3)*i]
结果显示:
B=
-0.3333 1.3000
1.Biblioteka Baidu321
0+6.0000i
11
矩阵的元素
MATLAB允许把矩阵作为元素来建立新的矩阵, 例如,利用A矩阵通过下面的语句
>>C=[A;[10,11,12]] 结果显示:
C= 123 456 789
6
利用语句或函数产生矩阵
在MATLAB中,矩阵也可利用下面的语 句来产生:
s1:s2:s3 其中,s1为起始值;s3为终止值;s2为步矩。 使用这样的命令就可以产生一个由s1开始, 以步距s2自增,并终止于s3的行向量。
7
利用语句或函数产生矩阵
例如:
>>y=0:pi/4:pi 结果显示:
y=
0 0.7854 1.5708 2.3562 3.1416 如果S2省略,则可以认为自增步距为1,例如
24
(6) 矩阵的翻转
MATLAB还提供了一些矩阵翻转处理的特殊命 令,对n×m维矩阵A,如
B=fliplr(A) %将矩阵A进行左右翻转再赋给 B,即bij=ai,m+1-j,
C=flipud(A) %将矩阵A进行上下翻转再赋给 C,即cij=an+1-i,j,
D=rot90(A) %将矩阵A逆时针进行旋转90度后 赋给D,即dij=aj,m+1-i。
一般地讲,x= A\B是A*x=B的解, x=B/A是x*A=B的解,通常A\B≠B/A, 而A\B=inv(A)*B, B/A= B*inv(A)
23
(5) 矩阵的乘方
矩阵的乘方运算符为“^”。一个方阵的乘方 运算可以用A^P来表示 。P为正整数,则A的P次幂 即为A矩阵自乘P次。如果P为负整数,则可以将A自 乘P次,然后对结果进行求逆运算,就可得出该乘 方结果。如果P是一个分数,例如P=n\m,其中n 和m均为整数,则首先应该将A矩阵自乘n次,然后 对结果再开m次方。
1.0000 - 2.0000i 2.0000 + 7.0000i >>b=[1+2i 2-7i].' b= 1.0000 + 2.0000i 2.0000 - 7.0000i
20
(2) 矩阵的加和减
矩阵的加减法的运算符为“+”和“-”。 矩阵只有同阶方可进行加减运算,标量可以和矩 阵进行加减运算但应对矩阵的每个元素施加运算。 例如 >>A=[1 2 3;4 5 6]; B=A+1 B=
k=rank(A)
29
(4) 矩阵的三角分解
矩阵的三角分解又称为LU分解,它的目的是 将一个矩阵A分解成一个下三角矩阵L和一个上三角 矩阵U的乘积,亦即可以写成A=LU。
在MATLAB下也给出了矩阵的LU分解函数 lu( ),该函数的调用格式为
[L,U]=lu(A)
30
(5) 矩阵的特征值与特征向量
trace(A) 28
(3) 矩阵的秩
对于n×m维的矩阵A,若矩阵所有的列向量中 共有 rc个线性无关,则称矩阵的列秩为rc,如果 rc=m, 则称A为列满秩矩阵;相应地,若矩阵A的 行向量中有rr个是线性无关的,则称矩阵A的行秩 为rr, 如果rr=n,则称A为行满秩矩阵。
MATLAB提供了一个内部函数rank( )来用数值 方法求取一个已知矩阵的秩,其调用格式为
MATLAB提供了求取矩阵特征多项式系数的 函数poly( ),其调用格式为
P=poly(A) 其中:A为给定的矩阵,返回值P为一个行向量, 其各个分量为矩阵A的降幂排列的特征多项式系数。 即
P=[ a0 a1 … an]
32
MATLAB语言把多项式表达成一个行向量, 该向量中的元素是按多项式降幂排列的。
n=length(x) 其中,x为要测试的向量名,而返回的n为向量x的 元素个数。
如果对一个矩阵A用length(A)函数测试,则返 回该矩阵行、列的最大值,即该函数等效于 max(size(A))。
10
(2) 矩阵的元素
MATLAB的矩阵元素可用任何表达式来描述, 它既可以是实数,也可以是复数,例如
5
简单矩阵的输入
对于比较大的矩阵,可以用回车键代替分号, 对每一行的内容分行输入,也可利用续行符号 (…),把一行的内容分两行来输入。例如,
>>A=[ 1 2 3 ; 4 5 6 7 8 9]
或 >>A=[1 2 3 ;4 5… 6; 7 8 9]
输入后A矩阵将一直保存在工作空间中,除非 被替代和清除,在MATLAB的命令窗口中可随时查 看其内容。
1.00 -6.00 -72.00 -27.00 p是多项式p(x)=x3-6x2-72x-27的MATLAB描述方法, 我们可用函数文件,显示数学多项式的形式: p1=poly2sym(p) p1 = x^3-6*x^2-72*x-27
34
MATLAB中根据矩阵特征多项式求特征 根的函数为roots( ),其调用格式为
10 11 12
12
矩阵的元素
MATLAB还允许对一个矩阵的单个元素进行赋 值和操作,例如如果想将A矩阵的第2行第3列的元 素赋为100,则可通过下面的语句来完成
>>A(2,3)=100 结果显示: A=
12 3 4 5 100 78 9 这时将只改变此元素的值,而不影响其它元素的值。
13
矩阵的元素
如果给出的行数或列数大于原来矩阵的范围,则 MATLAB将自动扩展原来的矩阵,并将扩展后未赋值的矩阵 元素置为0。例如如果想把矩阵A的第4行第5列元素的值定 义为8,就可以通过下面语句来完成。 >>A(4,5)=8 结果显示:
A= 12 3 00 4 5 100 0 0 78 9 00 00 0 08
25
(7) 矩阵的超越函数
MATLAB中exp( ),sqrt( ),sin( ),cos( )等 基本函数命令可以直接使用在矩阵上,这种运算只 定义在矩阵的单个元素上,即分别对矩阵的每个元 素进行运算。
超越数学函数,可以在函数后加上m而成为矩阵 的超越函数,例如expm(A),sqrtm(A),logm(A)分 别为矩阵指数、矩阵开方和矩阵对数。矩阵的超越 函数要求运算的矩阵必须为方阵。
1.5 MATLAB的数值运算
MATLAB具有强大的数值能力,它不仅 能对矩阵和向量进行相应的运算,而且也可 处理多项式的解、数据分析、函数的极值、 线性方程组的解、函数的微积分和函数绘图 等问题。
1
1.5.1 矩阵运算
MATLAB的基本数据单元是不需要指定 维数的复数矩阵,它提供了各种矩阵的运算 与操作,因它既可以对矩阵整体地进行处理, 也可以对矩阵的某个或某些元素进行单独地 处理,所以在MATLAB环境下矩阵的操作同 数的操作一样简单。
234 567
21
(3) 矩阵的乘法
矩阵的乘法运算符为“*”。当两个矩阵中前 一矩阵的列数和后一矩阵的行数相同时,可以进行 乘法运算,这与数学上的形式是一致的。例如: >>C=A*B;
在MATLAB中还可进行矩阵和标量相乘,其结 果为标量与矩阵中的每个元素分别相乘。
22
(4) 矩阵的除法
矩阵的除法有两种运算符“\”和“/”,分 别表示左除和右除。
36
当然我们可用poly令其返回多项式形式 >>p2=poly(r) p2 =
1.00 -6.00 -72.00 -27.00 MATLAB规定多项式系数向量用行向量
表示,一组根用列向量表示。
37
1.5.2 向量运算
虽然在MATLAB中向量和矩阵在形式上 有很多的一致性,但它们实际上遵循着不同 的运算规则。MATLAB向量运算符由矩阵运 算符前面加一点“.”来表示,如“.*”、 “./”和“.^”等。
f(x)=a0xn+a1xn-1+…… +an-1x+an 可用行向量 p=[a0 a1 …… an-1 an]表示。 poly (A)—1、产生A矩阵特征多项式系数向量;
2、求根向量A对应的多项式。
❖ 特征多项式一定是n+1维的 ❖ 特征多项式第一个元素一定是1
33
例: a=[1 2 3;4 5 6;7 8 0]; p=poly(a) p=
14
矩阵的元素
MATLAB还允许对子矩阵进行定义和处理。例 如:
>>A(1:3,1:2:5) %取A矩阵的第1行到第3行内, 且位于第1,2,5列上的所有元素构成的子矩阵
>>A(2:3,:) %取A矩阵的第2行和第3行所有元素 构成的子矩阵
15
(3) 特殊矩阵的实现
在MATLAB中特殊矩阵可以利用函数来建立。 (1) 单位矩阵函数eye( ) 基本格式:
V=roots(P) 其中:P为特征多项式的系数向量,而V为特 征多项式的解,即原始矩阵的特征根。
35
例:
>>a=[1 2 3;4 5 6;7 8 0];p=poly(a)
p=
1.00 -6.00 -72.00 -27.00
>>r=roots(p) r=
12.1229 -5.7345 -0.3884 显然, r是矩阵a的特征值
26
3. 矩阵的特殊运算
(1) 矩阵行列式和矩阵求逆
求逆:inv(A) 求行列式:det(A)
要求矩阵必须为方阵。
>>a=[1 2 3; 4 5 6; 2 3 5]; >>b=inv(a) b=
-2.3333 0.3333 1.0000
2.6667 0.3333 -2.0000
-0.6667 -0.3333 1.0000
2
1. 矩阵的实现
在MATLAB语言中不必描述矩阵的维数 和类型,它们是由输入的格式和内容来确定 的,例如当
A=[1 2]时,把A当作一个2维行向量; A=5时,把A当作一个标量; A=1+2i时,把A当作一个复数。
3
(1) 矩阵的赋值
矩阵可以用以下几种方式进行赋值: ❖ 直接列出元素的形式; ❖ 通过语句和函数产生; ❖ 建立在文件中; ❖ 从外部的数据文件中装入。
4
简单矩阵的输入
对于比较小的简单矩阵可以使用直接排列的形 式输入,把矩阵的元素直接排列到方括号中,每行 内的元素间用空格或逗号分开,行与行的内容用分 号隔开。例如,矩阵
在MATLAB下的输入方式为 >>A=[1, 2, 3; 4, 5, 6; 7, 8, 9]
或 >>A=[1 2 3; 4 5 6; 7 8 9]
相关文档
最新文档