第03讲 MATLAB-simulink的数值运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.5 MATLAB的数值运算
MATLAB具有强大的数值能力,它不仅 能对矩阵和向量进行相应的运算,而且也可 处理多项式的解、数据分析、函数的极值、 线性方程组的解、函数的微积分和函数绘图 等问题。
1
1.5.1 矩阵运算
MATLAB的基本数据单元是不需要指定 维数的复数矩阵,它提供了各种矩阵的运算 与操作,因它既可以对矩阵整体地进行处理, 也可以对矩阵的某个或某些元素进行单独地 处理,所以在MATLAB环境下矩阵的操作同 数的操作一样简单。
x^3-6*x^2-72*x-27
34
MATLAB中根据矩阵特征多项式求特征 根的函数为roots( ),其调用格式为 V=roots(P) 其中:P为特征多项式的系数向量,而V为特 征多项式的解,即原始矩阵的特征根。
35
例:
>>a=[1 2 3;4 5 6;7 8 0];p=poly(a)
p=
2
1. 矩阵的实现
在 MATLAB 语言中不必描述矩阵的维 数和类型,它们是由输入的格式和内容来确 定的,例如当 A=[1 2]时,把A当作一个2维行向量; A=5时,把A当作一个标量; A=1+2i时,把A当作一个复数。
3
(1) 矩阵的赋值
矩阵可以用以下几种方式进行赋值:
直接列出元素的形式; 通过语句和函数产生; 建立在文件中; 从外部的数据文件中装入。
利用语句或函数产生矩阵
利用 size( ) 函数可测取一个矩阵的维数,该 函数的调用格式为 [n, m]=size(A)
其中:A为要测试的矩阵名,而返回的两个参数n和 m分别为A矩阵的行数和列数。
9
利用语句或函数产生矩阵
当要测试的变量是一个向量时,当然仍可由 size( )函数来得出其大小,更简洁地,用户可以使 用length( )函数来求出,该函数的调用格式为
4
简单矩阵的输入
对于比较小的简单矩阵可以使用直接排列的形 式输入,把矩阵的元素直接排列到方括号中,每行 内的元素间用空格或逗号分开,行与行的内容用分 号隔开。例如,矩阵
在MATLAB下的输入方式为 >>A=[1, 2, 3; 4, 5, 6; 7, 8, 9] 或 >>A=[1 2 3; 4 5 6; 7 8 9]
-0.6667 -0.3333 1.0000
(2) 矩阵的迹
假设一个方阵为 A={aij}, i,j=1,2,…,n;则矩阵A 的迹定义为
tr (a ) aii
i 1
n
即矩阵的迹为该矩阵对角线上各个元素之和。由代 数理论可知矩阵的迹和该矩阵的特征值之和是相同 的。 在MATLAB中提供了求取矩阵迹的函数 trace( ),其调用方法为 trace(A) 28

特征多项式一定是n+1维的

