1、1实验二第 2 章 MATLAB 数值计算功能MATLAB 强大的数值计算功能使其在诸多数学计算软件中傲视群雄,是 MATLAB 的基础.本章将简要介绍 MATLAB 的数据类型、矩阵的建立及运算. 第一节 MATLAB 的数据类型MATLAB 的数据类型主要包括:数字、字符串、矩阵、单元型数据及结构型数据等,此处仅介绍几个常用类型.一、MAT L A B 中的变量与常量不需要对所使用的变量进行事先声明,也不需要指定其类型,它会自动根据所赋予变量的值或所进行的操作来确定变量的类型.如果变量重新赋值将会用新值代替旧值并以新值类型代替旧值类型. 例 1 a=1;b=0.5;c=a*b,c=a*b
2、变量的命名规则是:(1)变量名可以有 63 个字符.字母 AZ、az、数字和下划线_都可以作为变量名,但第一个字符必须是一个字母;(2)变量名 区分大小写, 如矩阵 a 和 A 是不一样的;(3)变量名中 不允许使用 标点符号 、 空格、运算符 ;(4)预定义变量名也可以像一个变量名那样使用,但函数只有在变量由命令 clear 删除后才能使用,所以,不主张这样使用; (5)MATLAB 提供的标准函数及命令通常是用小写字母书写.2 例 2 命令 abs (A)给出了 A 的绝对值,但 ABS(A)会导致在屏幕上显示错误信息.二、 算术表达式及显示格式在 MATLAB 中对十进制数,使用科学记数
3、法可以书写十分大和十分小的数.例如 1.23E6,代表 1.2310-6 .MATLAB 有算术运算符的扩展集,它们是:1) 幂; 2) * 乘; / 右除(正常除); 左除;3) + 加; 减这是按序给出的运算,1)是最高优先级.在带相同优先级的运算符表达式中,按从左到右的顺序执行.圆括号( )能够用于改变优先级次序.两种不同的除法:对于数量右除 2 / 5 得 0 . 4 与左除 5 2 是相同的,斜线号“靠着”的表达式或数字是分母.如a/(b+c)即为 ,而 a(b+c)即为 .abcbca命令集 4 显示格式format defformat 将输出格式改为由 defformat 定义的
4、格式,这类格式可以是如下之一:short、long、short e、long e、hex、+ 、bank 、rat也有 compact 或 loose,它给出了一个较紧缩或较宽松的输出格式,但并不影响数值输出格式.3 例 3设 p = 1 + 1/3,先定义格式,然后在屏幕上显示 p:format short 得 1.3333 4 位小数format long 得 1.33333333333333 14 位小数format short e 得 1.3333e + 00 4 位小数format long e 得 1.333333333333333e + 00 15 位小数format hex 得
5、 3ff5555555555555 16 进制数format + 得 + 正:+format bank 得 1.33 美元和美分format rat 得 4/3 作为一个有理数三、数学函数命令集 5 数学函数abs(x) 求 x 的绝对值,即 |x| .sign(x) 求 x 的符号,如果是正的得 1;负的得1;零得0 .sqrt(x) 求 x 的平方根,即 .xexp(x) 求 x 的指数函数,即 .elog(x) 求 x 的自然对数,即 lnx .log10(x) 求 x 以 10 为底的对数,即 .10logxsin(x) 求正弦 x,x 为弧度 .cos(x) 求余弦 x,x 为弧度.
6、4tan(x) 求正切 x,x 为弧度.cot(x) 求余切 x,即 1 / ( tanx),x 为弧度.asin(x) 求反正弦,即 .sinacos(x) 求反余弦,即 .1coxsec(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) 求
7、整除 x/y 的余数.gcd(x, y) 求整数 x 和 y 的最大公因子.lcm(x,y) 求正整数 x 和 y 的最小公倍数,也能用于决定最小公因子.第二节 MATLAB 的矩阵的建立与运算矩阵是 MATLAB 数据存储的基本单元,而矩阵的运算是 MATLAB 语言的核心, 几乎一切运算均是以对矩阵的操作为基础的.一、矩阵的建立51. 直接输入法 从键盘上输入矩阵是最方便、最常用的创建数值矩阵的方法,尤其适合较小的简单矩阵.规则如下: 输入矩阵时要以“ ”为其标识符号,矩阵的所有元素必须都在中括号内. 矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔. 矩阵大小不需要预先定义
8、. 矩阵元素可以是运算表达式. 若“ “中无元素表示空矩阵. 例 4 A=1 2 3;4 5 6;7 8 9 A= 1 2 3 4 5 6 7 8 92. 利用“:”生成矩阵(1) 生成等距的行向量,如 a=1:0.5:4 a= Columns 1 through 7 1 1.5 2 2.5 3 3.5 4 (2)截取指定矩阵中的部分生成新矩阵,如 B=A (1:2, : ) 6B= 1 2 3 4 5 6即矩阵 B 是例 4 中 A 矩阵的前两行生成.3. 外部文件读入法 以文件的形式存储,适合大型矩阵输入.读入形式 Load+文件名 Load 函数将会从文件名所指定的文件中读取数据,并将输
9、入的数据赋给以文件名命名的变量,如果不给定文件名,则将自动认为 matlab.mat 文件为操作对象,如果该文件 在 MATLAB 搜索路径中不存在时,系统将会报错.4. 特殊矩阵的生成命令集 7 1 矩阵、零矩阵、单位矩阵和随机矩阵ones (n) 建立一个 nn 的 1 矩阵.ones (m , n) 建立一个 mn 的 1 矩阵.ones (size(A) 建立一个和矩阵 A 同样大小的 1 矩阵.zeros(n) 建立一个 nn 的 0 矩阵.zeros(m , n) 建立一个 mn 的 0 矩阵.zeros(size(A) 建立一个和矩阵 A 同样大小的 0 矩阵.eye(n) 建立
10、一个 nn 的单位矩阵.eye(m, n) 建立一个 mn 的单位矩阵.eye(size(A) 建立一个和矩阵 A 同样大小的单位矩阵 .7rand 产生在 01 之间均匀分布的随机数;每调用一次给一个新的数值.rand + i*rand 产生一个复数随机数.rand(n) 产生一个 nn 的矩阵,其元素为 01 之间均匀分布的随机数.rand(m , n) 产生一个 mn 的矩阵,其元素为 01 之间均匀分布的随机数.二、矩阵的运算MATLAB 中的大多数运算可以直接对矩阵应用.除了算术运算+、*、/、 外,还有用于转置和共轭的运算符(撇号 :实数时为转置,复数时为共轭转置,复数时转置为 .
11、) 、关系运算符和逻辑运算符.1. 除法 在 MATLAB 中,有两个矩阵除法的符号,左除 和右除/.如果 A 是一个非奇异方阵,那么 A B 和 B / A 对应 A的逆与 B 的左乘 和右乘 ,即分别等价于命令 i n v ( A ) 11BA*B 和 B* i n v ( A ).2. 元素操作算术运算算术运算也可以元素与元素逐次进行.参与运算的矩阵维数要相同.如果运算是由一点进行的,那么这个运算实行的是元素方式,称为数组运算或点运算.对于加法和减法,数组运算(点运算)和矩阵运算没有差别.数组运算(点运算)符是:+ . * . / . . 8 例 5 A=1 2 3;4 5 6;7 8
12、9;B=ones(3); C=A.*BC= 1 2 3 4 5 6 7 8 93. 关系运算符MATLAB 有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩阵中的每个元素与标量进行比较.关系运算符如下:大于 = 大于等于= = 等于 = 不等于关系运算符比较对应的元素,产生一个仅包含 1 和 0 的具有相同维数的矩阵.其元素是:1 比较结果是真0 比较结果是假9在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符.圆括号可以改变其顺序.4. 逻辑运算符在 MATLAB 中有四种逻辑运算符:4 5 6;7 8 911B=1,2,3;4,5,6;7,8,
13、9C=1 2 34 5 6,7 8 9 sin(),2*cos(/3);5*,exp(2)Appii 3. 已知 , 求 11,B AB-2A , AB-BA,A.*B,B.*A , .1AB4. ,求 .21350.6ix221ln(1)xyex5 ,求 .7804532326914D2,.*,2D6x = (1,1,1,1) ,y = (2,3,4,5) ,求 .,xyA7完成下列操作并观察结果 (),5,6)(,)onesones 4343zrzr (),),()yy ,(,4)xrandiArandBr (3),4,(3)hilblvhilb 12521,(,)()yTtoeplizx
14、yStoeplizx (),()AcompanxBcopany vderr12 C=ones(4),zeros(4);eye(4),rand(4) C=ones(4),zeros(4);eye(4),rand(5)8. 建立向量 (1:3),(:0.53),(4:0.5)xyz /(1,3wlinspacevlinspace9. 完成下列命令,观察结果 a=1:3;4:6;7:9;x=5;xa=x 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
15、)+a)x =0.9829 a=3.32; b=-7.9; y=2*pi*(a2)*(1-pi/4)*b-(0.8333-pi/4)*a)y =-128.4271 t=2; z=1/2*exp(2*t)*log(t+sqrt(1+t2)z =39.4099 x=1+2i; y=3-sqrt(17); u=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y)14u =-0.3488 + 0.3286i2. 完成下列操作,观察结果: a=1:5,b=(1:5)a =1 2 3 4 5b =12345 y=0:pi/4:piy =0 0.7854 1.5708 2.3562
16、3.1416 x=(0:0.2:3),y=exp(-x).*sin(x)x =00.20000.40000.60000.80001.00001.2000151.40001.60001.80002.00002.20002.40002.60002.80003.0000y =00.16270.26100.30990.32230.30960.28070.24300.20180.16100.12310.08960.06130.03830.02040.0070 A=1 2 3;4 5 6;7 8 9A =1 2 34 5 67 8 9 B=1,2,3;4,5,6;7,8,9B =1 2 3164 5 67
17、 8 9 C=1 2 34 5 6,7 8 9C =1 2 34 5 67 8 9 A=sin(pi),2*cos(pi/3);5*pi,-exp(2)A =0.0000 1.000015.7080 -7.38913. A=1 1 1;-1 1 1;1 -1 1; B=1 2 1;1 3 -1;2 1 4; A*B-2*Aans =2 4 24 0 00 2 4 A*B-B*A,A.*B,B.*Aans =4 4 05 -3 -1-3 1 -117ans =1 2 1-1 3 -12 -1 4ans =1 2 1-1 3 -12 -1 4 inv(A)*B-inv(B)*Aans =Colum
18、ns 1 through 2 3.7500 2.2500-2.0000 -1.0000-0.2500 1.2500Column 3 1.2500-2.00001.25004. x=2 1-3i;5 -0.65; y=1/2*exp(2*x)*log(x+sqrt(1+x2)y =1.0e+004 *0.0057 - 0.0007i 0.0049 - 0.0027i1.9884 - 0.3696i 1.7706 - 1.0539i185. D=23 10 -0.778 0;41 -45 65 5;32 5 0 32;6 -9.54 54 3.14; D2,D.*D,D.2ans =1.0e+00
19、3 *0.9141 -0.2239 0.6321 0.02511.2080 2.7123 -2.6869 1.87071.1330 -0.2103 2.0281 0.12551.4937 0.7293 -0.4552 1.6902ans =1.0e+003 *0.5290 0.1000 0.0006 01.6810 2.0250 4.2250 0.02501.0240 0.0250 0 1.02400.0360 0.0910 2.9160 0.0099ans =1.0e+003 *0.5290 0.1000 0.0006 01.6810 2.0250 4.2250 0.02501.0240 0
20、.0250 0 1.02400.0360 0.0910 2.9160 0.00996. x=1,1,1,1;y=2,3,4,5; x*y,y*xans =1419ans =2 2 2 23 3 3 34 4 4 45 5 5 57完成下列操作并观察结果 ones(6),ones(5,6),ones(6,5)ans =1 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 1ans =1 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 1ans =1 1 1 1 11
21、 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1 zeros(4),zeros(3,4),zeros(4,3)20ans =0 0 0 00 0 0 00 0 0 00 0 0 0ans =0 0 0 00 0 0 00 0 0 0ans =0 0 00 0 00 0 00 0 0 eye(5),eye(4,5),eye(5,4)ans =1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1ans =1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 0ans =211 0 0 00 1 0 00
22、0 1 00 0 0 10 0 0 0 x=rand+i*rand,A=rand(3),B=rand(3,4)x =0.8180 + 0.6602iA =Columns 1 through 2 0.3420 0.53410.2897 0.72710.3412 0.3093Column 3 0.83850.56810.3704B =Columns 1 through 2 0.7027 0.69460.5466 0.62130.4449 0.7948Columns 3 through 4 0.9568 0.17300.5226 0.97970.8801 0.271422 hilb(3),hilb(
23、4),invhilb(3)ans =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.2000ans =Columns 1 through 3 1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.20000.2500 0.2000 0.1667Column 4 0.25000.20000.16670.1429ans =9 -36 30-36 192 -18030 -180 180 x=1 2 3 4 5; y=5 4 3 2 1; T=toeplitz(x,y),S=toe
24、plitz(x)Warning: First element of input column does not match first element of input row. Column wins diagonal conflict. In toeplitz at 21T =231 4 3 2 12 1 4 3 23 2 1 4 34 3 2 1 45 4 3 2 1S =1 2 3 4 52 1 2 3 43 2 1 2 34 3 2 1 25 4 3 2 1 A=compan(x),B=compan(y)A =-2 -3 -4 -51 0 0 00 1 0 00 0 1 0B =-0
25、.8000 -0.6000 -0.4000 -0.20001.0000 0 0 00 1.0000 0 00 0 1.0000 0 vander(x),vander(y)ans =1 1 1 1 116 8 4 2 181 27 9 3 1256 64 16 4 1625 125 25 5 124ans =625 125 25 5 1256 64 16 4 181 27 9 3 116 8 4 2 11 1 1 1 1 C=ones(4),zeros(4);eye(4),rand(4)C =Columns 1 through 5 1.0000 1.0000 1.0000 1.0000 01.0
26、000 1.0000 1.0000 1.0000 01.0000 1.0000 1.0000 1.0000 01.0000 1.0000 1.0000 1.0000 01.0000 0 0 0 0.00990 1.0000 0 0 0.13890 0 1.0000 0 0.20280 0 0 1.0000 0.1987Columns 6 through 8 0 0 00 0 00 0 00 0 00.6038 0.7468 0.41860.2722 0.4451 0.84620.1988 0.9318 0.52520.0153 0.4660 0.2026 C=ones(4),zeros(4);
27、eye(4),rand(5)? Error using = horzcatAll matrices on a row in the bracketed expression must have the same number of rows.258. 建立向量 x=(1:3),y=(1:0.5:3),z=(4:-0.5:0)x =1 2 3y =1.0000 1.5000 2.0000 2.5000 3.0000z =Columns 1 through 5 4.0000 3.5000 3.0000 2.5000 2.0000Columns 6 through 9 1.5000 1.0000 0
28、.5000 0 w=linspace(-pi/4,pi/4),v=linspace(1,3,5)w =Columns 1 through 5 -0.7854 -0.7695 -0.7537 -0.7378 -0.7219Columns 6 through 10 -0.7061 -0.6902 -0.6743 -0.6585 -0.6426Columns 11 through 15 -0.6267 -0.6109 -0.5950 -0.5791 -0.5633Columns 16 through 20 26-0.5474 -0.5315 -0.5157 -0.4998 -0.4839Column
29、s 21 through 25 -0.4681 -0.4522 -0.4363 -0.4205 -0.4046Columns 26 through 30 -0.3887 -0.3729 -0.3570 -0.3411 -0.3253Columns 31 through 35 -0.3094 -0.2935 -0.2777 -0.2618 -0.2459Columns 36 through 40 -0.2301 -0.2142 -0.1983 -0.1825 -0.1666Columns 41 through 45 -0.1507 -0.1349 -0.1190 -0.1031 -0.0873C
30、olumns 46 through 50 -0.0714 -0.0555 -0.0397 -0.0238 -0.0079Columns 51 through 55 0.0079 0.0238 0.0397 0.0555 0.0714Columns 56 through 60 0.0873 0.1031 0.1190 0.1349 0.1507Columns 61 through 65 0.1666 0.1825 0.1983 0.2142 0.2301Columns 66 through 70 0.2459 0.2618 0.2777 0.2935 0.3094Columns 71 throu
31、gh 75 270.3253 0.3411 0.3570 0.3729 0.3887Columns 76 through 80 0.4046 0.4205 0.4363 0.4522 0.4681Columns 81 through 85 0.4839 0.4998 0.5157 0.5315 0.5474Columns 86 through 90 0.5633 0.5791 0.5950 0.6109 0.6267Columns 91 through 95 0.6426 0.6585 0.6743 0.6902 0.7061Columns 96 through 100 0.7219 0.73
32、78 0.7537 0.7695 0.7854v =1.0000 1.5000 2.0000 2.5000 3.00009. 完成下列命令,观察结果 a=1:3;4:6;7:9;x=5; xa=x b=0 4 1;1 0 8;2 0 0; ab=ay(1)=x; for k=1:15x=1/(x+1);y(k)=x;end yy =Columns 1 through 5 0.5000 0.6667 0.6000 0.6250 0.6154Columns 6 through 10 0.6190 0.6176 0.6182 0.6180 0.6181Columns 11 through 15 0.6180 0.6180 0.6180 0.6180 0.6180 x=1;y(1)=x ; w=7/25; for k=1:10x=w*x+(1-w)/(x+1); y(k)=x;end yy =290.64000.61820.61800.61800.61800.61800.61800.61800.61800.6180