文档详情

电子科技大学matlab2符号运算

仙***
实名认证
店铺
PPT
304.50KB
约44页
文档ID:167950767
电子科技大学matlab2符号运算_第1页
1/44

1.符号表达式的建立符号表达式的建立 2.符号表达式的代数运算符号表达式的代数运算 3.符号表达式的操作和转换符号表达式的操作和转换 4.符号极限、微积分和级数求和符号极限、微积分和级数求和 5.符号积分变换符号积分变换 6.符号方程的求解符号方程的求解MATLAB符号运算符号运算符号运算是对未赋值的符号对象符号运算是对未赋值的符号对象(可以是常数、变可以是常数、变量、表达式量、表达式)进行运算和处理进行运算和处理MATLAB具有符号具有符号数学工具箱数学工具箱(Symbolic Math Toolbox)一、符号表达式的建立 创建符号常量创建符号常量 符号常量是不含变量的符号表达式,用符号常量是不含变量的符号表达式,用sym命令来创建命令来创建符号常量符号常量语法:语法:sym(常量常量)%创建符号常量创建符号常量 sym命令也可以把数值转换成某种格式的符号常量命令也可以把数值转换成某种格式的符号常量语法:语法:sym(常量常量,参数参数)%把常量按某种格式转换为符号常量把常量按某种格式转换为符号常量 说明:参数可以选择为说明:参数可以选择为d、f、e或或r 四种格式,也可四种格式,也可省略,其作用如表所示。

省略,其作用如表所示参数参数作用作用d返回最接近的十进制数值返回最接近的十进制数值(默认位数为默认位数为32位位)f返回最接近的带有机器浮点误差的有理值返回最接近的带有机器浮点误差的有理值 r返回该符号值最接近的有理数型返回该符号值最接近的有理数型(为系统默认方式为系统默认方式),可,可表示为表示为p/q、p*q、10q、pi/q、2q和和sqrt(p)形式之一形式之一 e返回最接近的带有机器浮点误差的有理值返回最接近的带有机器浮点误差的有理值 例例1 创建数值常量和符号常量创建数值常量和符号常量a1=2*sqrt(5)+pi%创建数值常量创建数值常量 a1=7.6137 a2=sym(2*sqrt(5)+pi)%创建符号表达式创建符号表达式 a2=2*sqrt(5)+pi a3=sym(2*sqrt(5)+pi,d)%按最接近的十进按最接近的十进制浮点数表示符号常量制浮点数表示符号常量 a3=7.6137286085893727261009189533070 创建符号变量和表达式创建符号变量和表达式 创建符号变量和符号表达式可以使用创建符号变量和符号表达式可以使用sym和和syms命令。

命令1.使用使用sym命令创建符号变量和表达式命令创建符号变量和表达式 语法:语法:sym(变量变量,参数参数)%把变量定义为符号对象把变量定义为符号对象 说明:说明:参数用来设置限定符号变量的数学特性,参数用来设置限定符号变量的数学特性,可以选择为可以选择为positive、real和和unreal,positive 表示为表示为“正、实正、实”符号变量,符号变量,real表示为表示为“实实”符号变量,符号变量,unreal 表示为表示为“非实非实”符号变量如果不限定则参数可省略符号变量如果不限定则参数可省略例例2 创建符号变量,用参数设置其特性创建符号变量,用参数设置其特性syms x y real%创建实数符号变量创建实数符号变量 z=x+i*y;%创建创建z为复数符号变量为复数符号变量 real(z)%复数复数z的实部是实数的实部是实数x ans=x sym(x,unreal);%清除符号变量的实数特性清除符号变量的实数特性 real(z)%复数复数z的实部的实部 ans=1/2*x+1/2*conj(x)程序分析:程序分析:设置设置x、y为实数型变量,可以确定为实数型变量,可以确定z的的实部和虚部。

实部和虚部2.使用使用syms命令创建符号变量和符号表达式命令创建符号变量和符号表达式语法:语法:syms(arg1,arg2,参数参数)%把字符变量定义为符把字符变量定义为符号变量号变量 syms arg1 arg2,参数参数%把字符变量定义为符把字符变量定义为符号变量的简洁形式号变量的简洁形式说明:说明:syms用来创建多个符号变量,这两种方式创建的符号对象是用来创建多个符号变量,这两种方式创建的符号对象是相同的参数设置和前面的相同的参数设置和前面的sym命令相同,省略时符号表达式直接命令相同,省略时符号表达式直接由各符号变量组成由各符号变量组成例例2续续 使用使用syms命令创建符号变量和符号表达式命令创建符号变量和符号表达式syms a b c x%创建多个符号变量创建多个符号变量 f2=a*x2+b*x+c%创建符号表达式创建符号表达式 f2=a*x2+b*x+c syms(a,b,c,x)f3=a*x2+b*x+c;%创建符号表达式创建符号表达式 程序分析:程序分析:既创建了符号变量既创建了符号变量a、b、c、x,又创建了符号表达式,又创建了符号表达式,f2、f3和和f1符号表达式相同。

