您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Matlab的关系运算、逻辑运算和符号计算
第3讲Matlab的关系、逻辑运算与符号计算本讲要点:1.非数、空数组2.关系运算3.逻辑运算4.符号计算一、“非数”和“空”数组..............................................................................11、非数NaN..............................................................................................................12、“空”数组...........................................................................................................3二、运算符.......................................................................................................61、算数运算符............................................................................................................62、关系运算................................................................................................................63、逻辑运算符............................................................................................................8三、MATLAB的符号计算..............................................................................111、sym函数..............................................................................................................122、syms函数.............................................................................................................143、符号表达式中变量的确定:findsym.................................................................154、符号表达式与数值表达式的转换......................................................................175、符号极限:limit..................................................................................................176、符号微分与差分:diff........................................................................................187、符号积分:int......................................................................................................208、符号代数方程求解:solve.................................................................................21一、“非数”和“空”数组1、非数NaN(1)非数的产生和性质按IEEE规定,-000,,,等运算都会产生非数(Notanumber)。该非数在Matlab中用NaN或nan记述。NaN具有以下性质:NaN参与运算所得的结果也是NaN,即具有传递性。非数没有“大小”概念,因此不能比较两个非数的大小。(2)非数的功用真实记述-000,,,运算的结果。数据统计中,很多用Nan替代缺失数据。避免可能因-000,,,运算而造成程序执行的中断。在测量数据处理中,标识非正常点。【例1】非数的产生和性质演示。本例演示:运算中如何产生非数;在运算过程中的传递;非数如何判断。(1)非数的产生cleara=0/0,b=0*log(0),c=inf-inf%不同表达式之间用逗号隔开时,结果仍然照常显示;若用分号隔开时,结果不会输出a=NaNb=NaNc=NaN(2)非数的传递性cleara=0/00*asin(a)a=NaNans=NaNans=NaN(3)非数的属性判断cleara=0/0class(a)%数据类型归属isnan(a)%正确判断非数与否a=NaNans=doubleans=12、“空”数组“空”数组是Matlab为操作和表述需要而专门设计的一种数组。二维“空”数组,用一对方括号表示。至于其他高维数组,只要数组某维长度为0或若干维长度均为0,则该数组就是“空”数组。说明:“空”数组与全零数组不同“空”数组不是“虚无”,而是确实存在的用isempty可以判定一个数组是否为空“空”数组在运算中不具备传递性【例2】关于“空”数组的算例。(1)创建“空”数组的几种方法cleara=[]b=ones(2,0)c=zeros(2,0)d=eye(2,0)e=rand(2,3,0,4)disp('各数组的维度判断')%disp函数用于将引号中的字符原样输出size(a)size(b)size(c)size(d)size(e)a=[]b=Emptymatrix:2-by-0c=Emptymatrix:2-by-0d=Emptymatrix:2-by-0e=Emptyarray:2-by-3-by-0-by-4各数组的维度判断ans=00ans=20ans=20ans=20ans=2304(2)“空”数组的属性cleara=[]class(a)%“空”的数据类别isnumeric(a)%是数值数组类吗isempty(a)%判定是否为“空”数组a=[]ans=doubleans=1ans=1cleara=[];whicha%变量a是什么ndims(a)%数组a的维数,ndims与size、length函数的关系%ndims:用于计算数组是几维的,比如标量是1维,矩阵是2维%size:用于计算数组各个维度的大小,比如,二维数组由多少行,多少列%legnth:用于计算数组的最大维度,相当于max(size)size(a)%a数组的大小length(a)aisavariable.ans=2ans=00ans=0(3)“空”数组用于子数组的删除和大数组的大小收缩clearA=reshape(-4:5,2,5)%reshape改变矩阵的维度A(:,[2,4])=[]A=-4-2024-3-1135A=-404-315二、运算符1、算数运算符加(+)、减(-)、乘(*)、幂(^)、左除(\)、右除(/)等。2、关系运算Matlab中的规则:在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”。所有关系表达式和逻辑表达式的计算结果,即输出为0和1。其中,“0”表示“假”,“1”表示“真”。逻辑数组是一种特殊的数值数组。表1Matlab中的关系运算符关系操作符说明小于=小于或等于大于=大于或等于==等于~=不等于在实数情况下,Matlab关系操作符比较对象:(1)两个同样大小的数组,数组A中的每个元素与数组B中的每个元素比较;(2)一个数组和一个标量,数组A中的每一个元素与标量B进行比较;在复数情况下,(1)运算符、=、、=仅对参加比较的量的实部进行比较;(2)运算符==、~=同时对参加比较的量的实部和虚部进行比较。clearA=1:2:10%什么意思?步长多少?B=10-Abig=A4%找出A中大于4的元素,结果是1表明为真,结果是0表明为假ab=(A==B)%找出A中的元素等于B中的元素A=13579B=97531big=00111ab=00100【注意】:=和==不同:==比较两个变量是否相等,相等返回1,否则返回0;而=表示赋值。find(A==B)与A==B的区别?3、逻辑运算符表2Matlab中的逻辑运算符逻辑操作符说明&与(Element-wiseLogicalAND)|或(Element-wiseLogicalOR)~非(优先级最高)&&逻辑与(Short-CircuitLogicalAND)||逻辑或(Short-CircuitLogicalOR)clearA=1:2:10aa=(A2)&(A6)%当A中的元素大于2并且小于6时,返回1ab=(A7)|(A6)%当A中的元素大于7或者小于6时,返回1A=13579aa=01100ab=11101cleara=3;b=0;a&ba&&ba|ba||bans=0ans=0ans=1ans=1【注意】:Matlab中运算符的优先级顺序:(1)算数运算符、关系运算符、逻辑运算符,从高到低;(2)如果要改变运算的优先级,可以在表达式中加入圆括号“()”。&、|和&&、||的区别与联系:(1)&、|操作符可以比较两个标量或两个同阶矩阵;而&&、||只能够比较两个标量;(2)&&和||被称为&和|的shortcircuit形式;(3)A&&B:首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,不需要再判断B的值,就可以直接判断整个表达式的值为假;而A&B:首先判断A的逻辑值、再判断B的逻辑值,然后进行与运算。(4)A||B:首先判断A的逻辑值,如果A的值为真,就可以判断整个表达式的值为真,不需要再判断B的值,就可以直接判断整个表达式的值为真;而A|B:首先判断A的逻辑值、再判断B的逻辑值,然后进行或运算。三、Matlab的符号计算所谓符号计算是指:解算数学表达式、方程时,不是在离散化的数值点上进行,而是凭借一系列恒等式和数学定理,通过推理和演绎,获得解析结果。这种计算建立在数值完全准确表达和推演严格解析的基础之上,因此所得结果完全准确。数值计算与符号计算间的最重要区别在于:数值计算一定存在截断误差,且在计算过程中不断传播,而产生累积误差;符号计算是在完全准确情况下进行的,不产生累积误差。符号计算的准确性以降低计算速度和增加内存需求为代价。符号表达式是代表数字、函数、算式和变量的Matlab字符串或字符串数组。不要求变量有预先确定的值。Matlab在内部把符号表达式表示成字符串,以与数字变量或运算相区别。表3符号表达式及其Matlab表示符号表达式Matlab表达式mx81sym('1/(8*x^m)')xy21y=sym('1/sqrt(2*x)'))2sin()cos(2xxsym('cos(x^2)-sin(2*x)')dcbaMM=sym('[a,b;c,d]')dxxxba1f3f=int(sym('x^3/sqrt(1-x)'),'x','a','b')%方法一:先定义符号变量,再定义符号函数,然后求积分函数clearsymsxaby=x^3/sqrt(1-x)f=int(y,x,a,b)%int是求积分的函数%四个输入参数:被积表
本文标题:Matlab的关系运算、逻辑运算和符号计算
链接地址:https://www.777doc.com/doc-4245361 .html