第
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

第 3 章 矩阵、数组和符号运算 PowerPoint PPT Presentation


  • 79 Views
  • Uploaded on
  • Presentation posted in: General

第 3 章 矩阵、数组和符号运算. 一、矩阵和数组运算  要求内容: ( 1 )熟练掌握 矩阵的创建 。 ( 2 )掌握 矩阵运算 和 数组运算 。 ( 3 )学会如何使用 矩阵运算函数 和 数组运算函数 。 ( 4 )注意区分矩阵和数组的差别,特别是运算符的差别。 ( 6 )了解 多项式 的创建方法和基本运算。. 第 3 章 矩阵、数组和符号运算. MATLAB 以 矩阵 为基本的运算单元, 向量和标量 作为特殊的矩阵处理: 向量 看作只有一行或一列的矩阵; 标量 看作只有一个元素的矩阵。 1 、 矩阵的构造 a. 直接输入

Download Presentation

第 3 章 矩阵、数组和符号运算

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3

第3章 矩阵、数组和符号运算

一、矩阵和数组运算 

要求内容:

( 1)熟练掌握矩阵的创建。

( 2)掌握矩阵运算和数组运算。

( 3)学会如何使用矩阵运算函数和数组运算函数。

( 4)注意区分矩阵和数组的差别,特别是运算符的差别。

( 6)了解多项式的创建方法和基本运算。


3

第3章 矩阵、数组和符号运算

MATLAB 以矩阵为基本的运算单元,向量和标量作为特殊的矩阵处理:向量看作只有一行或一列的矩阵;标量看作只有一个元素的矩阵。

1、 矩阵的构造

a.直接输入

b.利用内部函数产生矩阵

c.利用M文件产生矩阵

d.从外部数据文件调入矩阵


3

第3章 矩阵、数组和符号运算

a.直接输入

直接输入需遵循以下基本规则:

整个矩阵应以“ [ ]”为首尾,即整个输入矩阵必须包含在方括号中;

矩阵中,行与行之间必须用分号“ ;”或 Enter键( 按 Enter 键)符分隔;

每行中的元素用逗号“ ,”或空格分隔;

矩阵中的元素可以是数字或表达式,但表达式中不可包含未知的变量,MATLAB用表达式的值为该位置的矩阵元素赋值。当矩阵中没有任何元素时,该矩阵被称作“ 空阵”( Empty Matrix)。


3

第3章 矩阵、数组和符号运算

  • >> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]

  •  A =

  •   1 2 3 4

  • 5 6 7 8

  • 9 10 11 12

  • 13 14 15 16

  • 利用表达式输入

  • >> B=[1,sqrt(25),9,13

  • 2,6,10,7*2

  • 3+sin(pi),7,11,15

  • 4,abs(-8),12,16]

  • B =

  • 1 5 9 13

  • 2 6 10 14

  • 3 7 11 15

  • 4 8 12 16


3

第3章 矩阵、数组和符号运算

  • 由向量构成矩阵

  • 向量是组成矩阵的基本元素之一。向量元素需要用方括号括起来。元素之间用空格和逗号分隔生成行向量,用分号隔开生成列向量。可以把行向量看成1n 阶矩阵,把列向量看成n1阶矩阵。

  • 向量的构造方法:

  • 直接输入向量

  • 利用冒号生成向量

  • 利用 linspace/logspace 生成向量

  • >> a=[1,2,3,4];

  • >> x=0:0.5:2;

  • % x=logspace(a,b,n) 生成有 n 个元素的行向量 x,其元素起点 x(1)=10a,终点 x(n)=10b。

  • >> b=logspace(0,2,4)

  • b =

  • 1.0000 4.6416 21.5443 100.0000


3

第3章 矩阵、数组和符号运算

>> x

x =

0 0.5000 1.0000 1.5000 2.0000

% x=linspace(a,b,n) 生成有 n 个元素的行向量 x,其元素值在 a、b 之间线性分布。