符号表达式相同符号矩阵符号矩阵用用sym和和syms命令也可以创建符号矩阵命令也可以创建符号矩阵例如,使用例如,使用syms命令创建相同的符号矩阵:命令创建相同的符号矩阵:syms a b c d A=a b;c d A=a,b c,d 例例3 比较符号矩阵与字符串矩阵的不同比较符号矩阵与字符串矩阵的不同A=sym(a,b;c,d)%创建符号矩阵创建符号矩阵 A=a,b c,d B=a,b;c,d%创建字符串矩阵创建字符串矩阵 B=a,b;c,d二、符号表达式的代数运算符号运算与数值运算的区别主要有以下几点:符号运算与数值运算的区别主要有以下几点:1.传统的数值型运算因为要受到计算机所保留的有效位数的传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采用计算机硬件提供的限制,它的内部表示法总是采用计算机硬件提供的8位浮位浮点表示法,因此每一次运算都会有一定的截断误差,重复点表示法,因此每一次运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差符号运算的多次数值运算就可能会造成很大的累积误差符号运算不需要进行数值运算,不会出现截断误差,因此符号运算不需要进行数值运算,不会出现截断误差,因此符号运算是非常准确的。

是非常准确的2.符号运算可以得出完全的封闭解或任意精度的数值解符号运算可以得出完全的封闭解或任意精度的数值解3.符号运算的时间较长,而数值型运算速度快符号运算的时间较长,而数值型运算速度快符号表达式的代数运算符号表达式的代数运算1.符号运算中的运算符符号运算中的运算符(1)基本运算符基本运算符 运算符运算符“”,“”,“*”,“”,“/”,“”分分别实现符号矩阵的加、减、乘、左除、右除、求幂运算别实现符号矩阵的加、减、乘、左除、右除、求幂运算运算符运算符“.*”,“./”,“.”,“.”分别实现符号数组的分别实现符号数组的乘、除、求幂,即数组间元素与元素的运算乘、除、求幂,即数组间元素与元素的运算运算符运算符“”,“.”分别实现符号矩阵的共轭转置、非共分别实现符号矩阵的共轭转置、非共轭转置2)关系运算符关系运算符 在符号对象的比较中,没有在符号对象的比较中,没有“大于大于”、“大于等于大于等于”、“小于小于”、“小于等于小于等于”的概念,而只有是否的概念,而只有是否“等于等于”的的概念运算符运算符“=”、“=”分别对运算符两边的符号对象进分别对运算符两边的符号对象进行行“相等相等”、“不等不等”的比较。

当为的比较当为“真真”时,比较结果时,比较结果用用1表示;当为表示;当为“假假”时,比较结果则用时,比较结果则用0表示2.函数运算函数运算(1)三角函数和双曲函数三角函数和双曲函数三角函数包括三角函数包括sin、cos、tan;双曲函数包括;双曲函数包括sinh、cosh、tanh;三;三角反函数除了角反函数除了atan2函数仅能用于数值计算外,其余的函数仅能用于数值计算外,其余的asin、acos、atan函数在符号运算中与数值计算的使用方法相同函数在符号运算中与数值计算的使用方法相同2)指数和对数函数指数和对数函数指数函数指数函数sqrt、exp、expm的使用方法与数值计算的完全相同;对的使用方法与数值计算的完全相同;对数函数在符号计算中只有自然对数数函数在符号计算中只有自然对数log(表示表示ln),而没有数值计算,而没有数值计算中的中的log2和和log103)复数函数复数函数复数的共轭复数的共轭conj、求实部、求实部real、求虚部、求虚部imag和求模和求模abs函数与数值函数与数值计算中的使用方法相同但注意,在符号计算中,计算中的使用方法相同但注意,在符号计算中,MATLAB没有没有提供求相角的命令。

