第二章 MATLAB 的基本数学功能.docx

上传人:b****6 文档编号:7094252 上传时间:2023-01-17 格式:DOCX 页数:25 大小:26.24KB
下载 相关 举报
第二章 MATLAB 的基本数学功能.docx_第1页
第1页 / 共25页
第二章 MATLAB 的基本数学功能.docx_第2页
第2页 / 共25页
第二章 MATLAB 的基本数学功能.docx_第3页
第3页 / 共25页
第二章 MATLAB 的基本数学功能.docx_第4页
第4页 / 共25页
第二章 MATLAB 的基本数学功能.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

第二章 MATLAB 的基本数学功能.docx

《第二章 MATLAB 的基本数学功能.docx》由会员分享,可在线阅读,更多相关《第二章 MATLAB 的基本数学功能.docx(25页珍藏版)》请在冰豆网上搜索。

第二章 MATLAB 的基本数学功能.docx

第二章MATLAB的基本数学功能

第二章MATLAB的基本数学功能

Chaptertwo:

fundamentalMathfunctionofMATLAB

.

一.算术运算(ArithmeticComputation)

MATLAB提供的两种运算方式:

(1)普通的数组运算方式:

(Arraycomputation)在数组中对应元素之间进行运算;

(2)矩阵运算方式:

(matrixcomputations)将标量当作1×1阶矩阵,一维数组当作一行或一列的矢量(即1×n阶或n×1阶的矩阵),二维数组当作m×n阶矩阵,然后按照矩阵的运算规则进行运算。

*二者输入形式和书写方法相同,差别仅在于使用不同的运算符号,执行不同的计算过程,数组的运算是对应元素之间的运算,而矩阵运算是根据矩阵的运算规则进行。

1.加、减运算(additionandsubtraction)

矩阵与数组的加减运算没有区别,运算符均为“+”、“-”,运算方法相同,但两个运算对象必须是同阶矩阵,否则将给出错误信息。

如下例:

a=[123;456;789];

b=[135];

a+b

运行结果给出错误信息:

?

?

?

Errorusing==>±

Matrixdimensionsmustagree.

但标量,即1×1阶矩阵可以和其他不同维数的矩阵进行加减运算,如:

a+5

ans=

678

91011

121214

2.乘除运算(Multiplicationanddivision)

矩阵在进行乘除运算时与通常的运算符号相同(*,/,\),而数组在进行乘除运算时要在通常的符号前加“.”,如:

“.*”和“./”(或“.\”)

(1)矩阵乘法:

(Matrixmultiplication)

条件:

两矩阵中前一矩阵的列数与后一矩阵的行数相同,如

x=[12;34];

y=[56;78];

x*y

ans=

1922

4350

也可以实现两个相同维数矢量的内积(点乘,dotproduct),如:

a=[-102]‘%(输入行矢量转置为列矢量,等同于a=[-1;0;2])

b=[-2-11]‘

a‘*b

b‘*a

a=-1

0

2

b=

-2

-1

1

ans=4

ans=4

MATLAB计算点乘(dotproduct)和叉乘(crossproduct)有专门的命令,用dot(a,b)计算矢量a和b的点乘,用cross(a,b)计算叉乘。

矩阵可以和标量相乘,标量可以是乘数也可以是被乘数,都是将矩阵中的每一个元素与标量相乘。

如:

x=[-102];

pi*x

ans=

-3.141606.2832

(2)数组的乘法(Arraymultiplication)

条件:

a,b两数组必须有相同的维数,则a.*b表示a和b中对应元素之间相乘,即z(i,j)=x(i,j)*y(i,j).如:

x=[123];

y=[456];

z=x.*y

z=

41018

(3)矩阵除法(Matrixdivision)

条件:

a矩阵是非奇异方阵,则a\b(左除)和b/a(右除)都可以实现。

a\b等效于a矩阵的逆左乘b矩阵,即a\b=inv(a)*b,b/a等效于a矩阵的逆右乘b矩阵,即b/a=b*inv(a).

通常x=a\b是a*x=b的解,x=b/a是x*a=b的解。

一般a\b≠b/a,

右除与左除的关系为:

(b/a)’=(a’\b’),如;

a=rand(3)

b=rand(3)

c=a\b

d=b/a

w=(b/a)'

t=a'\b'

a=

0.60380.01530.9318

0.27220.74680.4660