>> y=linspace(0,2,7)

y =

  0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000

>> z=[-1 x 3]

z =

-1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000

>> u=[y;z]

u =

0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000

-1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000


3

第3章 矩阵、数组和符号运算

b.利用内部函数产生矩阵

%compan生成x向量的伴随矩阵

>> x=[2,4,6,8,10]

x =

  2 4 6 8 10

>> compan(x)

ans =

-2 -3 -4 -5 -6

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

% eye 生成单位阵

>> S=eye(6)

S =

  1 0 0 0 0 0

0 1 0 0 0 0

0 0 1 0 0 0

0 0 0 1 0 0

0 0 0 0 1 0

0 0 0 0 0 1

% ones 生成全部元素为 1 的矩阵

>> ones(3,4) ans =

1 1 1 1

1 1 1 1

1 1 1 1

>> F=5*ones(3)

F =

5 5 5

5 5 5

5 5 5

% zeros 生成全部元素为0的矩阵

>> Z=zeros(2,4)

Z =

0 0 0 0

0 0 0 0

% rand 生成均匀分布的随机矩阵

>> R=rand(4)  

R =

  0.9501 0.8913 0.8214 0.9218

0.2311 0.7621 0.4447 0.7382

0.6068 0.4565 0.6154 0.1763

0.4860 0.0185 0.7919 0.4057

%生成空阵

>> K=[]

 K =

  []


3

第3章 矩阵、数组和符号运算

c.利用M文件产生矩阵

A=[1,2,3,4,5

6,7,8,9,10

11,12,13,14,15

16,17,18,19,20

21,22,23,24,25]


3

第3章 矩阵、数组和符号运算

d.从外部数据文件调入矩阵

用load命令输入

用Import 菜单输入


3

第3章 矩阵、数组和符号运算

2、矩阵元素的修改

>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]

 A =

  1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

>> A(1,1)

ans =

1

>> A(2,3)

ans =

7

>> A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);

>> A

A =

0 2 3 4

5 7 7 8

9 10 11 12

13 14 15 1


3

第3章 矩阵、数组和符号运算

  • 3、矩阵的运算

  • 矩阵运算按照线性代数中基本的运算法则进行;

  • 加减运算必须在具有相同行列的矩阵之间进行;

  • 只有当矩阵 A 的列数和矩阵 B 的行数相同时,才可进行矩阵 A 和 B 的乘法运算;

  • 乘方运算只有在矩阵为方阵时才有意义;

  • 当一个矩阵和一个标量( 1×1 的矩阵)进行运算时,其结果将是此标量和矩阵中的每一个元素“ 相加”、“ 相减”、“ 相乘”、“ 相除”;

  • 在 MATLAB 中,矩阵左除和右除的含义不同。矩阵右除定义为:B\A=(A′/B′)。


3

第3章 矩阵、数组和符号运算

a.矩阵的加减运算

>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]

>> B=[1,sqrt(25),9,13

2,6,10 7*2

3+sin(pi),7,11,15

4,abs(-8),12,16]

>> C=A+B

 C =

  2 7 12 17

7 12 17 22

12 17 22 27

17 22 27 32

>> D=A-B

D =

0 -3 -6 -9

3 0 -3 -6

6 3 0 -3

9 6 3 0

>> E=A+3

 E =

  4 5 6 7

8 9 10 11

12 13 14 15

16 17 18 19


3

第3章 数组 、矩阵的操作与运算

b.矩阵乘法

>> C=A*B

C =

30 70 110 150

70 174 278 382

110 278 446 614

150 382 614 846

>> D=A*3

D =

3 6 9 12

15 18 21 24

27 30 33 36

39 42 45 48

c.矩阵除法

左除 A\B=inv(A)*B

>> A=[8,1,6;3,5,7;4,9,2]

A =

  8 1 6

3 5 7

4 9 2

>> B=[1,1,1;1,2,3;1,3,6]

 B =

  1 1 1

1 2 3

1 3 6

