Matlab中的基本运算、点运算、关系运算、逻辑运算;Matlab求解水仙花数

Matlab中的基本运算、点运算、关系运算、逻辑运算;Matlab求解水仙花数

算术运算

1. 基本算术运算: +(加)、- (减)、* (乘)、/ (右除)、\ (左除)、^ (乘方) Matlab的算术运算都是在矩阵意义下进行的,单个数据的算术运算看作是矩阵运算的特例。

加减运算:

若两矩阵同型,则运算时两矩阵的相应元素相加减。 若两矩阵不同型,则Matlab将给出错误信息。 一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。

乘法运算:

矩阵A和B进行乘法运算,要求A的列数与B的行数相等,此时则称A、 B矩阵是可乘的,或称A和B两矩阵维数和大小相容。 如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。

除法运算: 在Matlab中,有两种矩阵除法运算:右除 / 和左除 \ 如果A矩阵是非奇异矩阵,则B/A等效于B*inv(A),A\B等效于 inv(A)*B。

首先,看这个矩阵是不是方阵(即行数和列数相等的矩阵,若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵)。然后,再看此矩阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵。 由|A|≠0可知矩阵A可逆,这样可以得出另外一个重要结论:可逆矩阵就是非奇异矩阵,非奇异矩阵也是可逆矩阵。

乘方运算:

一个矩阵A的乘方运算可以表示成A^x,要求A为方阵,x为标量。 同离散里学的,x个A矩阵相乘。

>> A=[1:3;4:6;7,8,0];

>> A^2

ans =

30 36 15

66 81 42

39 54 69

2. 点运算 点运算符包括 :.* (点乘)、./ (点右除)、.\ (点左除)、.^ (点乘方) 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。 基本运算中的加和减本来就是这样,所以不存在点运算。

>> A=[1:3;4:6;7:9];

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

>> C=A.*B

C =

9 16 21

24 25 24

21 16 9

//矩阵A和矩阵B中A(i,j)和B(i,j)相乘得到C(i,j),组成矩阵C

对于单个数据的加减乘除,点乘运算和基本运算乘是一样的。

>> y=sind(45)*cosd(45)

y =

0.5000

>> y=sind(45).*cosd(45)

y =

0.5000

但是如果是一个变量x有多个不同的值(相当于一个矩阵),需要同时求结果,需要点乘运算。 例:求当x=0.1、0.4、 0.7、 1时,y=sin x * cos x的值。

>> x=0.1:0.3:1;

>> y=sin(x).*cos(x)

y =

0.0993 0.3587 0.4927 0.4546

//此时如果用乘*就会出错,必须用点乘.*

3. 关系运算 关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。

>> x=3>4

x =

logical

0

>> 3~=4

ans =

logical

1

当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

>> A

A =

1 2 3

4 5 6

7 8 9

>> B

B =

9 8 7

6 5 4

3 2 1

>> A==B //使用以前的变量矩阵A和矩阵B

ans =

3×3 logical 数组

0 0 0

0 1 0

0 0 0

当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

>> 5==B //可以认为5是一个与B同型,元素均为5的矩阵

ans =

3×3 logical 数组

0 0 0

0 1 0

0 0 0

4. 逻辑运算 逻辑运算符:&(与) |(或) ~(非) 设参与逻辑运算的是两个标量a和b,那么运算规则为: a&b a、b全为非零时,运算结果为1,否则为0。 a|b a、b中只要有一个为非零时,运算结果为1。 ~a 当a为零时,运算结果为1;当a为非零时,运算结果为0。 这相当于C语言里的&& || ~ 。只不过是C中的二进制运算的 与或非 相当于Matlab中的逻辑运算符。

>> 3<4&6>5

ans =

logical

1

>> ~(9==1)

ans =

logical

1

>> ~9==1

ans =

logical

0

优先级问题: 在算术运算、关系运算和逻辑运算中,算术运算的优先级最高,逻辑运算优先级最低,但逻辑非运算是单目运算,它的优先级比双目运算要高。

若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。 若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。

关系运算::例1:建立3阶方阵A,判断A的元素是否为偶数。

>> A

A =

1 2 3

4 5 6

7 8 9

>> P=rem(A,2)==0

P =

3×3 logical 数组

0 1 0

1 0 1

0 1 0

例2:水仙花数是指各位数字的立方之和等于该数本身的三位正整数。求全部水仙花数。

>> m=100:999;

>> m1=rem(m,10);

>> m2=rem(fix(m/10),10);

>> m3=fix(m/100);

>> k=find(m==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)

k = //获得m矩阵对于的下标

54 271 272 308

>> s=m(k)

s = //由下标得到对应的水仙花数

153 370 371 407

相关推荐

旅游攻略导航
365bet网络足球赌博

旅游攻略导航

📅 08-26 👁️ 4223
世界十台最贵电脑排名 全球最昂贵电脑排行榜 全球最贵奢侈品电脑配置
【科普】标清、高清、超清、1080p、蓝光、4k有什么区别?
365bet网络足球赌博

【科普】标清、高清、超清、1080p、蓝光、4k有什么区别?

📅 07-14 👁️ 8331