0.19880.44510.4186

b=

0.84620.67210.6813

0.52520.83810.3795

0.20260.01960.8318

c=

4.342010.5808-9.1715

0.31281.1052-0.3169

-1.9105-6.15296.6792

d=

1.48645.5604-7.8702

0.71624.5085-5.7059

-0.0482-3.62736.1317

w=

1.48640.7162-0.0482

5.56044.5085-3.6273

-7.8702-5.70596.1317

t=

1.48640.7162-0.0482

5.56044.5085-3.6273

-7.8702-5.70596.1317

(4)数组的除法(Arraydivision)

条件:

a与b必须具有相同的维数。

符号“.\”或“./”,运算结果相同,a.\b表示b中的元素分别除以a中的对应元素,即z(i,j)=x(i,j)\y(i,j)=y(i,j)/x(i,j)。

如:

x=[123];

y=[456];

z=x.\y

z=

4.00002.50002.0000

3.乘方(Power)

(1)矩阵的乘方(Matrixpower)

条件:

在a^p中a,p不可都是矩阵,必须一个是标量,一个是方阵。

a^p意思是a的p次方。

a,p的类别不同,乘方的算法也有差别,有三种情况:

1、a是一个方阵,p是一个标量,且p是大于1的整数,则a的p次幂即为a自乘p次。

2、如p是不为整数的标量时,a^p=V*D.^p/V其中D为矩阵a的特征值矩阵,V为对应的特征矢量阵,可用eig函数求出D和V,[V,D]=eig(a).

3、当p是方阵而a是标量时,a^p=V*a.^D/V,其中[V,D]=eig(p).

(2)数组的乘方(Arraypower)符号“.^”

条件:

在底与指数均为数组的情况下,要求他们的维数必须相同。

*当底和指数为同样大小的数组时,x.^y为对应的元素做乘方运算。

如:

x=[123];

y=[456];

z=x.^y

z=

132729

这时执行的实际运算为:

z=x.^y=[123].^[456]=[1^42^53^6]=[132729]

*若指数是标量,执行的运算是底的每一个元素执相同幂次的运算。

既z(i,j)=x(i,j)^2

如:

x=[123];

z=x.^2

得到结果为:

z=

149

这时执行的运算为:

z=[123].^2=[1^22^23^2]=[149]

*若底是一个标量,指数是一个数组,执行的运算是用指数数组的每个元素对底进行乘方运算,即:

z(i,j)=2^x(i,j),形成新的数组。

如:

x=[123];

z=2.^x

z=

248

这时执行的运算为:

z=2.^x=2.^[123]=[2^12^22^3]

4.转置:

(Transpose)行列转置,符号“‘”

如;计算矩阵a的转置:

a=[123;456;789];

b=a’

b=

147

258

369

也可直接对矢量或矩阵进行转置运算;

[-102]’

ans=

-1

0

2

如z是复数矩阵,则z’是它的复数共轭.转置(Complexconjugatetranspose),若要进行非共轭转置运算,可使用z.’或conj(z’)求得。

例;

z=[1+2i3+4i];

z’

ans=

1.0000-2.0000i

3.0000-4.0000i

z.’

ans=

1.0000+2.0000i

3.0000+4.0000i

conj(z’)

ans=

1.0000+2.0000i

3.0000+4.0000i

CONJComplexconjugate.

CONJ(X)isthecomplexconjugateofX.

ForacomplexX,CONJ(X)=REAL(X)-i*IMAG(X).

二.数学函数和矩阵函数(Mathematicfunctionandmatrixfunction)

MATLAB提供的数学函数主要有基本函数和特殊函数两部分。

1.数学函数(Mathfunction)

(a).基本函数:

(Elementaryfunction)三角函数(TrigonometricFunction)、指数函数(Exponentfunction)、复数函数(ComplexFunction)、取整和求余函数(roundandremainfunction)。

(常用基本函数见表2-1,要求课后阅读、记忆)

例:

a=[123;456]

b=fix(pi*a)%朝零方向取整

c=cos(pi*b)

pi*b

a=

123

456

 

b=

369

121518

c=

-11-1

1-11

说明:

(1)三角函数按弧度计算

(2)除后取模mod(x,y)与y符号相同,除后取余数rem(x,y)与x符号相同,当x与y符号相同时,mod(x,y)等于rem(x,y).

例:

x=[112531];

y=[456];

M=mod(x,y)

R=rem(x,y)

M=

301

R=

301

x=[-1125-31];

y=[456];

M=mod(x,y)

R=rem(x,y)

M=

105

R=

-30-1

 

MODModulusafterdivision.

MOD(x,y)isx-n.*ywheren=floor(x./y)ify~=0.Ifyisnotan

integerandthequotientx./yiswithinroundofferrorofaninteger,thennisthatinteger.Byconvention,MOD(x,0)isx.Theinputxandymustberealarraysofthesamesize,orrealscalars.

Thestatement"xandyarecongruentmodm"meansmod(x,m)==mod(y,m).

REMRemainderafterdivision.

REM(x,y)isx-n.*ywheren=fix(x./y)ify~=0.Ifyisnotanintegerandthequotientx./yiswithinroundofferrorofaninteger,thennisthatinteger.Byconvention,REM(x,0)isNaN.Theinputxandymustberealarraysofthesamesize,orrealscalars.

REM(x,y)hasthesamesignasxwhileMOD(x,y)hasthesamesignasy.

REM(x,y)andMOD(x,y)areequalifxandyhavethesamesign,but

differbyyifxandyhavedifferentsigns.

(b)特殊函数:

(Specialfunction)特殊数学函数(specialmathematicsfunction)、数理函数(Mathematicanalysisfunction)、坐标变换(Coordinatestransformationfunction)(表2-2)

2.矩阵函数:

(Matrixfunction)矩阵分析(MatrixAnalysis)、线性方程组(linearsystemofequations)、特征值和特征矢量(Eigenvaluesandeigenvectors.)、矩阵函数(Matrixfunction)、因式分解(Factoranalysis)等矩阵函数(表2-3)。

有些矩阵函数与数学函数名称相似,区别在于矩阵函数名称后有m字符。

例:

a=[14;916];

r1=sqrt(a)

r2=sqrtm(a)

r1=

12

34

r2=

0.4662+0.9359i0.8860-0.2189i

1.9935-0.4924i3.7888+0.1152i

SQRTSquareroot.

SQRT(X)isthesquarerootoftheelementsofX.Complex

resultsareproducedifXisnotpositive.

 

SQRTMMatrixsquareroot.

X=SQRTM(A)istheprincipalsquarerootofthematrixA,i.e.X*X=A.

Xistheuniquesquarerootforwhicheveryeigenvaluehasnonnegativerealpart.IfAhasanyeigenvalueswithnegativerealpartsthenacomplexresultisproduced.IfAissingularthenAmaynothaveasquareroot.Awarningisprintedifexactsingularityisdetected.

三.关系运算与逻辑运算(RelationalcalculusandLogicaloperation)

1.关系运算:

(Relationalcalculus)

条件:

对于两个矩阵的关系运算,两边的矩阵必须具有同样尺寸。

关系运算符:

(Relationaloperator)

﹤小于(lessthan)、﹤=小于等于(lessthanorequalto)、﹥大于(greaterthan)、﹥=大于等于(greaterthanorequalto)、==等于(equalto)、~=不等于(notequalto,NE)。

例:

标量

2+2~=4

ans=0

矩阵:

a=[0-12];

b=[-312];

a

ans=

010

a<=b

ans=

011

a>b

ans=

100

a>=b

ans=

101

a==b

ans=

001

a~=b

ans=

110

在程序的流程控制中,关系运算符通常if,while,for,switch等控制命令使用。

2.逻辑运算(Logicaloperation)

逻辑运算符:

(Logicaloperator)

&与(AND),|或(OR),~非(NOT)

条件:

对于两个矩阵的逻辑运算,两边的矩阵必须具有同样尺寸。

“~”是一元算符,当a为零时,返回信息为1,为非零时,返回信息为0。

#p|(~p)返回值为1,#p&(~p)返回值为0

例:

a=[123;456];

b=[-100;00.50];

a&b

ans=

100

010

a|b

ans=

111

111

~b

ans=

011

101

3.关系函数和逻辑函数(RelationalfunctionandLogicalfunction)(表2—6)

例:

a=magic(6)%建立6阶魔术矩阵,元素由1~n2组成

p=(rem(a,3)==0)%对a求余,有余数置0,无余数置1

format+;p%以format+格式给出p的压缩格式

format%将显示格式转换为缺省的短格式