>> A\B

ans =

0.0667 0.0500 0.0972

0.0667 0.3000 0.6389

0.0667 0.0500 -0.0694

>> C=inv(A)

C =

  0.1472 -0.1444 0.0639

-0.0611 0.0222 0.1056

-0.0194 0.1889 -0.1028

>> C*B

 ans =

  0.0667 0.0500 0.0972

0.0667 0.3000 0.6389

0.0667 0.0500 -0.0694

右除 A/B =A*inv(B)

>> A/B

ans =

27 -31 12

1 2 0

-13 29 -12

>> D=inv(B)

 D =

  3 -3 1

-3 5 -2

1 -2 1

>> A*D

ans =

27 -31 12

1 2 0

-13 29 -12


3

第3章 矩阵、数组和符号运算

当对矩阵作除法运算时,有可能因为误差设置的差别导致不精确的结果,此时,MATLAB 会自动给出警告信息:

MATLAB 采用 IEEE( 国际认可的)算法,即使 A 为奇异阵( 即 A 的行列式值是0),运算也照样进行,但是此时 MATLAB 将给出警告信息:“ Warning: Matrix is singular to working precision.”,求出的矩阵所有元素为无穷大( Inf);

当矩阵 A 为病态阵( Badly Scaled)时,MATLAB 使用的算法产生的误差可能很大,MATLAB 系统也将给出警告信息:“ Warning: Matrix is badly scaled to working precision. Results may be inaccurate.”。

>> E=[1,2,3;4,5,6;7,8,9]

E =

1 2 3

4 5 6

7 8 9

>> F=[1,4,7;2,5,8;3,6,9]

F =

1 4 7

2 5 8

3 6 9

>> E\F

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 1.541976e-018.

ans =

-0.3333 -7.3333 -14.3333

0.6667 11.6667 22.6667

0 -4.0000 -8.0000


3

第3章 矩阵、数组和符号运算

4、矩阵的函数

a.矩阵的基本变换函数

>> A=[3,3,5;2,4,6;7,8,9] %创建方阵 A

A =

  3 3 5

2 4 6

7 8 9

>> inv(A) %矩阵的逆(A必须为非奇异方阵)

ans =

0.5000 -0.5417 0.0833

-1.0000 0.3333 0.3333

0.5000 0.1250 -0.2500

>> A‘ %矩阵的转置

ans =

3 2 7

3 4 8

5 6 9


3

第3章 矩阵、数组和符号运算

b.常用的矩阵运算函数

只有方阵才可计算行列式值,即 det(A)的计算只有在 A 为方阵时才有意义。

logm(A)和 sqrtm(A)计算矩阵的对数/平方根是指对整个矩阵 A求对数/平方根。


3

第3章 矩阵、数组和符号运算

>> det(A) %求方阵 A 的行列式值

ans =

-24

>> eig(A) %求特征值

ans =

16.7503

0.8793

-1.6295

>> logm(A) %求矩阵 A 的对数

ans =

0.5432 + 0.8066i 0.7475 + 0.5526i 0.6902 - 0.6914i

0.8584 + 1.4131i 0.7845 + 0.9681i 0.6967 - 1.2112i

0.7502 - 1.5947i 1.1089 - 1.0926i 1.8504 + 1.3668i

>> sqrtm(A) %求矩阵 A 的平方根

ans =

1.2466 + 0.3278i 0.5192 + 0.2246i 1.0906 - 0.2809i

0.2001 + 0.5742i 1.4228 + 0.3934i 1.3620 - 0.4921i

1.6144 - 0.6480i 1.7430 - 0.4439i 2.3610 + 0.5554i


3

第3章 矩阵、数组和符号运算

c.矩阵的分解函数


3

第3章 矩阵、数组和符号运算

>> X=[3,-1,2;1,2,-1;-2,1,4] %输入矩阵 X

 X =

  3 -1 2

1 2 -1

-2 1 4

>> [L,U]=lu(X) %对矩阵 X 进行 LU 分解