提供求相角的命令4)矩阵代数命令矩阵代数命令MATLAB提供的常用矩阵代数命令有提供的常用矩阵代数命令有diag,triu,tril,inv,det,rank,poly,expm,eig等,它们的用法几乎与数值计算中的情等,它们的用法几乎与数值计算中的情况完全一样况完全一样例例4 求矩阵的行列式值、非共轭转置和特征值求矩阵的行列式值、非共轭转置和特征值syms a11 a12 a21 a22A=a11 a12;a21 a22%创建符号矩阵创建符号矩阵 A=a11,a12 a21,a22 det(A)%计算行列式计算行列式 ans=a11*a22-a12*a21 A.%计算非共轭转置计算非共轭转置 ans=a11,a21 a12,a22 eig(A)%计算特征值计算特征值 ans=1/2*a11+1/2*a22+1/2*(a112-2*a11*a22+a222+4*a12*a21)(1/2)1/2*a11+1/2*a22-1/2*(a112-2*a11*a22+a222+4*a12*a21)(1/2)例例5 符号表达式符号表达式f=2x2+3x+4与与g=5x+6的代数运的代数运算f=sym(2*x2+3*x+4)f=2*x2+3*x+4 g=sym(5*x+6)g=5*x+6 f+g%符号表达式相加符号表达式相加 ans=2*x2+8*x+10 f*g%符号表达式相乘符号表达式相乘 ans=(2*x2+3*x+4)*(5*x+6)符号数值任意精度控制和运算符号数值任意精度控制和运算1.Symbolic Math Toolbox中的算术运算方式中的算术运算方式 在在Symbolic Math Toolbox中有三种不同的算术运算:中有三种不同的算术运算:(1)数值型:数值型:MATLAB的浮点运算。

的浮点运算2)有理数型:有理数型:Maple的精确符号运算的精确符号运算7.7之前的版本,之前的版本,7.7之后的版本之后的版本MuPAD)(3)VPA型:型:Maple的任意精度运算的任意精度运算2.任意精度控制任意精度控制任意精度的任意精度的VPA型运算可以使用型运算可以使用digits和和vpa命令来实现命令来实现语法:语法:digits(n)%设定默认的精度设定默认的精度 说明:说明:n为所期望的有效位数为所期望的有效位数digits函数可以改变默认的有效位数来函数可以改变默认的有效位数来改变精度,随后的每个进行改变精度,随后的每个进行Maple函数的计算都以新精度为准当有函数的计算都以新精度为准当有效位数增加时,计算时间和占用的内存也增加命令效位数增加时,计算时间和占用的内存也增加命令“digits”用来显用来显示默认的有效位数,默认为示默认的有效位数,默认为32位语法:语法:S=vpa(s,n)%将将s表示为表示为n位有效位数的符号对象位有效位数的符号对象说明:说明:s可以是数值对象或符号对象,但计算的结果可以是数值对象或符号对象,但计算的结果S一定是符号对象一定是符号对象;当参数;当参数n省略时则以给定的省略时则以给定的digits指定精度。

指定精度vpa命令只对指定的符命令只对指定的符号对象号对象s按新精度进行计算,并以同样的精度显示计算结果,但并不按新精度进行计算,并以同样的精度显示计算结果,但并不改变全局的改变全局的digits参数3.Symbolic Math Toolbox中的三种运算方式的比较中的三种运算方式的比较例例6 用三种运算方式表达式比较用三种运算方式表达式比较2/3的结果a1=2/3%数值型数值型 a1=0.6667 a2=sym(2/3)%有理数型有理数型 a2=2/3 a3=vpa(2/3,32)%VPA型型 a3=0.66666666666666666666666666666667 程序分析:程序分析:(1)三种运算方式中数值型运算的速度最快;三种运算方式中数值型运算的速度最快;(2)有理数型符号运算的计算时间和占用内存是最大的,有理数型符号运算的计算时间和占用内存是最大的,产生的结果是非常准确的;产生的结果是非常准确的;(3)VPA型的任意精度符号运型的任意精度符号运算比较灵活,可以设置任意有效精度,当保留的有效位数算比较灵活,可以设置任意有效精度,当保留的有效位数增加时,每次运算的时间和使用的内存也会增加。

增加时,每次运算的时间和使用的内存也会增加符号对象与数值对象的转换符号对象与数值对象的转换1.将数值对象转换为符号对象将数值对象转换为符号对象sym命令命令可以把数值型对象转换成有理数型符号对象,可以把数值型对象转换成有理数型符号对象,vpa命令命令可以将数值型对象转换为任意精度的可以将数值型对象转换为任意精度的VPA型符型符号对象2.将符号对象转换为数值对象将符号对象转换为数值对象使用使用double、numeric函数可以将有理数型和函数可以将有理数型和VPA型符型符号对象转换成数值对象号对象转换成数值对象语法:语法:N=double(S)%将符号变量将符号变量S转换为数值变量转换为数值变量N N=numeric(S)%将符号变量将符号变量S转换为数值变量转换为数值变量N例例7 将符号变量与数值变量进行转换将符号变量与数值变量进行转换cleara1=sym(2*sqrt(5)+pi)a1=2*sqrt(5)+pi b1=double(a1)%转换为数值变量转换为数值变量 b1=7.6137 a2=vpa(sym(2*sqrt(5)+pi),32)a2=7.6137286085893726312809907207421 注意:这注意:这是一数值是一数值么?么?三、符号表达式的操作和转换 符号表达式中自由变量的确定符号表达式中自由变量的确定 1.自由变量的确定原则自由变量的确定原则 MATLAB将基于以下原则选择一个自由变量:将基于以下原则选择一个自由变量:(1)小写字母小写字母i和和j不能作为自由变量。

