您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 第2章MATLAB的数值计算
1)MATLAB变量及其操作2)MATLAB数据特点以及其类型3)矩阵、多项式构造方法及相关操作重点内容§2.1变量及其操作§2.2数据特点及其类型§2.3MATLAB矩阵及其运算§2.4MATLAB多项式及其运算§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)有特定的含义,应尽量避免对这些变量重新赋值;3)若用户对预定义变量进行赋值,则该变量的值将被用户新赋的值临时覆盖。!!注意:预定义变量不能被clear命令删除。预定义变量含义预定义变量含义ans计算结果默认变量名NaN或nan非数,如∞/∞,0/0,∞-∞eps机器零阀值Inf或inf无穷大如1/0nargin函数的输入变量数目i或j虚单元i=j=nargout函数的输出变量数目pi圆周率realmin最小的正实数realmax最大的正实数1-•MATLAB默认的预定义变量2.1.3赋值操作MATLAB赋值语句有两种格式:(1)变量=表达式%把表达式赋给变量(2)表达式%把表达式赋给ans注意:一般地,运算结果在命令窗口中显示出来。如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。例2.1计算表达式的值,并将结果赋给变量x,然后显示出结果。输入命令:x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i)%计算表达式的值2.1.4内存变量的管理who和whos这两个命令用于显示内存变量的信息,两者区别在于信息的简单和详细程度不同。常用的调用格式:who(s)%显示内存中所有变量信息who(s)var1var2%显示var1,var2的信息I.内存变量的显示1)clear命令用于删除MATLAB工作空间中的变量。2)常用调用格式:clear(all)%清除工作空间中所有变量clearvar1var2%清除变量var1,var2!!注意:预定义变量不能被删除。Ⅱ.内存变量的删除1)利用MAT文件保存内存变量2)调用格式:save文件名[变量名表][-append][-ascii]1)将MAT文件中的变量载入到内存空间2)调用格式:load文件名[变量名表][-ascii]Ⅲ.内存变量的保存Ⅳ.内存变量的载入Abc=15,ab=25比如:savea1.matAbcabsavea1.matAbcab-asciiloada1loada1.mata22.1.5数据格式化输出1)MATLAB以16位有效数字的“双精度”进行运算和输出,默认情况下采用“form-atshortg”输出5位有效数字。2)用户可以用format命令设置或改变数据输出格式。format命令格式:format格式符format/formatSHORT通常保证小数点后四位有效,对大于1000的数,采用5位科学计数formatLONG小数点后15位数字表示formatSHORTE5位科学计数表示formatLONGE15位科学计数表示!!注意:format命令只影响数据输出格式,而不影响数据的计算和存储。2.2MATLAB数据特点及类型2.2.1MATLAB数据特点矩阵(数组)是MATLAB最基本、最重要的数据对象;向量可以看为是一行或一列的矩阵;单个数据(标量)可以看成是1×1的特殊矩阵1)数值数据2)字符串数据(char)3)结构体(Structure)4)单元数组(cell)2.2.2MATLAB数据类型(1)带符号整型(2)无符号整型(3)数值单精度(4)数值双精度1)数值数据!!注意:数据的存储和计算均以双精度进行(1)字符串是用单撇号括起来的字符序列。例如:'NanjingInstituteofTechnology'特殊:若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。2)字符串数据(char)例如:'xi''an'(2)字符串是以ASCII码形式存储的;(3)abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵;调用格式为:eval(t)其中t为字符串作用:把字符串的内容作为对应的MATLAB语句来执行。例如:t=pi;m='[t,sin(t),cos(t)]';y=eval(m)(4)char函数把ASCII码矩阵转换为字符串矩阵;(5)与字符串有关的另一重要函数eval.(1)结构矩阵的建立与引用a.使用赋值语句:通过将数据赋给单独的字段来生成一个简单的1×1的结构数组。例如:Student.name=lilei';Student.ID='911';Student.age=23;Student3)结构体(Structure)b.使用struct函数:可以用struct函数预分配一个结构数组。例如:Student=struct('name','lilei','ID','911','age',23)结构数组扩展与一般数组的扩展类似:Student(2)=struct('name','hanmeimei','ID','zt','age',22)c.结构体矩阵定义:矩阵的每一个元素是同一类型的结构体例如:建立一个2×2的student矩阵Student(1,1)=struct('name','lilei','ID','911','age',23)Student(1,2)=struct('name','zhang','ID','100','age',20)Student(2,1)=struct('name','wang','ID',‘101','age',21)Student(2,2)=struct('name',‘zhao','ID',‘102','age',22)(2)结构体嵌套定义:结构体的字段可以是任何数据类型,当其字段类型为结构体或者是结构体数组时,就构成了结构体嵌套。例如:Student=struct('name','lilei','qita',struct('height',170,'weight',60,'hometown','nanjing'))(2)结构体矩阵数据访问与修改结构体矩阵数据访问步骤:a.从结构体矩阵定位到要访问的结构体元素b.通过结构体.字段访问对应结构的某个字段c.若需要修改,则完成定位之后通过赋值语言进行修改例如:访问2×2的Student矩阵中的第一行第二列元素的name字段,并修改为zhang输入命令:Student(1,2).nameStudent(1,2).name='zhang’4)单元数组a.单元数组与一般数组的区别一般数组的数据类型只能为一种,而对于单元数组,由cell组成,cell可以是任意类型数据如:A(1,1)=1;A(1,2)='a',则A=[197]B(1,1)='a';B(1,2)=98,则B=[ab]注意:一般数组中,数据类型不一致时,由MATLAB自动完成转化,如果转换不成功,会报错(1)通过赋值语句创建单元数组:根据单元数组的赋值规则,直接对单元体进行赋值,创建单元体数组,系统自动分配内存。(2)cell函数预分配单元数组:通过使用cell函数,可以预分配指定大小的空单元数组。例:A=cell(2,3);b.创建单元数组A{1,1}=[1,2,3;456];A{1,2}='lilei';单元索引A(1,1)={[1,2,3;456]};A(1,2)={'lilei'};c.赋值方式内容索引A{1,1}=[1,2,3;456];A{1,2}='lilei';d.单元数组访问单元数组名(索引)访问对应单元,返回为cell单元数组名{索引}访问对应单元中的数据例:B=A{1,1};C=A(1,1);whos定义:矩阵是线形代数的基本运算单元,通常矩阵是指含有M行N列数值的矩形结构;元素:矩阵的元素可以是实数或虚数,进而将矩阵划分为实数矩阵和复数矩阵;运算:加、减、乘、除、逆、转置、线形方程、特征值等。2.3MATLAB矩阵2.3.1矩阵构造方法I.直接输入法II.利用M文件建立矩阵III.利用MATLAB函数建立矩阵IV.建立大矩阵1)用[]把所有矩阵元素括起来;2)同一行的不同数据元素之间用空格或逗号分隔;3)用分号(;)指定一行结束;4)可分几行输入,用回车符代替分号;5)数据元素可以是表达式。I.直接输入法例2.1输入矩阵A、B的值。A=[1234;5678;9,10,11,12;13141516]B=[1,sqrt(25),9,132,6,10,7*23+sin(pi),7,11,154,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:单位阵;格式:eye(m,n)4)rand:随机阵;格式:rand(m,n)%产生元素服从0~1间均匀分布的随机矩阵;5)randn:随机阵;格式:randn(m,n)%产生元素服从均值为零、方差为1的正态分布随机矩阵产生特殊矩阵的函数:Ⅲ.利用MATLAB函数建立矩阵zeros(m)%产生m×m零矩阵zeros(m,n)%产生m×n零矩阵。zeros(size(A))%产生与矩阵A同样大小的零矩阵调用格式:例2.4分别建立3×3、3×2和与矩阵A同样大小的零矩阵。(1)建立一个3×3零矩阵:zeros(3);(2)建立一个3×2零矩阵:zeros(3,2);(3)建立与矩阵A同样大小零矩阵:zeros(size(A))大矩阵可由方括号中的小矩阵建立起来。例如:A=[123;456;789];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重新排成m×n的二维矩阵。1)运算符为:“+”和“-”;2)两个矩阵具有相同的阶数或其中一个是标量的情况下可以进行运算。例2.5计算C=A+B,D=A-B,E=A+3.其中A、B为例2.1中的两个矩阵。使用规则:Ⅰ.矩阵加减运算2.3.2矩阵运算1)矩阵的乘法使用运算符“*”;2)只有当前一矩阵的列数和后一矩阵的行数相同或者是其中一个是标量的情况下才能进行运算。例2.6:计算C=A×B,D=A×3,其中A、B为例2.1中的两个矩阵。使用规则:Ⅱ.矩阵乘法1)矩阵除法使用运算符“\”(左除)、/”(右除);2)只有当前一矩阵的列数和后一矩阵的行数相同或者其中一个是标量的情况下才能进行运算。使用规则:说明:1)A/B:A右除B;B\A:A左除B;2)如A是非奇异方阵,则A\B和B/A运算可实现;3)一般A/B不等于A\B;原因??4)区别:左除可以避免奇异矩阵的影响;右除运算速度慢一些。Ⅲ.矩阵除法A\B=inv(A)*BB/A=B*inv(A)A/B=A*inv(B)B\A=inv(B)*A规则:例2.7:计算A\B和A/B。其中A、B为例2.1中的两个矩阵。说明:x=A\B是方程A*x=b的解x=B/A是方程x*A=b的解使用规则:Ⅳ.矩阵乘方矩阵的乘方使用的运算符为“^”例2.8:如果A是一个方阵,P是一个
本文标题:第2章MATLAB的数值计算
链接地址:https://www.777doc.com/doc-2246732 .html