L =

  1.0000 0 0

0.3333 1.0000 0

-0.6667 0.1429 1.0000

U =

  3.0000 -1.0000 2.0000

0 2.3333 -1.6667

0 0 5.5714

 >> [Q,R]=qr(X) %对矩阵 X 进行 QR 分解

Q =

  -0.8018 0.1543 0.5774

-0.2673 -0.9567 -0.1155

0.5345 -0.2469 0.8083

 R =

  -3.7417 0.8018 0.8018

0 -2.3146 0.2777

0 0 4.5033


3

第3章 矩阵、数组和符号运算

  • 5、数组运算

  • Matlab是以矩阵为基本运算单元的,数组作为独立的计算单元实体是不存在的。数组运算是Matlab的一种运算形式,它从矩阵的单个元素出发,针对每个元素进行的运算。

  • MATLAB对数组运算在符号上做了不同的约定,运算符形式为:.* , ./ , .\ , .^

  • 矩阵运算和数组运算有着显著的不同。属于两种不同的运算:矩阵运算是从矩阵的整体出发,按照线性代数的运算规则进行,有着明确而严格的数学规则;而数组运算是从矩阵的单个元素出发,针对每个元素进行的运算。

  • 对于加法和减法而言,矩阵运算和数组运算相同;对于乘法和除法而言,矩阵和数组的运算有着显著的不同。


3

第3章 矩阵、数组和符号运算

  • 矩阵的数组乘/除及乘方

  • 数组除的运算规则:

  • 当参与除运算的两个矩阵同维时,运算为矩阵的相应元素相除,计算结果是与参与运算的矩阵同维的矩阵;

  • 当参与运算的矩阵有一个是标量时,运算是标量和矩阵的每一个元素相除,计算结果是与参与运算的矩阵同维的矩阵;

  • 右除与左除的关系为 A./B=B.\A,其中 A 是被除数,B 是除数。


3

第3章 矩阵、数组和符号运算

> > E=[1,2,3;4,5,6;7,8,9]

E =

1 2 3

4 5 6

7 8 9

>> F=[1,4,7;2,5,8;3,6,9]

F =

1 4 7

2 5 8

3 6 9

>> E.\F

ans =

  1.0000 2.0000 2.3333

0.5000 1.0000 1.3333

0.4286 0.7500 1.0000

>> 4.\F

 ans =

  0.2500 1.0000 1.7500

0.5000 1.2500 2.0000

0.7500 1.5000 2.2500

>> F./E

 ans =

  1.0000 2.0000 2.3333

0.5000 1.0000 1.3333

0.4286 0.7500 1.0000

>> E*F

ans =

14 32 50

32 77 122

50 122 194

>> E.*F

ans =

1 8 21

8 25 48

21 48 81


3

第3章 矩阵、数组和符号运算

数组乘方的运算规则:

①矩阵的标量乘方A.^p( 即 A 为矩阵,p 为标量),运算为矩阵每个元素的 p 次方,计算结果是与矩阵A 同维的矩阵;

②标量的矩阵乘方p.^A,表示以 p 为底,分别以 A 的元素为指数求幂值,计算结果是与矩阵A 同维的矩阵。


3

第3章 矩阵、数组和符号运算

b.向量的数组运算:

加/减法:

>> x=[1,2,3]

>> y=[4,5,6]

>> c=x-y

>> a=1+x

乘/除法:

>> b=2*x

>> b=2.*x

>> z3=x.\9

>> z4=x./9

>> z=x.*y

>> z1=x./y

>> z2=x.\y

乘方:

>> z7=2.^x

>> z5=x.^3

>> z6=x.^y

点积、叉积:

>> c1=dot(a,b)

>> c1= sum(a.*b)

>> c2=cross(a,b)


3

第3章 矩阵、数组和符号运算

6、数组函数

常用的数学函数


3

第3章 矩阵、数组和符号运算

常用三角函数和超越函数


3