特征多项式第一个元素一定是1
33
例: a=[1 2 3;4 5 6;7 8 0];
p=poly(a)
p=
1.00 -6.00 -72.00 -27.00
p是多项式p(x)=x3-6x2-72x-27的MATLAB描述方法, 我们可用函数文件,显示数学多项式的形式: p1=poly2sym(p) p1 =
(1) 单位矩阵函数eye( )
基本格式:
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( )
17
2. 矩阵的基本运算
矩阵运算是MATLAB的基础,MATLAB 的矩阵运算功能十分强大,并且运算的形式 和一般的数学表示十分相似。
18
(1) 矩阵的转置
(3) 矩阵的秩
对于n×m维的矩阵A,若矩阵所有的列向量中 共有 rc个线性无关,则称矩阵的列秩为rc,如果 rc=m, 则称A为列满秩矩阵;相应地,若矩阵A的 行向量中有rr个是线性无关的,则称矩阵A的行秩 为rr, 如果rr=n,则称A为行满秩矩阵。 MATLAB提供了一个内部函数rank( )来用数值 方法求取一个已知矩阵的秩,其调用格式为 k=rank(A)
n=length(x) 其中, x 为要测试的向量名,而返回的 n 为向量 x 的 元素个数。 如果对一个矩阵A用length(A)函数测试,则返 回该矩阵行、列的最大值,即该函数等效于 max(size(A))。 10
(2) 矩阵的元素
MATLAB的矩阵元素可用任何表达式来描述, 它既可以是实数,也可以是复数,例如
>>B=[ -1/3 结果显示: B= -0.3333 1.7321 1.3000 0+6.0000i
11
1.3; sqrt(3)
(1+2+3)*i]
矩阵的元素
MATLAB允许把矩阵作为元素来建立新的矩阵, 例如,利用A矩阵通过下面的语句 >>C=[A;[10,11,12]] 结果显示: C= 1 2 3 4 5 6 7 8 9 10 11 12
12
矩阵的元素
MATLAB还允许对一个矩阵的单个元素进行赋 值和操作,例如如果想将 A 矩阵的第 2 行第 3 列的元 素赋为100,则可通过下面的语句来完成 >>A(2,3)=100 结果显示: A= 1 2 3 4 5 100 7 8 9 这时将只改变此元素的值,而不影响其它元素的值。 13
矩阵的元素
5
简单矩阵的输入
对于比较大的矩阵,可以用回车键代替分号, 对每一行的内容分行输入,也可利用续行符号 (…),把一行的内容分两行来输入。例如, >>A=[ 1 2 3 ; 4 5 6 7 8 9] 或 >>A=[1 2 3 ;4 5… 6; 7 8 9] 输入后 A 矩阵将一直保存在工作空间中,除非 被替代和清除,在 MATLAB 的命令窗口中可随时查 看其内容。 6
24
(6) 矩阵的翻转
MATLeabharlann BaiduAB还提供了一些矩阵翻转处理的特殊命 令,对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。
20
(2) 矩阵的加和减
矩阵的加减法的运算符为“+”和“-”。 矩阵只有同阶方可进行加减运算,标量可以和矩 阵进行加减运算但应对矩阵的每个元素施加运算。 例如 >>A=[1 2 3;4 5 6]; B=A+1 B=
2 3 4
5 6 7
21
(3) 矩阵的乘法
矩阵的乘法运算符为“ * ”。当两个矩阵中前 一矩阵的列数和后一矩阵的行数相同时,可以进行 乘法运算,这与数学上的形式是一致的。例如: >>C=A*B;
如果给出的行数或列数大于原来矩阵的范围,则 MATLAB 将自动扩展原来的矩阵,并将扩展后未赋值的矩 阵元素置为 0 。例如如果想把矩阵 A 的第 4 行第 5 列元素的值 定义为8,就可以通过下面语句来完成。 >>A(4,5)=8
结果显示:
A= 1 2 7 8 0 0 3 9 0 0 0 0 0 0 8
1.00 -6.00 -72.00 -27.00
>>r=roots(p) r= 12.1229 -5.7345 -0.3884 显然, r是矩阵a的特征值
36
当然我们可用poly令其返回多项式形式 >>p2=poly(r)
p2 =
1.00 -6.00 -72.00 -27.00 MATLAB规定多项式系数向量用行向量 表示,一组根用列向量表示。
29
(4) 矩阵的三角分解
矩阵的三角分解又称为LU分解,它的目的是 将一个矩阵A分解成一个下三角矩阵L和一个上三角 矩阵U的乘积,亦即可以写成A=LU。
在MATLAB下也给出了矩阵的LU分解函数 lu( ),该函数的调用格式为
[L,U]=lu(A)
30
(5) 矩阵的特征值与特征向量
[V,D]=eig(A) 其中:A为要处理的矩阵,D为一个对角矩阵,其对 角线上的元素为矩阵A的特征值,而每个特征值对 应的V矩阵的列为该特征值的特征向量。该矩阵是 一个满秩矩阵,它满足AV=VD,且每个特征向量 各元素的平方和均为1。如果调用该函数时只返回 一个变量D,则D为A的特征值。
在MATLAB中还可进行矩阵和标量相乘,其结 果为标量与矩阵中的每个元素分别相乘。
22
(4) 矩阵的除法
矩阵的除法有两种运算符“\”和“/”,分 别表示左除和右除。 一般地讲,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)
31
(6) 矩阵的特征多项式、特征方程和特 征根
MATLAB提供了求取矩阵特征多项式系数的 函数poly( ),其调用格式为 P=poly(A)
其中:A为给定的矩阵,返回值P为一个行向量, 其各个分量为矩阵A的降幂排列的特征多项式系数。 即
P=[ a0 a1 … an]
32
MATLAB语言把多项式表达成一个行向量, 该向量中的元素是按多项式降幂排列的。 f(x)=a0xn+a1xn-1+…… +an-1x+an 可用行向量 p=[a0 a1 …… an-1 an]表示。 poly (A)—1、产生A矩阵特征多项式系数向量; 2、求根向量A对应的多项式。
23
(5) 矩阵的乘方
矩阵的乘方运算符为“^”。一个方阵的乘方 运算可以用A^P来表示 。P为正整数,则A的P次幂 即为A矩阵自乘P次。如果P为负整数,则可以将A自 乘P次,然后对结果进行求逆运算,就可得出该乘 方结果。如果P是一个分数,例如P=n\m,其中n 和m均为整数,则首先应该将A矩阵自乘n次,然后 对结果再开m次方。
26
3. 矩阵的特殊运算
(1) 矩阵行列式和矩阵求逆 求逆:inv(A) >>a=[1 2 3; 4 5 6; 2 3 5]; >>b=inv(a) 求行列式:det(A)
要求矩阵必须为方阵。
b= -2.3333 2.6667 >>det(a) ans = -3
27
0.3333
1.0000
0.3333 -2.0000
25
(7) 矩阵的超越函数
MATLAB中exp( ),sqrt( ),sin( ),cos( ) 等 基本函数命令可以直接使用在矩阵上,这种运算只 定义在矩阵的单个元素上,即分别对矩阵的每个元 素进行运算。 超越数学函数,可以在函数后加上m而成为矩阵 的超越函数,例如expm(A),sqrtm(A),logm(A)分 别为矩阵指数、矩阵开方和矩阵对数。矩阵的超越 函数要求运算的矩阵必须为方阵。
矩阵转置的运算符为“ ' ”。例如
>>A=[1 2 3;4 5 6];B= A’
结果显示: B= 1 4 2 5 3 6
19
矩阵的转置
如果是复数的矩阵,则转置(’)将同时对复数进行 共轭处理,而 (.’)则只是将其排列形式进行转置。 例: >>b=[1+2i 2-7i]' b= 1.0000 - 2.0000i 2.0000 + 7.0000i >>b=[1+2i 2-7i].' b= 1.0000 + 2.0000i 2.0000 - 7.0000i
14
4 5 100 0 0
矩阵的元素
MATLAB还允许对子矩阵进行定义和处理。例
如: >>A(1:3,1:2:5) %取 A矩阵的第1行到第3行内, 且位于第1,2,5列上的所有元素构成的子矩阵 >>A(2:3,:) %取A矩阵的第2行和第3行所有元素 构成的子矩阵
15
(3) 特殊矩阵的实现
在MATLAB中特殊矩阵可以利用函数来建立。
利用语句或函数产生矩阵
在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,例如 >>x=1:5 结果显示: x= 8 1 2 3 4 5
相关文档
最新文档