《第2章MATLAB的数值计算ppt课件》由会员分享,可在线阅读,更多相关《第2章MATLAB的数值计算ppt课件(82页珍藏版)》请在金锄头文库上搜索。
1、第二章 数值运算,重点内容, 2.1变量及其操作 2.2数据特点及其类型 2.3 MATLAB矩阵及其运算 2.4 MATLAB多项式及其运算 2.5关系运算和逻辑运算 2.6线性方程组求解,2.1.1 变量命名规则,1) 变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符; 2) 变量名区分字母的大小写; 3) MATLAB提供的标准函数名以及命令名必须用小写字母。,2.1 变量及其操作,1)Abc,譬如:,%合法变量名,2)a_9,%合法变量名,3)3an,%非法变量名,4)m,n,%非法变量名,5)M与m是同一变量吗,%M与m属于不同变量,2.1.2 预定义变量,1)系
2、统本身定义的变量; 2)有特定的含义,应尽量避免对这些变量重新赋值; 3)若用户对预定义变量进行赋值,则该变量的值将被用户新赋的值临时覆盖。,!注意:预定义变量不能被clear命令删除。,MATLAB默认的预定义变量,2.1.3 赋值操作,MATLAB赋值语句有两种格式: (1) 变量=表达式 % 把表达式赋给变量 (2) 表达式 %把表达式赋给ans,注意: 一般地,运算结果在命令窗口中显示出来。如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。,例2.1 计算表达式的值,并将结果赋给变 量x,然后显示出结果。,输入命令: x=(5+cos(47*pi/180)
3、/(1+sqrt(7)-2*i) %计算表达式的值,2.1.4 内存变量的管理,who和whos这两个命令用于显示内存变量的信息,两者区别在于信息的简单和详细程度不同。 常用的调用格式: who(s) %显示内存中所有变量信息 who(s) var1 var2 %显示var1,var2的信息,内存变量的显示,1)clear命令用于删除MATLAB工作空间中的变量。 2)常用调用格式: clear (all) %清除工作空间中所有变量 clear var1 var2 %清除变量var1,var2,!注意:预定义变量不能被删除。,.内存变量的删除,1)利用MAT文件保存内存变量 2)调用格式: s
4、ave 文件名 变量名表 -append-ascii,1)将MAT文件中的变量载入到内存空间 2)调用格式: load 文件名 变量名表 -ascii,.内存变量的保存,.内存变量的载入,Abc=15, ab=25,比如:,save a1.mat Abc ab save a1.mat Abc ab -ascii load a1 load a1.mat a2,2.1.5 数据格式化输出,1)MATLAB以16位有效数字的“双精度” 进行运算和输出,默认情况下采用“form- at short g”输出5位有效数字。 2)用户可以用format命令设置或改变数据输出格式。,format命令格式:
5、format 格式符,format/format SHORT 通常保证小数点后四位有效,对大于1000的数,采用5位科学计数 format LONG 小数点后15位数字表示 format SHORT E 5位科学计数表示 format LONG E 15位科学计数表示,!注意:format命令只影响数据输出格式,而 不影响数据的计算和存储。,2.2 MATLAB数据特点及类型,2.2.1 MATLAB数据特点,矩阵(数组)是MATLAB最基本、最重要的数据对象; 向量可以看为是一行或一列的矩阵; 单个数据(标量)可以看成是11的特殊矩阵,1)数值数据 2)字符串数据(char) 3)结构体(S
6、tructure) 4)单元数组(cell),2.2.2 MATLAB数据类型,(1)带符号整型 (2)无符号整型 (3)数值单精度 (4)数值双精度,1)数值数据,!注意:数据的存储和计算均以双精度进行,(1) 字符串是用单撇号括起来的字符序列。,例如: Nanjing Institute of Technology ,特殊:若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。,2)字符串数据(char),例如: xian,(2)字符串是以ASCII码形式存储的;,(3) abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵;,调用格式为:eval(t)
7、其中t为字符串,作用:把字符串的内容作为对应的MATLAB语句来执行。,例如: t=pi; m=t,sin(t),cos(t); y=eval(m),(4) char函数把ASCII码矩阵转换为字符串矩阵;,(5) 与字符串有关的另一重要函数eval.,(1)结构矩阵的建立与引用,a.使用赋值语句:通过将数据赋给单独的字段来生成一个简单的11的结构数组。,例如:,Student.name=li lei; Student. ID=911 ; Student.age=23; Student,3)结构体(Structure),b.使用struct函数:可以用struct函数预分配一个结构数组。,例如
8、: Student=struct(name,li lei,ID,911 ,age,23),结构数组扩展与一般数组的扩展类似: Student(2)=struct(name,han meimei,ID,zt ,age,22),c.结构体矩阵 定义:矩阵的每一个元素是同一类型的结构体,例如:建立一个22的student矩阵 Student(1,1)=struct(name,li lei,ID,911 ,age,23) Student(1,2)=struct(name, zhang,ID, 100 ,age,20) Student(2,1)=struct(name, wang,ID,101 ,age
9、,21) Student(2,2)=struct(name, zhao,ID,102 ,age,22),(2)结构体嵌套,定义:结构体的字段可以是任何数据类型,当其字段类型为结构体或者是结构体数组时,就构成了结构体嵌套。,例如: Student=struct(name,li lei,qita, struct(height, 170 , weight,60, hometown, nanjing),(2)结构体矩阵数据访问与修改,结构体矩阵数据访问步骤: a.从结构体矩阵定位到要访问的结构体元素 b.通过结构体.字段访问对应结构的某个字段 c.若需要修改,则完成定位之后通过赋值语言进行修改,例如:
10、访问22的Student矩阵中的第一行第二列元素的name字段,并修改为zhang 输入命令:Student(1,2).name Student(1,2).name=zhang,4)单元数组,a.单元数组与一般数组的区别,一般数组的数据类型只能为一种,而对于单元数组,由cell组成,cell可以是任意类型数据,如:A(1,1)=1;A(1,2)= a,则A=1 97 B(1,1)= a;B(1,2)=98,则B=ab,注意:一般数组中,数据类型不一致时,由MATLAB自动完成转化,如果转换不成功,会报错,(1)通过赋值语句创建单元数组:,根据单元数组的赋值规则,直接对单元体进行赋值,创建单元体
11、数组,系统自动分配内存。,(2) cell函数预分配单元数组 :,通过使用cell函数,可以预分配指定大小的空单元数组。,例: A=cell(2,3);,b.创建单元数组,A1,1=1, 2,3;4 5 6; A1,2=li lei;,单元索引,A(1,1)=1,2,3;4 5 6; A(1,2)=li lei;,c.赋值方式,内容索引,A1,1=1, 2,3;4 5 6; A1,2=li lei;,d.单元数组访问,单元数组名(索引) 访问对应单元, 返回为cell 单元数组名索引 访问对应单元 中的数据,例: B=A1,1; C=A(1,1); whos,定义:矩阵是线形代数的基本运算单元
12、,通常矩阵是指含有M行N列数值的矩形结构; 元素:矩阵的元素可以是实数或虚数,进而将矩阵划分为实数矩阵和复数矩阵; 运算:加、减、乘、除、逆、转置、线形方程、特征值等。,2.3 MATLAB矩阵,2.3.1 矩阵构造方法,直接输入法 利用M文件建立矩阵 利用MATLAB函数建立矩阵 建立大矩阵,1)用 把所有矩阵元素括起来; 2)同一行的不同数据元素之间用空格或逗号分隔; 3)用分号(;)指定一行结束; 4)可分几行输入,用回车符代替分号; 5)数据元素可以是表达式。,直接输入法,例2.1 输入矩阵A、B的值。,A=1 2 3 4; 5 6 7 8; 9,10,11,12; 13 14 15
13、16,B=1,sqrt(25),9,13 2,6,10,7*2 3+sin(pi),7,11,15 4,abs(-8),12,16,方法1:直接输入矩阵A:,方法2:利用表达式输入矩阵B:,例2.2 利用M文件建立MYMAT矩阵。,1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵; 2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m); 3)运行该M文件,会自动建立一个名为MYMAT的矩阵,供以后使用。,.利用M文件建立矩阵,1) zeros:零矩阵; 格式: zeros(m,n) 2) ones:元素均为1; 格式: ones(m,n) 3) eye:单位阵; 格式
14、: eye(m,n) 4) rand:随机阵; 格式: rand(m,n) %产生元素服从01间均匀分布的随机矩阵; 5) randn:随机阵; 格式:randn (m,n) %产生元素服从均值为零、方差为1的正态分布随机矩阵,产生特殊矩阵的函数:,.利用MATLAB函数建立矩阵,zeros(m) %产生mm零矩阵 zeros(m,n) %产生mn零矩阵。 zeros(size(A) %产生与矩阵A同样大小的零 矩阵,调用格式:,例2.4 分别建立33、32和与矩阵A同样大小的零矩阵。,(1)建立一个33零矩阵:zeros(3); (2)建立一个32零矩阵:zeros(3,2); (3)建立与
15、矩阵A同样大小零矩阵:zeros(size(A),大矩阵可由方括号中的小矩阵建立起来。,例如: A=1 2 3;4 5 6;7 8 9; C=A,eye(size(A); ones(size(A),A,.建立大矩阵,相关函数,1.size(A) %给出矩阵A的行数和列数; 2.length(A)=max(size(A) % length(A)给出行数和列数中的较大者; 3.ndims(A) %给出A的维数; 4.reshape(A,m,n) %在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。,1)运算符为:“+” 和“-”; 2)两个矩阵具有相同的阶数或其中一个是标量的情况下可以
16、进行运算。,例2.5 计算CA+B,DAB,EA+3.其中A、B为例2.1中的两个矩阵。,使用规则:,.矩阵加减运算,2.3.2 矩阵运算,1)矩阵的乘法使用运算符“*” ; 2)只有当前一矩阵的列数和后一矩阵的行数相同或者是其中一个是标量的情况下才能进行运算。,例2.6:计算CAB,DA3,其中A、B为例2.1中的两个矩阵。,使用规则:,.矩阵乘法,1)矩阵除法使用运算符“”(左除)、/”(右除); 2)只有当前一矩阵的列数和后一矩阵的行数相同或者其中一个是标量的情况下才能进行运算。,使用规则:,说明:,1)A/B:A右除B; B A :A左除B; 2)如A是非奇异方阵,则AB和B/A运算可实现; 3)一般 A/B 不等于AB;原因? 4)区别:左除可以避免奇异矩阵的影响;右除运算速度慢一些。,.矩阵除法,ABinv(A)*B B/A=B*inv(A) A/B=A*inv(B) BA