MATLAB数值计算功能文档格式.docx
《MATLAB数值计算功能文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB数值计算功能文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
formatrat得4/3作为一个有理数
三、数学函数
命令集5数学函数
abs(x)求x的绝对值,即|x|.
sign(x)求x的符号,如果是正的得1;
负的得-1;
零得0.
sqrt(x)求x的平方根,即
exp(x)求x的指数函数,即
log(x)求x的自然对数,即lnx.
log10(x)求x以10为底的对数,即
sin(x)求正弦x,x为弧度.
cos(x)求余弦x,x为弧度.
tan(x)求正切x,x为弧度.
cot(x)求余切x,即1/(tanx),x为弧度.
asin(x)求反正弦,即
acos(x)求反余弦,即
sec(x)求正割x,即1/(cosx).
csc(x)求余割x,即1/(sinx).
命令集6取整命令
round(x)求最接近x的整数.如果x是一个向量,则适用于所有元素.
fix(x)求0方向最接近x的整数.即负x向上四舍五入,正x向下四舍五入.
floor(x)求小于或等于x的最接近的整数.
ceil(x)求大于或等于x的最接近的整数.
rem(x,y)求整除x/y的余数.
gcd(x,y)求整数x和y的最大公因子.
lcm(x,y)求正整数x和y的最小公倍数,也能用于决定最小公因子.
第二节MATLAB的矩阵的建立与运算
矩阵是MATLAB数据存储的基本单元,而矩阵的运算是MATLAB语言的核心,几乎一切运算均是以对矩阵的操作为基础的.
一、矩阵的建立
1.直接输入法从键盘上输入矩阵是最方便、最常用的创建数值矩阵的方法,尤其适合较小的简单矩阵.规则如下:
⏹输入矩阵时要以“[]”为其标识符号,矩阵的所有元素必须都在中括号内.
⏹矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔.
⏹矩阵大小不需要预先定义.
⏹矩阵元素可以是运算表达式.
⏹若"
[]"
中无元素表示空矩阵.
⏹例4>
>
A=[123;
456;
789]
A=
123
456
789
2.利用“:
”生成矩阵
(1)生成等距的行向量,如
a=1:
0.5:
4
a=
Columns1through7
11.522.533.54
(2)截取指定矩阵中的部分生成新矩阵,如
B=A(1:
2,:
)
B=
123
456
即矩阵B是例4中A矩阵的前两行生成.
3.外部文件读入法以文件的形式存储,适合大型矩阵输入.读入形式
Load+文件名
⏹Load函数将会从文件名所指定的文件中读取数据,并将输入的数据赋给以文件名命名的变量,如果不给定文件名,则将自动认为matlab.mat文件为操作对象,如果该文件在MATLAB搜索路径中不存在时,系统将会报错.
4.特殊矩阵的生成
命令集71矩阵、零矩阵、单位矩阵和随机矩阵
ones(n)建立一个n×
n的1矩阵.
ones(m,n)建立一个m×
ones(size(A))建立一个和矩阵A同样大小的1矩阵.
zeros(n)建立一个n×
n的0矩阵.
zeros(m,n)建立一个m×
zeros(size(A))建立一个和矩阵A同样大小的0矩阵.
eye(n)建立一个n×
n的单位矩阵.
eye(m,n)建立一个m×
eye(size(A))建立一个和矩阵A同样大小的单位矩阵.
rand产生在0~1之间均匀分布的随机数;
每调用一次给一个新的数值.
rand+i*rand产生一个复数随机数.
rand(n)产生一个n×
n的矩阵,其元素为0~1之间均匀分布的随机数.
rand(m,n)产生一个m×
二、矩阵的运算
MATLAB中的大多数运算可以直接对矩阵应用.除了算术运算+、-、*、^、/、\外,还有用于转置和共轭的运算符(撇号’:
实数时为转置,复数时为共轭转置,复数时转置为.’)、关系运算符和逻辑运算符.
1.除法在MATLAB中,有两个矩阵除法的符号,左除\和右除/.如果A是一个非奇异方阵,那么A\B和B/A对应A的逆与B的左乘
和右乘
,即分别等价于命令inv(A)*B和B*inv(A).
2.元素操作算术运算
算术运算也可以元素与元素逐次进行.参与运算的矩阵维数要相同.如果运算是由一点进行的,那么这个运算实行的是元素方式,称为数组运算或点运算.对于加法和减法,数组运算(点运算)和矩阵运算没有差别.数组运算(点运算)符是:
+-.*./.\.^
⏹例5>
789];
B=ones(3);
C=A.*B
C=
3.关系运算符
MATLAB有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩阵中的每个元素与标量进行比较.
关系运算符如下:
<
小于
<
=小于等于
大于
>
=大于等于
==等于
~=不等于
关系运算符比较对应的元素,产生一个仅包含1和0的具有相同维数的矩阵.其元素是:
1比较结果是真
0比较结果是假
在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符.圆括号可以改变其顺序.
4.逻辑运算符
在MATLAB中有四种逻辑运算符:
&
与;
|或;
~非;
xor异或;
逻辑运算符的运算优先级最低.在一个表达式中,关系运算符和算术运算符的运算级别要高于逻辑运算符.
xor和or之间的差别在于:
表达式中至少有一个是真,那么or是真;
xor是表达式中有一个是真但不能两者均为真时才为真.
运算符&
和|比较两个相同维数的矩阵,它也能使一个标量与一个矩阵进行比较.逻辑运算符是按元素比较的.零元素表示逻辑值假,任何其他值的元素表示逻辑值真.其结果是一个包含1和0的矩阵.
命令集8逻辑运算符
A&
B返回一个与A和B相同维数的矩阵.在这个矩阵中,A和B对应元素都为非零时,则对应项为1;
有一个为零的项则为0.
A|B返回一个与A和B相同维数的矩阵.在这个矩阵中,A和B对应元素只要有一个为非零,则对应项为1;
两个矩阵对应元素均为零时,则对应项为0.
~A返回一个与A和B相同维数的矩阵.在这个矩阵中,A对应元素是零时,则对应项为1;
A对应元素是非零时,则对应项为0.
xor(A,B)返回一个与A和B相同维数的矩阵.在这个矩阵中,如果A和B均为零或均为非零时,则对应项为0;
如果A或B是非零但不是两者同时为非零时,则对应项为1.
练习题
1.在计算机上,求下列表达式的值.
①
;
②
,其中
③
,其中
④
⑤
2.完成下列操作,观察结果:
①a=1:
5,b=(1:
5)’
②y=0:
pi/4:
pi
③x=(0:
0.2:
3)’,y=exp(-x).*sin(x)
④A=[123;
456;
789]
B=[1,2,3;
4,5,6;
7,8,9]
C=[123
456,
789]
3.已知
求
①AB-2A,②AB-BA,A.*B,B.*A,③
4.
,求
.
5.
6.x=(1,1,1,1),y=(2,3,4,5)’,求
7.完成下列操作并观察结果
①
⑥
⑦
⑧
⑨C=[ones(4),zeros(4);
eye(4),rand(4)]
⑩C=[ones(4),zeros(4);
eye(4),rand(5)]
8.建立向量
9.完成下列命令,观察结果
①a=[1:
3;
4:
6;
7:
9];
x=5;
xa=x<
=a
②b=[041;
108;
200];
ab=a&
b
3n_b=~b
10.练习format命令:
对第1题练习各种输出格式.
11.计算P265
x=1;
y
(1)=x;
fork=1:
15
x=1/(x+1);
y(k)=x;
end
y
12.计算P266
w=7/25;
10
x=w*x+(1-w)/(x+1);
①>
w=sqrt
(2)*(1+0.34245*10^(-6))
w=
1.4142
a=3.5;
b=5;
c=-9.8;
②>
x=(2*pi*a+(b+c)/(pi+a*b*c)-exp
(2))/(tan(b+c)+a)
x=
0.9829
a=3.32;
b=-7.9;
③>
y=2*pi*(a^2)*((1-pi/4)*b-(0.8333-pi/4)*a)
y=
-128.4271
t=2;
④>
z=1/2*exp(2*t)*log(t+sqrt(1+t^2))
z=
39.4099
⑤>
x=1+2i;
y=3-sqrt(17);
u=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))
u=
-0.3488+0.3286i
①>
5)'
a=
12345
b=
1
2
3
4
5
②>
y=0:
00.78541.57082.35623.1416
x=(0:
3)'
y=exp(-x).*sin(x)
0
0.2000
0.4000
0.6000
0.8000
1.0000
1.2000
1.4000
1.6000
1.8000
2.0000
2.2000
2.4000
2.6000
2.8000
3.0000
0.1627
0.2610
0.3099
0.3223
0.3096
0.2807
0.2430
0.2018
0.1610
0.1231
0.0896
0.0613
0.0383
0.0204
0.0070
④>
A=[123;
A=
123
456
789
B=[1,2,3;
B=
C=[123
456,
C=
⑤>
A=[sin(pi),2*cos(pi/3);
5*pi,-exp
(2)]
0.00001.0000
15.7080-7.3891
3.
A=[111;
-111;
1-11];
B=[121;
13-1;
214;
];
A*B-2*A
ans=
242
400
024
A*B-B*A,A.*B,B.*A
440
5-3-1
-31-1
121
-13-1
2-14
inv(A)*B-inv(B)*A
Columns1through2
3.75002.2500
-2.0000-1.0000
-0.25001.2500
Column3
1.2500
-2.0000
x=[21-3i;
5-0.65];
y=1/2*exp(2*x)*log(x+sqrt(1+x^2))
1.0e+004*
0.0057-0.0007i0.0049-0.0027i
1.9884-0.3696i1.7706-1.0539i
5.
D=[2310-0.7780;
41-45655;
325032;
6-9.54543.14];
D^2,D.*D,D.^2
1.0e+003*
0.9141-0.22390.63210.0251
1.20802.7123-2.68691.8707
1.1330-0.21032.02810.1255
1.49370.7293-0.45521.6902
0.52900.10000.00060
1.68102.02504.22500.0250
1.02400.025001.0240
0.03600.09102.91600.0099
0.03600.09102.91600.0099
6.
x=[1,1,1,1];
y=[2,3,4,5]'
;
x*y,y*x
14
2222
3333
4444
5555
ones(6),ones(5,6),ones(6,5)
111111
11111
zeros(4),zeros(3,4),zeros(4,3)
0000
000
③>
eye(5),eye(4,5),eye(5,4)
10000
01000
00100
00010
00001
1000
0100
0010
0001
x=rand+i*rand,A=rand(3),B=rand(3,4)
0.8180+0.6602i
0.34200.5341
0.28970.7271
0.34120.3093
0.8385
0.5681
0.3704
0.70270.6946
0.54660.6213
0.44490.7948
Columns3through4
0.95680.1730
0.52260.9797
0.88010.2714
⑤
hilb(3),hilb(4),invhilb(3)
1.00000.50000.3333
0.50000.33330.2500
0.33330.25000.2000
Columns1through3
0.25000.20000.1667
Column4
0.2500
0.1667
0.1429
9-3630
-36192-180
30-180180
⑥>
x=[12345];
y=[54321];
T=toeplitz(x,y),S=toeplitz(x)
Warning:
Firstelementofinputcolumndoesnotmatchfirstelementofinputrow.
Columnwinsdiagonalconflict.
Intoeplitzat21
T=
14321
21432
32143
43214
54321
S=
21234
32123
43212
⑦>
A=compan(x),B=compan(y)
-2-3-4-5
-0.8000-0.6000-0.4000-0.2000
1.0000000
01.000000
001.00000
⑧>
vander(x),vander(y)
168421
8127931
256641641
6251252551
⑨>
C=[ones(4),zeros(4);
Columns1through5
1.00001.00001.00001.00000
1.00000000.0099
01.0000000.1389
001.000000.2028
0001.00000.1987
Columns6through8
0.60380.74680.4186
0.27220.44510.8462
0.19880.93180.5252
0.01530.46600.2026
⑩>
?
Errorusing==>
horzcat
Allmatricesonarowinthebracketedexpressionmusthavethe
samenumberofrows.
x=(1:
3),y=(1:
3),z=(4:
-0.5