不能作为自由变量2)符号表达式中如果有多个字符变量,则按照以下顺序符号表达式中如果有多个字符变量,则按照以下顺序选择自由变量:首先选择选择自由变量:首先选择x作为自由变量;如果没有作为自由变量;如果没有x,则,则选择在字母顺序中最接近选择在字母顺序中最接近x的字符变量;如果与的字符变量;如果与x相同距离相同距离,则在,则在x后面的优先后面的优先3)大写字母比所有的小写字母都靠后大写字母比所有的小写字母都靠后2.findsym函数函数如果不确定符号表达式中的自由符号变量,可以用如果不确定符号表达式中的自由符号变量,可以用findsym函数来自函数来自动确定语法:语法:findsym(EXPR,n)%确定自由符号变量确定自由符号变量说明:说明:EXPR可以是符号表达式或符号矩阵;可以是符号表达式或符号矩阵;n为按顺序得出符号变为按顺序得出符号变量的个数,当量的个数,当n省略时,则不按顺序得出省略时,则不按顺序得出EXPR中所有的符号变量中所有的符号变量例例8 得出符号表达式中的符号变量得出符号表达式中的符号变量f=sym(a*x2+b*x+c)f=a*x2+b*x+c findsym(f)%得出所有的符号变量得出所有的符号变量 ans=a,b,c,x g=sym(sin(z)+cos(v)g=sin(z)+cos(v)findsym(g,1)%得出第一个符号变量得出第一个符号变量 ans=z 程序说明:程序说明:符号变量符号变量z和和v距离距离x相同,以在相同,以在x后面的后面的z为自由符号变量。

为自由符号变量符号表达式的化简符号表达式的化简 同一个数学函数的符号表达式的可以表示成三种形式,例同一个数学函数的符号表达式的可以表示成三种形式,例如以下的如以下的f(x)就可以分别表示为:就可以分别表示为:(1)多项式形式的表达方式:多项式形式的表达方式:f(x)=x3+6x2+11x-6 (2)因式形式的表达方式:因式形式的表达方式:f(x)=(x-1)(x-2)(x-3)(3)嵌套形式的表达方式:嵌套形式的表达方式:f(x)=x(x(x-6)+11)-6 例例9 三种形式的符号表达式的表示三种形式的符号表达式的表示f=sym(x3-6*x2+11*x-6)%多项式形式多项式形式 f=x3-6*x2+11*x-6 g=sym(x-1)*(x-2)*(x-3)%因式形式因式形式 g=(x-1)*(x-2)*(x-3)h=sym(x*(x*(x-6)+11)-6)%嵌套形式嵌套形式 h=x*(x*(x-6)+11)-6MATLAB提供了提供了pretty,collect,expand,horner,factor,simplify和和simple函数,可以对符号表达式进行化简函数,可以对符号表达式进行化简。

pretty()函数函数给出排版形式的输出结果给出排版形式的输出结果collect()函数函数将符号表达式表示为关于符号变量的合并同类项多项式将符号表达式表示为关于符号变量的合并同类项多项式expand()函数函数将符号表达式展开成多项式形式将符号表达式展开成多项式形式horner()函数函数将符号表达式写成嵌套的形式将符号表达式写成嵌套的形式factor()函数函数将符号表达式写成因式的形式将符号表达式写成因式的形式simplify()函数函数利用各种形式的代数恒等式对符号表达式进行化简,包利用各种形式的代数恒等式对符号表达式进行化简,包括求和、分解、积分、幂、三角、指数和对数函数等来括求和、分解、积分、幂、三角、指数和对数函数等来化简表达式化简表达式simple()函数函数给出多种化简形式,并寻求包含最少数目字符的表达式给出多种化简形式,并寻求包含最少数目字符的表达式 符号表达式的替换符号表达式的替换1.subexpr函数函数 语法:语法:subexpr(s,s1)%用符号变量用符号变量s1来置换来置换s中的子表达式中的子表达式 subexpr函数对子表达式是自动寻找的,只有比较长的子表达式才被函数对子表达式是自动寻找的,只有比较长的子表达式才被置换,比较短的子表达式,即使重复出现多次,也不被置换。

置换,比较短的子表达式,即使重复出现多次,也不被置换例例10 用用subexpr函数使的特征值表达式简洁函数使的特征值表达式简洁syms a b c d x s=eig(a b;c d)%计算特征值计算特征值 s=1/2*a+1/2*d+1/2*(a2-2*a*d+d2+4*b*c)(1/2)1/2*a+1/2*d-1/2*(a2-2*a*d+d2+4*b*c)(1/2)subexpr(s,x)%用用x替换子表达式替换子表达式 ans=1/2*a+1/2*d+1/2*(a2-2*a*d+d2+4*b*c)(1/2)1/2*a+1/2*d-1/2*(a2-2*a*d+d2+4*b*c)(1/2)2.subs函数函数subs函数可用来进行对符号表达式中符号变量的替换函数可用来进行对符号表达式中符号变量的替换语法:语法:subs(s)%用给定值替换符号表达式用给定值替换符号表达式s中的所有变量中的所有变量 subs(s,new)%用用new替换符号表达式替换符号表达式s中的自由变量中的自由变量 subs(s,old,new)%用用new替换符号表达式替换符号表达式s中的中的old变量变量例例10续续 用用subs函数对符号表达式函数对符号表达式(x+y)2+3(x+y)+5进行替换。

进行替换f=sym(x+y)2+3*(x+y)+5)%创建符号表达式创建符号表达式 f=(x+y)2+3*(x+y)+5 x=5;f1=subs(f)%用工作空间的给定值替换用工作空间的给定值替换x f1=(5+y)2+20+3*y f2=subs(f,x+y,s)%用用s替换替换x+y f2=(s)2+3*(s)+5 f3=subs(f,x+y,5)%用常数用常数5替换替换x+y f3=45 f4=subs(f,x,z)%用用z替换替换x f4=(z)+y)2+3*(z)+y)+5 求反函数和复合函数求反函数和复合函数在在MATLAB中中finverse函数可以求得符号函数的反函数函数可以求得符号函数的反函数语法:语法:finverse(f,v)%对指定自变量对指定自变量v的函数的函数f(v)求反函数求反函数说明:说明:当当v省略,则对默认的自由符号变量求反函数省略,则对默认的自由符号变量求反函数1.求反函数求反函数例例11 求求tex的反函数的反函数f=sym(t*ex)%原函数原函数 f=t*ex g=finverse(f)%对默认自由变量求反函数对默认自由变量求反函数 g=log(x/t)/log(e)g=finverse(f,t)%对对t求反函数求反函数 g=t/(ex)程序分析:程序分析:如果先定义如果先定义t为符号变量,则参数为符号变量,则参数t的单引号可去掉:的单引号可去掉:syms t g=finverse(f,t)2.求复合函数求复合函数运用函数运用函数compose可以求符号函数可以求符号函数f(x)和和g(y)的复合函的复合函数。

