1、MATLAB数值计算功能实验二第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 命令abs (A)给出了A的绝对值,但ABS(A)会导致在屏幕上显示错误信息.二、 算术表达式及显示格式在MATLAB中对十进制数,使用科学记数法可以书写十分大和十分小的数.例如1.23E6,
3、代表1.2310-6 .MATLAB有算术运算符的扩展集,它们是:1) 幂;2) * 乘; / 右除(正常除); 左除;3) + 加; 减这是按序给出的运算,1)是最高优先级.在带相同优先级的运算符表达式中,按从左到右的顺序执行.圆括号( )能够用于改变优先级次序.两种不同的除法:对于数量右除 2 / 5得0 . 4与左除5 2是相同的,斜线号“靠着”的表达式或数字是分母.如a/(b+c)即为,而a(b+c)即为.命令集4 显示格式format defformat 将输出格式改为由defformat定义的格式,这类格式可以是如下之一:short、long、short e、long e、hex、
4、+、bank、rat也有compact或loose,它给出了一个较紧缩或较宽松的输出格式,但并不影响数值输出格式. 例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 得 3ff5555555555555 16进制数format + 得 + 正:+format bank 得 1.33
5、 美元和美分format rat 得 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,即
6、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 语言的核
7、心, 几乎一切运算均是以对矩阵的操作为基础的.一、矩阵的建立1. 直接输入法 从键盘上输入矩阵是最方便、最常用的创建数值矩阵的方法,尤其适合较小的简单矩阵.规则如下: 输入矩阵时要以“ ”为其标识符号,矩阵的所有元素必须都在中括号内. 矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔. 矩阵大小不需要预先定义. 矩阵元素可以是运算表达式. 若 中无元素表示空矩阵. 例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
8、2 2.5 3 3.5 4 (2)截取指定矩阵中的部分生成新矩阵,如 B=A (1:2, : ) B= 1 2 3 4 5 6即矩阵B是例4中A矩阵的前两行生成.3. 外部文件读入法 以文件的形式存储,适合大型矩阵输入.读入形式 Load+文件名 Load 函数将会从文件名所指定的文件中读取数据,并将输入的数据赋给以文件名命名的变量,如果不给定文件名,则将自动认为 matlab.mat 文件为操作对象,如果该文件 在 MATLAB 搜索路径中不存在时,系统将会报错.4. 特殊矩阵的生成命令集7 1矩阵、零矩阵、单位矩阵和随机矩阵ones (n) 建立一个nn的1矩阵.ones (m , n)
9、建立一个mn的1矩阵.ones (size(A) 建立一个和矩阵A同样大小的1矩阵.zeros(n) 建立一个nn的0矩阵.zeros(m , n) 建立一个mn的0矩阵.zeros(size(A) 建立一个和矩阵A同样大小的0矩阵.eye(n) 建立一个nn 的单位矩阵.eye(m, n) 建立一个mn 的单位矩阵.eye(size(A) 建立一个和矩阵A同样大小的单位矩阵.rand 产生在01之间均匀分布的随机数;每调用一次给一个新的数值.rand + i*rand 产生一个复数随机数.rand(n) 产生一个nn的矩阵,其元素为01之间均匀分布的随机数.rand(m , n) 产生一个m
10、n的矩阵,其元素为01之间均匀分布的随机数.二、矩阵的运算MATLAB中的大多数运算可以直接对矩阵应用.除了算术运算+、*、/、外,还有用于转置和共轭的运算符(撇号 :实数时为转置,复数时为共轭转置,复数时转置为 .)、关系运算符和逻辑运算符.1. 除法 在MATLAB中,有两个矩阵除法的符号,左除 和右除/.如果A是一个非奇异方阵,那么A B和B / A对应A的逆与B的左乘和右乘,即分别等价于命令 i n v ( A ) *B和B* i n v ( A ). 2. 元素操作算术运算算术运算也可以元素与元素逐次进行.参与运算的矩阵维数要相同.如果运算是由一点进行的,那么这个运算实行的是元素方式
11、,称为数组运算或点运算.对于加法和减法,数组运算(点运算)和矩阵运算没有差别.数组运算(点运算)符是:+ . * . / . . 例5 A=1 2 3;4 5 6;7 8 9;B=ones(3); C=A.*BC= 1 2 3 4 5 6 7 8 93. 关系运算符MATLAB有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩阵中的每个元素与标量进行比较.关系运算符如下: 小于 大于 = 大于等于= = 等于 = 不等于关系运算符比较对应的元素,产生一个仅包含 1和0的具有相同维数的矩阵.其元素是:1 比较结果是真0 比较结果是假在一个表达式中,算术运算符优先级最高,其次是关
12、系运算符,最低级别是逻辑运算符.圆括号可以改变其顺序.4. 逻辑运算符在MATLAB中有四种逻辑运算符:& 与 ;| 或; 非;xor 异或;逻辑运算符的运算优先级最低.在一个表达式中,关系运算符和算术运算符的运算级别要高于逻辑运算符.x o r和o r之间的差别在于:表达式中至少有一个是真,那么 o r是真;x o r是表达式中有一个是真但不能两者均为真时才为真.运算符&和|比较两个相同维数的矩阵,它也能使一个标量与一个矩阵进行比较.逻辑运算符是按元素比较的.零元素表示逻辑值假,任何其他值的元素表示逻辑值真.其结果是一个包含1和0的矩阵.命令集8 逻辑运算符A & B 返回一个与A和B相同维
13、数的矩阵.在这个矩阵中, 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. 在计算机上,求下列表达式的值. ; ,其中; , 其中; ,其中; ,
14、其中.2. 完成下列操作,观察结果: a=1:5,b=(1:5) y=0:pi/4:pi x=(0:0.2:3),y=exp(-x).* sin(x) A=1 2 3;4 5 6;7 8 9B=1,2,3;4,5,6;7,8,9C=1 2 3 4 5 6, 7 8 9 3. 已知 , 求 AB-2A , AB-BA,A.*B,B.*A , .4.,求 .5,求 .6x = (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. 建
15、立向量 9. 完成下列命令,观察结果 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)+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=(c
16、os(abs(x+y)-sin(78*pi/180)/(x+abs(y)u = -0.3488 + 0.3286i2. 完成下列操作,观察结果: a=1:5,b=(1:5)a = 1 2 3 4 5b = 1 2 3 4 5 y=0:pi/4:piy = 0 0.7854 1.5708 2.3562 3.1416 x=(0:0.2:3),y=exp(-x).*sin(x)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.0000y =
17、 0 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=1 2 3;4 5 6;7 8 9A = 1 2 3 4 5 6 7 8 9 B=1,2,3;4,5,6;7,8,9B = 1 2 3 4 5 6 7 8 9 C=1 2 3 4 5 6, 7 8 9C = 1 2 3 4 5 6 7 8 9 A=sin(pi),2*cos(pi/3);5*pi,-exp(2)A = 0.0000 1.0000 15.7080 -7.38913
18、. 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 2 4 0 0 0 2 4 A*B-B*A,A.*B,B.*Aans = 4 4 0 5 -3 -1 -3 1 -1ans = 1 2 1 -1 3 -1 2 -1 4ans = 1 2 1 -1 3 -1 2 -1 4 inv(A)*B-inv(B)*Aans = Columns 1 through 2 3.7500 2.2500 -2.0000 -1.0000 -0.2500 1.2500 Column 3 1.2500 -2.0000 1.25004. x=2
19、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.0027i 1.9884 - 0.3696i 1.7706 - 1.0539i5. 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+003 * 0.9141 -0.2239 0.6321 0.0251 1.2080 2.7123 -2.6869 1.8707 1.1330 -0.2103 2.0281 0.1255
20、 1.4937 0.7293 -0.4552 1.6902ans = 1.0e+003 * 0.5290 0.1000 0.0006 0 1.6810 2.0250 4.2250 0.0250 1.0240 0.0250 0 1.0240 0.0360 0.0910 2.9160 0.0099ans = 1.0e+003 * 0.5290 0.1000 0.0006 0 1.6810 2.0250 4.2250 0.0250 1.0240 0.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 =
21、 14ans = 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 57完成下列操作并观察结果 ones(6),ones(5,6),ones(6,5)ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 zeros(4),zer
22、os(3,4),zeros(4,3)ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ans = 0 0 0 0 0 0 0 0 0 0 0 0ans = 0 0 0 0 0 0 0 0 0 0 0 0 eye(5),eye(4,5),eye(5,4)ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 x=rand+i*rand,A=
23、rand(3),B=rand(3,4)x = 0.8180 + 0.6602iA = Columns 1 through 2 0.3420 0.5341 0.2897 0.7271 0.3412 0.3093 Column 3 0.8385 0.5681 0.3704B = Columns 1 through 2 0.7027 0.6946 0.5466 0.6213 0.4449 0.7948 Columns 3 through 4 0.9568 0.1730 0.5226 0.9797 0.8801 0.2714 hilb(3),hilb(4),invhilb(3)ans = 1.0000
24、 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000ans = Columns 1 through 3 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 0.2500 0.2000 0.1667 Column 4 0.2500 0.2000 0.1667 0.1429ans = 9 -36 30 -36 192 -180 30 -180 180 x=1 2 3 4 5; y=5 4 3 2 1; T=toeplitz(x,y),S=toeplitz(x)War
25、ning: First element of input column does not match first element of input row. Column wins diagonal conflict. In toeplitz at 21T = 1 4 3 2 1 2 1 4 3 2 3 2 1 4 3 4 3 2 1 4 5 4 3 2 1S = 1 2 3 4 5 2 1 2 3 4 3 2 1 2 3 4 3 2 1 2 5 4 3 2 1 A=compan(x),B=compan(y)A = -2 -3 -4 -5 1 0 0 0 0 1 0 0 0 0 1 0B =
26、-0.8000 -0.6000 -0.4000 -0.2000 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 vander(x),vander(y)ans = 1 1 1 1 1 16 8 4 2 1 81 27 9 3 1 256 64 16 4 1 625 125 25 5 1ans = 625 125 25 5 1 256 64 16 4 1 81 27 9 3 1 16 8 4 2 1 1 1 1 1 1 C=ones(4),zeros(4);eye(4),rand(4)C = Columns 1 through 5 1.0000 1.0000 1.00
27、00 1.0000 0 1.0000 1.0000 1.0000 1.0000 0 1.0000 1.0000 1.0000 1.0000 0 1.0000 1.0000 1.0000 1.0000 0 1.0000 0 0 0 0.0099 0 1.0000 0 0 0.1389 0 0 1.0000 0 0.2028 0 0 0 1.0000 0.1987 Columns 6 through 8 0 0 0 0 0 0 0 0 0 0 0 0 0.6038 0.7468 0.4186 0.2722 0.4451 0.8462 0.1988 0.9318 0.5252 0.0153 0.4660 0.2026 C=ones(4),zeros(4);eye(4),rand(5)? Error using = horzcatAll matrices on a row in the bracketed expression must have the same number of rows.8. 建立向量 x=(1:3),y=(1:0.5:3),z=(4:-0.5
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1