《MATLAB的符号运算 (2).ppt》由会员分享,可在线阅读,更多相关《MATLAB的符号运算 (2).ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 MATLAB的符号运算v3.1 符号对象与符号表达式 v3.2 符号表达式的运算v3.3 符号表达式的操作及转换v3.4 符号矩阵v3.5 符号微积分v3.6 积分变换 v3.7 符号方程的求解 3.1符号对象与符号表达式 3.1.1 符号对象的生成 1建立符号变量和符号常量(1)符号常量的建立符号常量是不含变量的符号表达式。sym函数的一般调用形式sym(常量)%创建符号常量sym(常量,参数)%把常量按某种格式转换为符号常量 (2)符号变量的建立符号变量就是含有变量的符号表达式。syms函数的一般调用格式为:syms 符号变量名1 符号变量名2 符号变量名n用这种格式定义符号变量时
2、不要在变量名上加字符串分界符(),变量间用空格而不要用逗号分隔。2.建立符号表达式符号表达式就是代表数字、函数和变量的MATLAB字符串或字符串数组,它不要求变量要有预先定义的值。符号表达式包含符号函数和符号方程,其中符号函数没有等号,而符号方程必须带有等号。在MATLAB中建立符号表达式主要有一下三种方式:(1)用单引号建立符号表达式(2)用sym建立符号表达式(3)使用已经定义的符号变量来组成符号表达式3.2 符号表达式的运算符号运算与数值运算的区别主要有以下几点:vA 传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采用计算机硬件提供的8位浮点表示法,因此每一次
3、运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差。符号运算不需要进行数值运算,不会出现截断误差,因此符号运算是非常准确的。vB符号运算可以得出完全的封闭解或任意精度的数值解。vC符号运算的时间较长,而数值型运算速度快。v3.2.1 提取分子分母numden函数的调用形式如下:n,d=numden(a)提取符号表达式a的分子与分母,并分别将其存放在n与d中n=numden(a)提取符号表达式a的分子与分母,但只把分子存放在n中例 提取符号表达式 的分子和分母v3.2.2 符号表达式的基本代数运算符号表达式的加、减、乘、除四则运算及幂运算等基本的代数运算,与矩阵的数值运算几乎
4、完全一样。其中,符号表达式的加、减、乘、除运算可分别有函数symadd、symsub、symmul、symdiv来实现,也可与矩阵的数值运算一样,用“”、“”、“”、“”符号进行运算,而符号表达式的幂运算也可以由函数sympow来实现,也可以由幂运算符“”来实现。例 符号表达式f=2x2+3x+4与g=5x+6的代数运算。3.3 符号表达式的操作及转换v3.3.1 符号表达式中自由变量的确定自由变量的确定原则A 小写字母i和j不能作为自由变量。B 符号表达式中如果有多个字符变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距
5、离,则在x后面的优先。C 大写字母比所有的小写字母都靠后。v如果我们无法确定表达式中的自由变量,我们可以使用MATLAB提供的findsym函数来确定,该函数的一般调用形式为vfindsym(EXPR,n)%确定自由符号变量v说明:EXPR可以是符号表达式或符号矩阵;n为按顺序得出符号变量的个数,当n省略时,则不按顺序得出EXPR中所有的符号变量。例 使用matlab指令得出 的符号变量v3.3.2 符号表达式的化简当通过MATLAB的符号函数运算生成的符号表达式难于看懂时,可以通过MATLAB的符号数学工具箱中提供的函数,来对符号表达式进行化简,把它化成易于看懂的形式。这方面的函数主要有:p
6、retty、collect、expand、horner、factor、simplify、simple。一般来说同一个数学函数可以表示成三种,如v多项式形式的表达方式:f(x)=x3+6x2+11x-6 v因式形式的表达方式:f(x)=(x-1)(x-2)(x-3)v嵌套形式的表达方式:f(x)=x(x(x-6)+11)-6 1.pretty函数化简 (常用的书写方式显示化简)2.collect函数化简函数化简 合并表达式当有多个符号变量,可以指定按某个符号变量来合并同类项。3.expand函数函数 展开表达式展开表达式给出相应的符号表达式形式。给出相应的符号表达式形式。4.horner函数函数
7、 嵌套表达式嵌套表达式给出符号表达式的嵌套形式。给出符号表达式的嵌套形式。5.factor函数函数 因式分解因式分解给出符号表达式的因式形式。给出符号表达式的因式形式。6.simplify函数函数 简化表达式简化表达式 等式的恒等替换等式的恒等替换例 利用三角函数来简化符号表达式cos2x-sin2x。7.simple函数函数 最简表达式最简表达式寻求包含最少数目字符的表达式简化形式。寻求包含最少数目字符的表达式简化形式。利用利用simple简化符号表达式简化符号表达式Cos2x+sin2x。cos2x-sin2x。v3.3.3 符号表达式的替换subs(s)%用给定值替换符号表达式用给定值替
8、换符号表达式s中的所有变量中的所有变量subs(s,new)%用用new替换符号表达式替换符号表达式s中的自由变量中的自由变量subs(s,old,new)%用用new替换符号表达式替换符号表达式s中的中的old变变量量例 用subs函数对符号表达式(x+y)2+3(x+y)+5进行替换。v3.3.4 符号数值任意精度控制和运算在MATLAB的符号运算工具箱(Symbolic Math Toolbox)中共包含3种算术运算:vA 数值类型 matlab的浮点算术运算vB 有理数类型 精确符号运算vC vpa类型 任意精度算术运算任意精度的VPA型运算可以使用digits和vpa命令来实现。di
9、gits(n)%设定默认的精度v说明:n为所期望的有效位数。digits函数可以改变默认的有效位数来改变精度,随后的每个进行Maple函数的计算都以新精度为准。v3.3.5 符号与数值间的转换 1.将符号表达式转换成数值表达式将符号表达式转换成数值表达式主要是通过函数numeric或eval来实现2.将数值转换成符号表达式 将数值转换成符号表达式主要是通过函数sym来实现。3.符号表达式与多项式的转换 构成多项式的符号表达式f(x)可以与多项式系数构成的行向量进行相互转换,MATLAB提供了函数sym2poly和poly2sym实现相互转换。v3.3.6 求反函数和复合函数1.求反函数finv
10、erse(f,v)2.求复合函数compose(f,g,x,z)3.4 符号矩阵v3.4.1 符号矩阵的生成1 使用sym 符号矩阵可通过函数sym来生成。符号矩阵的元素是任何不带等号的符号表达式,各符号表达式的长度可以不同;符号矩阵中,以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定的是不同行的元素。2.用字符串直接创建矩阵v模仿matlab数值矩阵的创建方法v需保证同一列中各元素字符串有相同的长度v3.4.2 符号矩阵的运算 1.符号矩阵的四则运算 在MATLAB中,进行符号运算的四则运算非常方便。实际上,它与数值矩阵的四则运算完全相同,这大大地方便了用户的操作。符号表达
11、式的加、减、乘、除运算可分别有函数symadd、symsub、symmul、symdiv来实现,也可与矩阵的数值运算一样,用“”、“”、“”、“”符号进行运算,而符号表达式的幂运算也可以由函数sympow来实现,也可以由幂运算符“”来实现。2.符号矩阵的其他一些基本运算(1)符号矩阵的转置运算(transpose)(2)符号矩阵的行列式运算(determ或det)(3)符号矩阵的求逆运算(inv)(4)符号矩阵的特征值、特征向量运算vE=eig(X)返回方阵X的特征值vV,D=eig(X)返回方阵特征值和特征向量矩阵vV,D=eigensys(A)和eig的第二种调用方式相同3.5 符号微积分
12、 v3.5.1 符号极限 Limit函数v3.5.2 符号级数 求级数和 symsum(s,x,a,b)说明:x为自变量,x省略则默认为对自由变量求和;s为符号表达式;a,b为参数x的取值范围。例 求级数 和1+x+x2+xk+的和v3.5.2 符号微分diff(s):没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。diff(s,v):以v为自变量,对符号表达式s求一阶导数。diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。diff(s,v,n):以v为自变量,对符号表达式s求n阶导数。例 已知f(x)ax2+
13、bx+c,求f(x)的微分。diff还可以用于对数组中的元素进行逐项求差值。v3.5.3 符号积分int(f)%对findsym函数返回的独立变量求不定积分,f为符号表达式int(f,t)%求符号变量t的不定积分int(f,t,a,b)%求符号变量t的积分int(f,t,m,n)%求符号变量t的积分说明:t为符号变量,当t省略则为默认自由变量;a和b为数值,a,b为积分区间;m和n为符号对象,m,n为积分区间例 求积分 和3.6 积分变换v3.6.1 傅立叶变换1.使用fourier函数fourier的一般调用形式为Ffourier(f,t,w)说明:返回结果F是符号变量w的函数,当参数w省略
14、,默认返回结果为w的函数;f为t的函数,当参数t省略,默认自由变量为x。2.使用ifourierifourier主要用于求傅立叶逆变换,它的一般调用形式为f=ifourier(F,w,t)说明:ifourier函数的用法与fourier函数相同。v3.6.2 拉普拉斯变换1.拉普拉斯正变换 F=laplace(f,t,s)说明:返回结果F为s的函数,当参数s省略,返回结果F默认为s的函数;f为t的函数,当参数t省略,默认自由变量为t。2.Laplace逆变换 filaplace(F,s,t)3.7 符号方程的求解 3.7.1 符号代数方程的求解vsolve(s):求解符号表达式s的代数方程,求
15、解变量为默认变量。vsolve(s,v):求解符号表达式s的代数方程,求解变量为v。vsolve(s1,s2,sn,v1,v2,vn):求解符号表达式s1,s2,sn组成的代数方程组,求解变量分别v1,v2,vn。v说明:s可以是含等号的符号表达式的方程,也可以是不含等号的符号表达式,但所指的仍是令s=0的方程;当参数v省略时,默认为方程中的自由变量;其输出结果为结构数组类型。例 求方程ax2+bx+c=0和sinx=0的解。求三元非线性方程组 的解v3.7.2 符号常微分方程dsolve(eq,con,v)dsolve(eq1,eq2,con1,con2,v1,v2)说明:说明:eq为微分方程;为微分方程;con是微分初始条件,可省是微分初始条件,可省略;略;v为指定自由变量,省略时则默认为为指定自由变量,省略时则默认为x或或t为自为自由变量;输出结果为结构数组类型。由变量;输出结果为结构数组类型。