y=a;

i=find(y>10);%找出y矩阵中大于10的元素的位置i

y(i)=10*ones

(1)%用10代替y中所有大于10的元素

a=

3516261924

3327212325

3192222720

82833171015

30534121416

43629131811

p=

001001

100100

010010

001001

100100

010010

p=

++

++

++

++

++

++

y=

1016101010

3107101010

1092101010

81010101010

10510101010

41010101010

四.基本字符处理功能(ElementarySymbolictreatmentfunction)

1.字符数组的建立(SettingofSymbolicarray)

(1)字符串(stringofcharacter)就是ASCII值得数值数组(Characterarry),MATLAB中每个字符都有相应的ASCII码数值进行存储,输入时所有字符串都用单引号界定后输入或赋值,yesinput除外。

例如:

s1=’Hello’

s1=

Hello

字符串中空格也是字符,上例为1×5阶矩阵:

size(s1)

ans=

15(一行五列)

(2)利用class函数和ischar函数可以判别变量是否为字符串,如:

class(s1)

ans=

char

ischar(s1)

ans=

1

(3)可以用方括号(squarebracket)将字符串合并成更大的串,例如:

s=[s1,’World’]

得结果:

s=

HelloWorld

(4)可以从一个字符串中提取子串(substring),例如:

ss=s(7:

11)

ss=

World

(5)可以将字符串中的字符倒序排列。

例如:

a=’abcd’

a=

abcd

b=a(end:

-1:

1)

b=

dcba

(6)建立二维数组(twodimensionalarray)一样可以直接输入,只须加方括号,并用分号分行,每行字数必须一致,不足处可用空格补充。

例如:

str=[‘name’;’type’;’size’]

str=

name

type

size

还可用str2mat函数把字符串转化为字符数组,这种方法允许用不同长度的字符串。

例如:

s2=str2mat(‘abc’,’abcde’)

s2=

abc

abcde

>>

2.字符数组的运算(Operationofsymbolicarray)

(1)字符以ASCⅡ码存储,用double命令可以查出字符的ASCⅡ码值。

如运行double(s1)得s1码值为:

ans=

72101108108111

(2)用char命令可以实现ASCⅡ码向字符的转换.如:

执行char([65666768]得:

ans=

ABCD

(3)ischar函数用来检测变量是否为字符变量,返回1为肯定,返回0为否定。

(4).strcmp函数具有比较字符串的功能,如执行strcmp(str1,str2),返回1表示str1=str2,返回0表示str1≠str2.

(5).用eval函数将字符串转换为宏功能。

eval(t)就是运行包含在t中的内容。

例如:

用eval函数产生5阶的Hilbert矩阵。

n=5;

t=’1/(i+j-1)’;%字符串t

a=zeros(n);

fori=1:

n

forj=1:

n

a(i,j)=eval(t);%将字符串转变为宏功能,运行包含在t

%中的内容

end

end

a

a=

1.00000.50000.33330.25000.2000

0.50000.33330.25000.20000.1667

0.33330.25000.20000.16670.1429

0.25000.20000.16670.14290.1250

0.20000.16670.14290.12500.1111

常用字符串函数(表2—7)

五.建立特殊数组(矩阵)(settingaspecialarray,matrix)

1.标准数组(或矩阵)函数:

(Standardarrayfunction)

MATLAB提供了一些可以用于辅助编程或运算的一些基本数组或矩阵,主要有:

全0数组:

zeros,全1数组:

ones,单位矩阵:

eye,均匀分布的随机数组:

rand,正态分布的随机数组:

randn,对角矩阵:

diag,魔术矩阵magic,pascal矩阵:

pascal.

2.由小数组建立大数组:

(generatingabigarraybyusingsmallarray)

大数组可由方括号中的小数组建立,如有矩阵

a=[123;456;789]%可利用它建立一个大矩阵:

c=[aeye(size(a));ones(size(a))a^2]

a=

123

456

789

c=

123100

456010

789001

111303642

111668196

111102126150

也可以写成:

d=[azeros(3,2);ones(2,3)eye(2,2)]

d=

12300

45600

78900

11110

11101

注意:

在同一行的各个小数组要有相同的行数,在同一列上的小数组要有相同的列数。

3.冒号“:

”的使用(Theusingofcolon)

(1)产生一维数组(Initializeaonedimensionalarray),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1