数语法:语法:compose(f,g)%求求f(x)和和g(y)的复合函数的复合函数f(g(y)compose(f,g,z)%求求f(x)和和g(y)的复合函数的复合函数f(g(z)例例11续续 计算计算tex与与ay2+by+c的复合函数的复合函数f=sym(t*ex);%创建符号表达式创建符号表达式 g=sym(a*y2+b*y+c);%创建符号表达式创建符号表达式 h1=compose(f,g)%计算计算f(g(x)h1=t*e(a*y2+b*y+c)h2=compose(g,f)%计算计算g(f(x)h2=a*t2*(ex)2+b*t*ex+c h3=compose(f,g,z)%计算计算f(g(z)h3=t*e(a*z2+b*z+c)符号表达式的转换符号表达式的转换1.符号表达式与多项式的转换符号表达式与多项式的转换 构成多项式的符号表达式构成多项式的符号表达式f(x)可以与多项式系数构成的行向量进行相可以与多项式系数构成的行向量进行相互转换,互转换,MATLAB提供了函数提供了函数sym2poly和和poly2sym实现相互转换实现相互转换1)sym2poly函数函数,用来将构成多项式的符号表达式转换为按降幂排列用来将构成多项式的符号表达式转换为按降幂排列的行向量,并只能对含有一个变量的符号表达式进行转换。

的行向量,并只能对含有一个变量的符号表达式进行转换例例12 将符号表达式将符号表达式2x+3x2+1转换为行向量转换为行向量f=sym(2*x+3*x2+1)f=2*x+3*x2+1 sym2poly(f)%转换为按降幂排列的行向量转换为按降幂排列的行向量 ans=3 2 1 (2)poly2sym函数与函数与sym2poly函数相反,用来将按降幂排列的行向量函数相反,用来将按降幂排列的行向量转换为符号表达式转换为符号表达式例例12续续 将行向量转换为符号表达式将行向量转换为符号表达式g=poly2sym(1 3 2)%默认默认x为符号变量的符号表达式为符号变量的符号表达式 g=x2+3*x+2 g=poly2sym(1 3 2,sym(y)%y为符号变量的符号表达式为符号变量的符号表达式 g=y2+3*y+22.提取分子和分母提取分子和分母如果符号表达式是一个有理分式如果符号表达式是一个有理分式(两个多项式之比两个多项式之比),可以,可以利用利用numden函数来提取分子或分母,还可以进行通分函数来提取分子或分母,还可以进行通分语法:语法:n,d=numden(f)说明:说明:n为分子;为分子;d为分母;为分母;f为有理分式。

为有理分式例例13 用numden函数来提取符号表达式和的分子、分母f1=sym(1/(s2+3*s+2)f1=1/(s2+3*s+2)f2=sym(1/s2+3*s+2)f2=1/s2+3*s+2 n1,d1=numden(f1)n1=1d1=s2+3*s+2 n2,d2=numden(f2)n2=1+3*s3+2*s2d2=s2四、符号极限、微积分和级数求和假定符号表达式的极限存在,假定符号表达式的极限存在,Symbolic Math Toolbox提供了直接求表达式极限的函数提供了直接求表达式极限的函数limit,函数,函数limit的基本的基本用法如表所示用法如表所示表达式表达式函数格式函数格式说明说明Limf(x)x0limt(f)对对x求趋近于求趋近于0的极限的极限 Limf(x)x alimt(f,x,a)对对x求趋近于求趋近于a的极限,当左右极的极限,当左右极限不相等时极限不存在限不相等时极限不存在Limf(x)x a-limt(f,x,a,left)对对x求左趋近于求左趋近于a的极限的极限 Limf(x)x a+limt(f,x,a,right)对对x求右趋近于求右趋近于a的极限的极限 例例14 分别求分别求1/x在在0处从两边趋近、从左边趋近和从右边趋近的三处从两边趋近、从左边趋近和从右边趋近的三个极限值。

个极限值f=sym(1/x)f=1/x limit(f)%对对x求趋近于求趋近于0的极限的极限 ans=NaN limit(f,x,0)%对对x求趋近于求趋近于0的极限的极限 ans=NaN limit(f,x,0,left)%左趋近于左趋近于0 ans=-inf limit(f,x,0,right)%右趋近于右趋近于0 ans=inf 程序分析:程序分析:当左右极限不相等,表达式的极限不存在为当左右极限不相等,表达式的极限不存在为NaN采用极限方法也可以用来求函数的导数:采用极限方法也可以用来求函数的导数:例例14续续 求函数求函数cos(x)的导数syms t x limit(cos(x+t)-cos(x)/t,t,0)ans=-sin(x)符号微分符号微分函数函数diff是用来求符号表达式的微分是用来求符号表达式的微分语法:语法:diff(f)%求求f对自由变量的一阶微分对自由变量的一阶微分 diff(f,t)%求求f对符号变量对符号变量t的一阶微分的一阶微分 diff(f,n)%求求f对自由变量的对自由变量的n阶微分阶微分 diff(f,t,n)%求求f对符号变量对符号变量t的的n阶微分阶微分例例15 已知已知f(x)ax2+bx+c,求,求f(x)的微分。

的微分f=sym(a*x2+b*x+c)f=a*x2+b*x+c diff(f)%对默认自由变量对默认自由变量x求一阶微分求一阶微分 ans=2*a*x+b diff(f,a)%对符号变量对符号变量a求一阶微分求一阶微分 ans=x2 diff(f,x,2)%对符号变量对符号变量x求二阶微分求二阶微分 ans=2*a diff(f,3)%对默认自由变量对默认自由变量x求三阶微分求三阶微分 ans=0 符号积分符号积分 有定积分和不定积分,运用函数有定积分和不定积分,运用函数int可以求得积分符号表达可以求得积分符号表达式的积分式的积分语法:语法: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为积分为积分区间;与符号微分相比,符号积分复杂得多因为函数的区间;与符号微分相比,符号积分复杂得多。

因为函数的积分有时可能不存在,即使存在,也可能限于很多条件,积分有时可能不存在,即使存在,也可能限于很多条件,MATLAB无法顺利得出当无法顺利得出当MATLAB不能找到积分时,不能找到积分时,它将给出警告提示并返回该函数的原表达式它将给出警告提示并返回该函数的原表达式例例16 求求cos(x)的积分和二重积分的积分和二重积分f=sym(cos(x);int(f)%求不定积分求不定积分 ans=sin(x)int(f,0,pi/3)%求定积分求定积分 ans=1/2*3(1/2)int(f,a,b)%求定积分求定积分 ans=sin(b)-sin(a)int(int(f)%求多重积分求多重积分 ans=-cos(x)符号级数符号级数1.symsum函数函数语法:语法:symsum(s,x,a,b)%计算表达式计算表达式s的级数和的级数和说明:说明:x为自变量,为自变量,x省略则默认为对自由变量求和;省略则默认为对自由变量求和;s为符为符号表达式;号表达式;a,b为参数为参数x的取值范围的取值范围例例17 求级数求级数 和和1+x+x2+xk+的和syms x k s1=symsum(1/k2,1,10)%计算级数的前计算级数的前10项和项和 s1=1968329/1270080 s2=symsum(1/k2,1,inf)%计算级数和计算级数和 s2=1/6*pi2 s3=symsum(xk,k,0,inf)%计算对计算对k为自变量的级数和为自变量的级数和 s3=-1/(x-1)222131211k2.taylor函数函数语法:语法:taylor(F,x,n)%求泰勒级数展开求泰勒级数展开说明:说明:x为自变量,为自变量,F为符号表达式;对为符号表达式;对F进行泰勒级数进行泰勒级数展开至展开至n项,参数项,参数n省略则默认展开前省略则默认展开前5项。

项例例17续续 求求ex的泰勒展开式的泰勒展开式syms x s1=taylor(exp(x),8)%展开前展开前8项项 s1=1+x+1/2*x2+1/6*x3+1/24*x4+1/120*x5+1/720*x6+1/5040*x7 s2=taylor(exp(x)%默认展开前默认展开前5项项 s2=1+x+1/2*x2+1/6*x3+1/24*x4+1/120*x5 五、符号积分变换 傅里叶傅里叶(Fourier)变换及其反变换变换及其反变换 fourier变换和反变换可以利用积分函数变换和反变换可以利用积分函数int来实现,也可来实现,也可以直接使用以直接使用fourier或或ifourier函数实现函数实现1.fourier变换变换语法:语法:Ffourier(f,t,w)%求时域函数求时域函数f(t)的的fourier变换变换F说明:说明:返回结果返回结果F是符号变量是符号变量w的函数,当参数的函数,当参数w省略,默认返回结果为省略,默认返回结果为w的函数;的函数;f为为t的函数,当参数的函数,当参数t省略,默认自由变量为省略,默认自由变量为x2.fourier反变换反变换语法:语法:f=ifourier(F)%求频域函数求频域函数F的的fourier反变换反变换f(t)f=ifourier(F,w,t)说明:说明:ifourier函数的用法与函数的用法与fourier函数相同。

函数相同例例18 计算计算f(t)=1/t 的的fourier变换变换F以及以及F的的fourier反变反变换syms t w F=fourier(1/t,t,w)%fourier变换变换 F=i*pi*(Heaviside(-w)-Heaviside(w)f=ifourier(F,t)%fourier反变换反变换 f=1/t f=ifourier(F)%fourier反变换默认反变换默认x为自变量为自变量 f=1/x 程序分析:程序分析:其中其中Heaviside(t)是单位阶跃函数,函数名是单位阶跃函数,函数名为数学家为数学家Heaviside的名字拉普拉斯拉普拉斯(Laplace)变换及其反变换变换及其反变换1.Laplace变换变换 语法:语法:F=laplace(f,t,s)%求时域函数求时域函数f的的Laplace变换变换F 说明:说明:返回结果返回结果F为为s的函数,当参数的函数,当参数s省略,返回结果省略,返回结果F默默认为认为s的函数;的函数;f为为t的函数,当参数的函数,当参数t省略,默认自由变量省略,默认自由变量为为t例例19 求求sin(at)和阶跃函数的和阶跃函数的Laplace变换。

变换syms a t s F1=laplace(sin(a*t),t,s)%求求sin(at)的的Laplace变换变换 F1=a/(s2+a2)F2=laplace(sym(Heaviside(t)%求阶跃函数的求阶跃函数的Laplace变换变换 F2=1/s2.Laplace反变换反变换语法:语法:filaplace(F,s,t)%求求F的的Laplace反变换反变换f例例19续续 求求1/(s+a)和和1的的Laplace反变换syms s a t f1=ilaplace(1/(s+a),s,t)%求求1/s+a的的Laplace反变换反变换 f1=exp(-a*t)f2=ilaplace(1,s,t)%求求1的的Laplace反变换是脉冲函数反变换是脉冲函数 f2=Dirac(t)注:注:Dirac函数为单位脉冲函数函数为单位脉冲函数 Z变换及其反变换变换及其反变换1.ztrans函数函数 语法:语法:Fztrans(f,n,z)%求时域序列求时域序列f的的Z变换变换F 说明:返回结果说明:返回结果F是以符号变量是以符号变量z为自变量;当参数为自变量;当参数n省略省略,默认自变量为,默认自变量为n;当参数;当参数z省略,返回结果默认为省略,返回结果默认为z的的函数。

函数例例20 求阶跃函数、脉冲函数和求阶跃函数、脉冲函数和e-at的的Z变换syms a n z t Fz1=ztrans(sym(Heaviside(t),n,z)%求阶跃函数的求阶跃函数的Z变换变换 Fz1=Heaviside(t)*z/(z-1)Fz2=ztrans(sym(Dirac(t),n,z)%求脉冲函数的求脉冲函数的Z变换变换 Fz2=Dirac(t)*z/(z-1)Fz3=ztrans(exp(-a*t),n,z)%求求e-at的的Z变换变换 Fz3=exp(-a*t)*z/(z-1)2.iztrans函数函数 语法:语法:fiztrans(F,z,n)%求求F的的z反变换反变换f例例20续续 用用Z反变换验算阶跃函数、脉冲函数和反变换验算阶跃函数、脉冲函数和e-at的的Z变变换syms n z t f1=iztrans(Fz1,z,n)f1=Heaviside(t)f2=iztrans(Fz2,z,n)f2=Dirac(t)f3=iztrans(Fz3,z,n)f3=exp(-a*t)六、符号方程的求解 代数方程代数方程 一般代数方程包括线形方程、非线形方程,当方程不存在一般代数方程包括线形方程、非线形方程,当方程不存在解,解又无其他自由参数时,解,解又无其他自由参数时,MATLAB可以用可以用solve命令命令给出方程的数值解。

给出方程的数值解语法:语法:solve(eq,v)%求方程关于指定变量的解求方程关于指定变量的解 solve(eq1,eq2,v1,v2,)%求方程组关求方程组关于指定变量的解于指定变量的解 说明:说明:eq可以是含等号的符号表达式的方程,也可以是不可以是含等号的符号表达式的方程,也可以是不含等号的符号表达式,但所指的仍是令含等号的符号表达式,但所指的仍是令eq=0的方程;当的方程;当参数参数v省略时,默认为方程中的自由变量;其输出结果为省略时,默认为方程中的自由变量;其输出结果为结构数组类型结构数组类型例例21 求方程求方程ax2+bx+c=0和和sinx=0的解f1=sym(a*x2+b*x+c)%无等号无等号 f1=a*x2+b*x+c solve(f1)%求方程的解求方程的解x ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)f2=sym(sin(x)f2=sin(x)solve(f2,x)ans=0 程序分析:程序分析:当当sinx=0有多个解时,只能得出有多个解时,只能得出0附近的有限几个解附近的有限几个解例例22 求三元非线性方程组的解。

求三元非线性方程组的解eq1=sym(x2+2*x+1);eq2=sym(x+3*z=4);eq3=sym(y*z=-1);x,y,z=solve(eq1,eq2,eq3)%解方程组并赋值给解方程组并赋值给x,y,z x=-1 y=-3/5 z=5/3 符号常微分方程符号常微分方程 MATLAB提供了提供了dsolve命令可以用于对符号常微分方程进命令可以用于对符号常微分方程进行求解语法:语法:dsolve(eq,con,v)%求解微分方程求解微分方程 dsolve(eq1,eq2,con1,con2,v1,v2)%求解微求解微分方程组分方程组 说明:说明:eq为微分方程;为微分方程;con是微分初始条件,可省略是微分初始条件,可省略;v为指定自由变量,省略时则默认为为指定自由变量,省略时则默认为x或或t为自由变量为自由变量;输出结果为结构数组类型输出结果为结构数组类型1)当当y是因变量时,微分方程是因变量时,微分方程eq的表述规定为:的表述规定为:y的一阶导数或表示为的一阶导数或表示为Dy;y的的n阶导数或表示为阶导数或表示为Dny2)微分初始条件微分初始条件con应写成应写成y(a)=b,Dy(c)=d的格式;当的格式;当初始条件少于微分方程数时,在所得解中将出现任意常数初始条件少于微分方程数时,在所得解中将出现任意常数符符C1,C2,解中任意常数符的数目等于所缺少的初,解中任意常数符的数目等于所缺少的初始条件数。

始条件数例例23 求微分方程,求微分方程,y(1)=0,y(0)=0的解y=dsolve(x*D2y-3*Dy=x2,x)%求微分方程的通解求微分方程的通解 y=-1/3*x3+C1+C2*x4 y=dsolve(x*D2y-3*Dy=x2,y(1)=0,y(5)=0,x)%求微求微分方程的特解分方程的特解 y=-1/3*x3+125/468+31/468*x4作业1.试求给定函数试求给定函数 的的Fourier级数展开级数展开)(2),0,2yx xxx。

下载提示
相关文档
正为您匹配相似的精品文档