




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/6/8,matlab,Page 1,2019/6/8,matlab,Page 1,第3章 Matlab语言的符号运算,【学习目标】 掌握基本符号运算 能够使用符号运算解决一般的微积分和方程求解问题。,2019/6/8,matlab,Page 2,2019/6/8,matlab,Page 2,第3章 Matlab语言的符号运算,2019/6/8,matlab,Page 3,3.1 基本符号运算,MATLAB自6.0版本以后,增加了符号数学工具箱(Symbolic Math Toolbox) 。它可以对符号表达式进行运算处理,大大扩展了MATLAB的应用范围。,符号计算是指对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。 与数值运算的区别: 数值运算中必须先对变量赋值,然后才能参与运算。 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。,2019/6/8,matlab,Page 4,3.1.1 符号对象的创建,在MATLAB中的符号计算主要是对符号对象进行操作的,在使用符号计算功能前,首先需要创建符号对象。本节主要介绍符号对象的创建,其中常用的符号对象主要包括符号常量和变量、符号表达式、符号矩阵。,1. 符号变量的创建,在MATLAB中创建符号常量和变量的函数为sym()和syms(),两函数的主要区别在于前者每次只能创建一个符号变量,而后者可以同时创建多个符号变量。,2019/6/8,matlab,Page 5,x = sym(x):创建符号变量x,无需对变量x赋值,在以后的运算中直接对符号变量x进行操作,返回的结果为带符号的表达式,而非数值结果。 x = sym(x,real):创建符号变量x,并设置其为实体型。 x = sym(x,unreal):创建符号变量x,并设置其为非实体型。,3.1.1 符号对象的创建,函数sym()的调用格式为:,2019/6/8,matlab,Page 6,函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分界符(),变量间用空格而不要用逗号分隔。,3.1.1 符号对象的创建,syms函数调用格式:,2019/6/8,matlab,Page 7,3.1.1 符号对象的创建, x=sym(x) y=sym(y),例:, syms x y, z=x*x+y*y z = x2+y2 a=5;b=3;c=a*a+b*b c = 34,2019/6/8,matlab,Page 8,3.1.1 符号对象的创建,2. 符号常量的创建,不含变量的符号叫符号常量。符号常量的定义也使用函数sym()。,例:, a=sym(1/5) a = 1/5,2019/6/8,matlab,Page 9,3.1.1 符号对象的创建,3. 符号表达式的创建,符号表达式为含有符号对象(符号常量、符号变量)的表达式,其创建方法如下: 1利用函数sym()直接创建 sym(A):其中A为字符串的表达式,必须被单引号引用。 2利用符号对象创建 符号表达式也可以通过创建的符号对象来实现,当把已定义的符号变量或者符号常量连接为表达式,即可完成符号表达式的创建。,2019/6/8,matlab,Page 10,3.1.1 符号对象的创建,例:,y1=sym(cos(x) y1 = cos(x) x=sym(x) x = x y2=cos(x) y2 = cos(x),2019/6/8,matlab,Page 11,3.1.1 符号对象的创建,4. 符号矩阵的创建,由符号对象构建的矩阵为符号矩阵,符号矩阵的格式与一般的数据矩阵类似,其创建方法如下。 利用函数sym()直接创建 函数sym()的输入为符号矩阵,矩阵各元素可以为符号常量、符号变量或者符号表达式,各元素的长度不要求一样长。, a=sym(x x/5;sinx y) a = x, x/5 sinx, y,2019/6/8,matlab,Page 12,3.1.2 符号运算,符号表达式的代数运算与数值运算类似,也可以通过“+”、“-”、“*”、“/”、“”等运算符来实现。, f=sym(x-2); g=sym(x2+x-6); z1=f+g z1 = 2*x-8+x2 z2=f-g z2 = 4-x2, z3=f*g z3 = (x-2)*(x2+x-6) z4=f/g z4 = (x-2)/(x2+x-6) z5=f2 z5 = (x-2)2,2019/6/8,matlab,Page 13,3.1.2 符号运算,符号矩阵的代数运算包括一般的加、减、乘、除等四则运算。符号矩阵的代数运算是把矩阵当作一个整体,按照代数运算的准则进行运算,其中的运算基本同数值矩阵的运算规则。, A=sym(x2 y;x-y x) A = x2, y x-y, x B=sym(x+3 x;x+y y) B = x+3, x x+y, y, C=A+B C = x2+x+3, x+y 2*x, x+y C=A*B C = x2*(x+3)+y*(x+y), x3+y2 (x-y)*(x+3)+x*(x+y), (x-y)*x+x*y,2019/6/8,matlab,Page 14, C=A./B C = x2/(x+3), y/x (x-y)/(x+y), x/y C=A/B C = -y*(x2-y-x)/(x2-3*y), (x3-x*y-3*y)/(x2-3*y) (y2+x2)/(x2-3*y), -x*(y+3)/(x2-3*y), C=A.2 C = x4, y2 (x-y)2, x2 C=A2 C = x4+y*(x-y), y*x2+x*y (x-y)*x2+x*(x-y), y*(x-y)+x2,3.1.2 符号运算,2019/6/8,matlab,Page 15,3.1.2 符号运算,符号表达式提取分子分母,当符号表达式为有理分式时,函数numden()可用于提取有理分式的分子和分母,其调用格式如下: N,D = numden(A):输入参数A为符号表达式,返回参数N和D分别为符号参数A的分子和分母。, a=sym(x-1)/(b+x) a = (x-1)/(b+x) d,n=numden(a) d = x-1 n = b+x,2019/6/8,matlab,Page 16,3.1.3 符号微积分,符号极限,在MATLAB中计算符号极限的函数为limit(),其调用格式如下。 limit(F,x,a):计算符号表达式F在xa时的极限值。 limit(F,a):计算符号表达式F默认符号自变量趋于a时的极限值。 limit(F):计算符号表达式F默认符号自变量趋于0时的极限值。 limit(F,x,a,right):计算符号表达式F在xa时的右极限值。 limit(F,x,a,left) :计算符号表达式F在xa时的左极限值。,2019/6/8,matlab,Page 17, f2=sym(1/sin(x) f2 = 1/sin(x) limit(f2,x,0,left) ans = -inf, F1=sym(cos(x) F1 = cos(x) limit(F1,x,0) ans = 1,3.1.3 符号微积分,2019/6/8,matlab,Page 18,3.1.3 符号微积分,符号微分,函数diff()可用于实现符号微分,其调用格式如下。 Y = diff(F):对符号函数F的默认符号变量进行一阶微分; Y = diff(F,t):对符号函数F的符号变量t进行一阶微分; Y = diff(F,t,n):对符号函数F的符号变量t进行n阶微分;,p=sym(a*x2+b*x); diff(p) %对默认变量x求微分 diff(p,a) %对指定变量a求微分 diff(p,2) %对默认变量x求二阶微分,2019/6/8,matlab,Page 19,3.1.3 符号微积分,符号积分,函数int()可用于符号积分,其调用格式如下。 R = int(S):计算符号函数S对默认的自变量符号的不定积分。 R = int(S,v):计算符号函数S对自变量符号v的不定积分。 R = int(S,a,b):计算符号函数S对默认的自变量符号在a,b上的定积分值。 R = int(S,v,a,b) :计算符号函数S对自变量符号v在a,b上的定积分值。,2019/6/8,matlab,Page 20,P=sym(a*x2+b*x); int(p) %对默认变量x求积分 int(p,a) %对指定变量a求积分 int(p,-2,2) %对默认变量x求从-2到2定积分,3.1.3 符号微积分,符号积分,2019/6/8,matlab,Page 21,3.1.3 符号微积分,符号级数,求无穷级数的和需要符号表达式求和函数symsum,其调用格式为: r = symsum(s):计算符号表达式s对默认的自变量符号v在0,v-1范围内的级数和。 r = symsum(s,v):计算符号表达式s对自变量符号v在0,v-1范围内的级数和。 r = symsum(s,a,b):计算符号表达式s对默认的自变量符号在a,b范围内的级数和。 r = symsum(s,v,a,b):计算符号表达式s对自变量符号v在a,b范围内的级数和。,2019/6/8,matlab,Page 22, s=sym(sin(x) s = sin(x) r=symsum(s,1,3) r = sin(1)+sin(2)+sin(3),3.1.3 符号微积分,符号级数,2019/6/8,matlab,Page 23,3.1.3 符号微积分,泰勒级数,求泰勒级数的展开式需要函数taylaor,其调用格式为: r = taylor(s):计算符号函数s对的泰勒级数展开项,默认为五项,自变量为默认。 r = taylor(s,n,v):计算自变量v的n阶泰勒级数展开项。, sym x ans = x r1=taylor(sin(x) r1 = x-1/6*x3+1/120*x5,2019/6/8,matlab,Page 24,3.1.4 符号方程求解,代数方程求解,在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为: solve(s):求解符号表达式s的代数方程,求解变量为默认变量。 solve(s,v):求解符号表达式s的代数方程,求解变量为v。 solve(s1,s2,sn,v1,v2,vn):求解符号表达式s1,s2,sn组成的代数方程组,求解变量分别v1,v2,vn。,2019/6/8,matlab,Page 25,3.1.4 符号方程求解,代数方程求解,例:求解代数方程, y=solve(3*x2+5*x+3) y = -5/6+1/6*i*11(1/2) -5/6-1/6*i*11(1/2),求代数方程组, x,y=solve(x+y-5,x-2*y-7) x = 17/3 y = -2/3,2019/6/8,matlab,Page 26,3.1.4 符号方程求解,微分方程求解,在MATLAB中,用大写字母D表示导数。例如,Dy表示y,D2y表示y,Dy(0)=5表示y(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y+y+y-x+5=0。符号常微分方程求解可以通过函数dsolve来实现,其调用格式为: dsolve(e,c,v) 该函数求解常微分方程e在初值条件c下的特解。参数v描述方程中的自变量,省略时按缺省原则处理,若没有给出初值条件c,则求方程的通解。 dsolve在求常微分方程组时的调用格式为: dsolve(e1,e2,en,c1,cn,v1,vn) 该函数求解常微分方程组e1,en在初值条件c1,cn下的特解,若不给出初值条件,则求方程组的通解,v1,vn给出求解变量。,2019/6/8,matlab,Page 27,3.1.4 符号方程求解,微分方程求解,求解微分方程:, y=dsolve(D2y-3Dy+y=0) y = 3+C1*sin(t)+C2*cos(t),2019/6/8,matlab,Page 28,3.2 符号运算用于控制理论计算,例1:已知函数y=sin(t-/6),求其对时间t的导数,并展开泰勒级数的前3项。,syms w t y=sin(w*t-pi/6); y1=diff(y,t) y2=taylor(y,3,t), y1 = sin(w*t+1/3*pi)*w y2 = -1/2+1/2*3(1/2)*w*t+1/4*w2*t2,2019/6/8,matlab,Page 29,3.2 符号运算用于控制理论计算,例2:求下列极限,syms x a y=(x*exp(sin(x)+1-2*(exp(tan(x)-1)/(x+a); z=limit(y,x,a), z = (1/2*a*exp(sin(a)+3/2-exp(tan(a)/a,2019/6/8,matlab,Page 30,例3:计算二重不定积分,syms x y f=x*exp(-x*y); z=int(int(f,x),y), z = 1/y*exp(-x*y),3.2 符号运算用于控制理论计算,2019/6/8,matlab,Page 31,例4. f = ax2+bx+c 求解, f=sym(a*x2+b*x+c) solve(f) ans = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2),计算机 格式,一般格式,3.2 符号运算用于控制理论计算,2019/6/8,matlab,Page 32,例5. 解方程组 x+y+z=1 x-y+z=2 2x-y-z=1,x,y,z=solve(x+y+z=1,x-y+z=2,2*x-y-z=1) x = 2/3 y = -1/2 z = 5/6,3.2 符号运算用于控制理论计算,2019/6/8,matlab,Page 33,例6, y=dsolve(D2y+2*Dy+2*y=0,Dy(0)=0,y(0)=1,x) y = exp(-x)*sin(x)+exp(-x)*cos(x),3.2 符号运算用于控制理论计算,2019/6/8,matlab,Page 34,3.2 符号运算用于控制理论计算,控制理论中经常用到的积分变换有:傅里叶变换、拉普拉斯变换和z变换,这三种变换与反变换的函数如下:,ztrans(f) Z变换 iztrans(f) 反Z变换 laplace(f) 拉氏变换 ilaplace(f) 反拉氏变换 fourier(f) 傅里叶变换 ifourier(f) 反傅里叶变换,2019/6/8,matlab,Page 35,3.2 符号运算用于控制理论计算,例7 计算y=x2的拉普拉斯变换及其逆变换。,sym x; y=x2; f=laplace(y) f = 4/9/s, f1=ilaplace(f) f1 = 4/9,2019/6/8,matlab,Page 36,上机,1. 求出 的分子、分母,2.求下列极限,2019/6/8,matlab,Page 37,上机,3、求积分,4、求y+ytgx=cosx的通解。,5、解微分方程组。,2019/6/8,matlab,Page 38,6、求sin(w*x+pi/3)的一阶导数、二阶导数、不定积分。,上机,2019/6/8,matlab,Page 39,程序结构及流程控制,MATLAB与一般程序设计的高级语言类似,程序机构可以分为顺序结构、循环结构和条件结构。,顺序结构,顺序结构是按照代码书写的先后顺序执行,是最常用的结构,一般的程序中都会有顺序结构的成分。,例:输入x,y的值,并将它们的值互换后输出。,2019/6/8,matlab,Page 40,x=3; y=5; z=x; x=y; y=z; x y,程序结构及流程控制,2019/6/8,matlab,Page 41,程序结构及流程控制,条件结构,条件结构可用于在一定条件下执行相应的代码,通过条件流程控制语句执行代码。,1if语句 在MATLAB中,if语句有3种格式。 (1) 单分支if语句: if 条件 语句组 end,当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。,2019/6/8,matlab,Page 42,(2) 双分支if语句: if 条件 语句组1 else 语句组2 end 当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。,程序结构及流程控制,2019/6/8,matlab,Page 43,(3) 多分支if语句: if 条件1 语句组1 elseif 条件2 语句组2 elseif 条件m 语句组m else 语句组n end 语句用于实现多分支选择结构。,程序结构及流程控制,2019/6/8,matlab,Page 44,计算分段函数的值。 y=1 x0 y=-1 x=0,x=0; if x0 y=1 else y=-1 end,程序结构及流程控制,2019/6/8,matlab,Page 45,计算分段函数的值。 y=1 x0 y=0 x=0 y=-1 x0 自己编写程序,程序结构及流程控制,2019/6/8,matlab,Page 46,某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣 5000price 14%折扣 输入所售商品的价格,求其实际销售价格。 提示:用x表示销售价格,y表示实际销售价格 自己编写程序。,程序结构及流程控制,2019/6/8,matlab,Page 47,程序结构及流程控制,2. switch语句,多分支语句的条件判断也可以使用函数switch,与if多分支语句相比,switch在判断变量单一,而判断条件多时使用比较方便。其格式如下:,Switch 表达式 Case 表达式1 语句组1 Case表达式2 语句组2 Case 表达式m 语句组m,Otherwise 语句组m+1 end,2019/6/8,matlab,Page 48,例:对于一个给定的百分数成绩,输出相应的等级成绩。,grade=input(请输入考试成绩:) switch round(grade/10) case 9,10 disp(成绩优秀); case 8,9 disp(成绩良好); case 7,8 disp(成绩中等); case 6,7 disp(成绩及格);,otherwise disp(不及格); end,程序结构及流程控制,2019/6/8,matlab,Page 49,循环控制结构,循环结构用于重复的执行某一段代码,通过循环流程控制语句控制程序的执行。,1for语句 for语句的格式为: for 循环变量=初始值:增量:结束值 循环体语句 end 步长为1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学人教部编版忆读书教学设计及反思
- 铺无菌盘操作流程
- 家电配件采购合同
- 中介服务佣金合同(2篇)
- 小学语文人教部编版三年级下册13 花钟集体备课教案
- 公共设施维护安全与环境保护措施
- 山东省郯城县七年级生物上册 2.1.3 动物细胞教学设计 (新版)新人教版
- 船舶制造设备完善及试运转安全措施
- 家庭教育与新课程标准的契合心得体会
- 房屋合同的法律意见书
- 2023年赤峰龙韵城市建设有限公司招聘笔试题库及答案解析
- (人工智能导论)课件
- 专利申请培训课件
- DPtechIPS2000系列入侵防御系统培训胶片课件
- 竞争性谈判二次报价单
- 危大工程巡视检查记录
- (房屋建筑部分)工程建设标准强制性条文2023年版
- 空气自动监测站运维技术服务合同模版
- (完整)康复医学考试题(含答案)
- 延期还款申请表
- 江苏省地图矢量PPT模板(可编辑)
评论
0/150
提交评论