第2讲 matlab的数值分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二讲MATLAB的数值分析

2-1矩阵运算与数组运算

矩阵运算和数组运算是MATLAB数值运算的两大类型,矩阵运算是按矩阵的运算规则进行的,而数组运算则是按数组元素逐一进行的。因此,在进行某些运算(如乘、除)时,矩阵运算和数组运算有着较大的差别。在MATLAB中,可以对矩阵进行数组运算,这时是把矩阵视为数组,运算按数组的运算规则。也可以对数组进行矩阵运算,这时是把数组视为矩阵,运算按矩阵的运算规则进行。

1、矩阵加减与数组加减

矩阵加减与数组加减运算效果一致,运算符也相同,可分为两种情况:

(1)若参与运算的两矩阵(数组)的维数相同,则加减运算的结果是将两矩阵的对应元素进行加减,如

A=[1 1 1;2 2 2;3 3 3];

B=A;

A+B

ans=

2 2 2

4 4 4

6 6 6

(2)若参与运算的两矩阵之一为标量(1*1的矩阵),则加减运算的结果是将矩阵(数组)的每一元素与该标量逐一相加减,如

A=[1 1 1;2 2 2;3 3 3];

A+2

ans=

3 3 3

4 4 4

5 5 5

2、矩阵乘与数组乘

(1)矩阵乘

矩阵乘与数组乘有着较大差别,运算结果也完全不同。矩阵乘的运算符为“*”,运算是按矩阵的乘法规则进行,即参与乘运算的两矩阵的内维必须相同。设A、B为参与乘运算的

=A m×k B k×n。因此,参与运两矩阵,C为A和B的矩阵乘的结果,则它们必须满足关系C m

×n

算的两矩阵的顺序不能任意调换,因为A*B和B*A计算结果很可能是完全不一样的。如:A=[1 1 1;2 2 2;3 3 3];

B=A;

A*B

ans=

6 6 6

12 12 12

18 18 18

F=ones(1,3);

G=ones(3,1);

F*G

ans

3

G*F

ans=

1 1 1

1 1 1

1 1 1

(2)数组乘

数组乘的运算符为“.*”,运算符中的点号不能遗漏,也不能随意加空格符。参加数组乘运算的两数组的大小必须相等(即同维数组)。数组乘的结果是将两同维数组(矩阵)的对应元素逐一相乘,因此,A.*B和B.*A的计算结果是完全相同的,如:

A=[1 1 1 1 1;2 2 2 2 2;3 3 3 3 3];

B=A;

A.*B

ans=

1 1 1 1 1

4 4 4 4 4

9 9 9 9 9

B.*A

ans=

1 1 1 1 1

4 4 4 4 4

9 9 9 9 9

由于矩阵运算和数组运算的差异,能进行数组乘运算的两矩阵,不一定能进行矩阵乘运算。如

A=ones(1,3);

B=A;

A.*B

ans=

1 1 1

A*A

???Error using= =>

Inner matrix dimensions must agree.

3、矩阵除与数组除

矩阵除分为矩阵右除和矩阵左除两种情况。矩阵右除的运算符为“/”,设A、B为两矩阵,则“A/B”是指方程X*B=A的解矩阵X。显然,矩阵右除运算对参与运算两矩阵的维数是有一定要求的,即矩阵A和B的列数必须相等。如

A=[1 1 1 1;2 2 2 2;3 3 3 3];

B=[1 1 1 1];

X=A/B

X=

1

2

X*B

ans=

1 1 1 1

2 2 2 2

矩阵右除允许参与右除运算的矩阵B为标量,这时矩阵右除运算的结果是将矩阵A的每一元素逐一与该标量进行除法运算。如:

A=[2 4 6 8;8 6 4 2];

B=2;

A/B

ans=

1 2 3 4

4 3 2 1

矩阵左除运算符为“\”,设A、B为两矩阵,则“A\B”是指方程B*X=A的解矩阵X。显然,矩阵左除运算对参与运算两矩阵的维数也有一定要求的,即矩阵A和B的行数必须相等。如

数组右除的运算符为“./”,左除的运算符为“.\”。数组右除和左除的运算结果是完全等效的。设A、B为两同维矩阵,则“A./B”的运算结果是将矩阵A的每一个元素与矩阵B的对应元素相除。应注意的是,参与数组运算的两矩阵(数组)的大小必须相等。

A=[2 2 3 3 4 4;1 1 2 2 3 3;4 4 5 5 6 6];

B=[1 2 3 3 2 2;1 1 1 1 1 1;2 2 5 5 3 3];

A./B

ans=

2 2 1 1 2 2

1 1

2 2

3 3

2 2 1 1 2 2

B./A

ans=

0.5000 0.5000 1.0000 1.0000 0.5000 0.5000

1.0000 1.0000 0.5000 0.5000 0.3333 0.3333

0.5000 0.5000 1.0000 1.0000 0.5000 0.5000

4、常用的矩阵运算函数

(1)用size()函数计算矩阵A 的维数,调用格式:

d=size(A) %将矩阵A 的行数和列数赋给变量d

[m,n]=size(A) %将矩阵A 的行数赋给变量m 、列数赋给变量n

(2)用rand()函数产生随机矩阵,,调用格式:

rand(n) %产生值在0~1之间随机分布的n*n 的随机方阵

rand(m,n) %%生值在0~1之间随机分布的n*m 的随机矩阵

(3)计算矩阵长度(列数)的函数length(),调用格式:

a=length(B) %将矩阵B 的列数赋值给变量a

(4)矩阵元素的求积运算函数prod(),调用格式:

prod(A) %若A 为向量,将计算矩阵A 所有元素之积;若A 为矩阵,将产生一行向

量,其元素分别为矩阵A 的各列元素之积。

prod(A,k) %将对矩阵A 按k 定义的方向进行示积运算,若k=1则按列的方向求积,

若k=2则按行的方向求积。

(5)矩阵元素的求和运算函数sum(),调用格式同prod()函数。

2-2多项式及其运算

MATLAB 提供了标准多项式的常用函数,包括求根、相乘、相除等。

1.多项式的表达与创建

MATLAB 采用将多项式系数按幂次序排列形式的行向量来表征一多项式。设多项式为:

0111a s a s a s a s A n n n n ++++=-- )(

则表征该多项式的行向量表示为:][011a a a a P n n

-=。 因此,在MATLAB 中,创建多项式即可创用建行向量的方法,直接输入按顺序排序的多

项式系数即可。如,输入语句:

A=[1 2 2 1];

即表示创建多项式12223+++s s s ,并赋值给变量A 。

2.多项式求根

函数roots()用于对多项式求根,调用格式:

p=roots(A)

其中A 为表征多项式的行向量,p 返回该多项式的根(用列向量表示)。如

B=[1 3 2]; %创建多项式232++s s

相关文档
最新文档