第3章 矩阵、数组和符号运算

>> A=[3,3,5;2,4,6;7,8,9]

 A =

  3 3 5

2 4 6

7 8 9

>> log(A)

ans =

  1.0986 1.0986 1.6094

0.6931 1.3863 1.7918

1.9459 2.0794 2.1972

>> sqrt(A)

ans =

1.7321 1.7321 2.2361

1.4142 2.0000 2.4495

2.6458 2.8284 3.0000

>> cos(A)

ans =

-0.9900 -0.9900 0.2837

-0.4161 -0.6536 0.9602

0.7539 -0.1455 -0.9111

>> pow2(A)

ans =

8 8 32

4 16 64

128 256 512

>> 2.^A

ans =

8 8 32

4 16 64

128 256 512


3

第3章 矩阵、数组和符号运算

7、多项式及其运算

a.多项式的输入

向量A=[a0,a1,…,an-1,an],

则命令poly(A)会生成(x-a0)(x-a1)…(x-an-1)(x-an) 的多项式

>> a

a =

 1 2 3 4

>> PA=poly(a)

PA =

1 -10 35 -50 24

>> poly2sym(PA,'x')

ans =

x^4-10*x^3+35*x^2-50*x+24

>> p_a=poly2sym(a)

p_a =

x^3+2*x^2+3*x+4


3

第3章 矩阵、数组和符号运算

b.多项式的运算

>> a

a =

1 2 3 4

>> b=[0,1]

b =

0 1

加法:

>> c=a+[0 0 b]

c =

  1 2 3 5

乘法:

>> d=conv(a,b)

d =

0 1 2 3 4

除法:

>> [div,rest]=deconv(d,a)

div =

0 1

rest =

0 0 0 0 0

微分:

>> polyder(a)

ans =

3 4 3

求根:

>> roots(a)

ans =

  -1.6506

-0.1747 + 1.5469i

-0.1747 - 1.5469i


3

第3章 矩阵、数组和符号运算

求值:

>> a=[1,2,3,4]

a =

1 2 3 4

>> b=[1,1;1,1]

b =

1 1

1 1

>> polyvalm(a,4) % x=4时多项式的值

ans =

  112 %与polyval(a,4)结果相同

>> polyval(a,b) %数组运算

ans =

10 10

10 10

>> polyvalm(a,b) %矩阵运算

ans =

15 11

11 15

多项式拟合:

>> x=0:pi/20:pi/2;

>> y=sin(x);

>> [p,s]=polyfit(x,y,5);

>> x1=0:pi/30:pi*2;

>> y1=sin(x1);

>>y2=p(1)*x1.^5+p(2)*x1.^4+p(3)*x1.^3+p(4)*x1.^2+p(5)*x1+p(6);

>> plot(x1,y1,'b-',x1,y2,'r*')

>> legend('Original curve','Fitted curve')

>> axis([0,7,-1.2,4])


3

上机习题(4)

( 1)在 MATLAB 6.0 的工作空间中用直接输入法建立如下两个矩阵,然后在矩阵编辑器中将矩阵A改为3行3列的矩阵,并将其保存。

 ( 2)分别对(1)产生的两个矩阵 作加、减、乘和除(左除,右除)运算,同时运用数组运算法则进行运算,比较二者的计算结果有何异同。

( 3)利用矩阵生成函数建立一个对角线元素全部为 1 的 4 阶单位矩阵。

( 4)利用矩阵生成函数建立一个 4×4 的随机矩阵。


3

上机练习(4)

( 5)对题(4)所产生的矩阵求特征值和特征向量,并用 lu和 qr命令对该矩阵进行分解。

( 6)对题( 1)中的矩阵 B 求秩、行列式的值、条件数、平方根及对数。

( 7)将如下矩阵 A 进行转置和求逆。

( 8)在 MATLAB 环境下,用下面三条指令创建矩阵 C,看输出怎样的结果。

a=2.7358; b=33/79; C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]


  • Login