Matlab学习指导第二章-符号运算解读课件

上传人:vosvybf****vycfil... 文档编号:241299531 上传时间:2024-06-16 格式:PPT 页数:61 大小:335.11KB
返回 下载 相关 举报
Matlab学习指导第二章-符号运算解读课件_第1页
第1页 / 共61页
Matlab学习指导第二章-符号运算解读课件_第2页
第2页 / 共61页
Matlab学习指导第二章-符号运算解读课件_第3页
第3页 / 共61页
点击查看更多>>
资源描述
第二章第二章 符号计算符号计算6/16/20241第二章 符号计算8/9/20231符号计算功能符号计算功能matlab自产生起就在数值计算上功能卓著自产生起就在数值计算上功能卓著,深受各专业计算人员深受各专业计算人员的欢迎的欢迎.但由于在数学但由于在数学,物理等各种科研和工程应用中经常会遇物理等各种科研和工程应用中经常会遇到符号运算的问题到符号运算的问题.为此为此,公司于公司于1993年购买了年购买了 Maple 软件的软件的使用权使用权,并在此基础上并在此基础上,开发了符号计算工具箱开发了符号计算工具箱(Symbolic Toolbox)MATLAB中实现符号计算功能的三种途径中实现符号计算功能的三种途径1)调用调用matlab自己开发的各种功能函数进行常用的符自己开发的各种功能函数进行常用的符号运算号运算.包括符号表达式与符号矩阵的基本操作包括符号表达式与符号矩阵的基本操作,符号符号矩阵的运算矩阵的运算,符号微积分符号微积分,符号线性方程求解符号线性方程求解,符号微符号微分方程求解等分方程求解等.2)为了特殊专业人员提供方便为了特殊专业人员提供方便,matlab还保留还保留mpa.m 和和maple.m两个函数与两个函数与Maple接口接口3)符号函数计算器功能符号函数计算器功能6/16/20242符号计算功能matlab自产生起就在数值计算上功能卓著,深受符号运算与数值运算的区别:符号运算与数值运算的区别:符号运算中,解算数学表达式、方程时,不符号运算中,解算数学表达式、方程时,不是在离散化的数值点上进行,而是凭借一系是在离散化的数值点上进行,而是凭借一系列恒等式和数学定理,通过推理和演绎,获列恒等式和数学定理,通过推理和演绎,获得解析结果。这种计算建立在数值完全准确得解析结果。这种计算建立在数值完全准确表达和推演严格解析的基础上,所得结果是表达和推演严格解析的基础上,所得结果是完全准确的。完全准确的。符号运算符号运算-代数运算,公式推代数运算,公式推导导数值运算数值运算-算术运算算术运算代值代值6/16/20243符号运算与数值运算的区别:符号运算中,解算数学表达式、方程时2.1 符号对象和符号表达式符号对象和符号表达式在在matlab中中,数值和数值变量用于数值的存储和各种数值计算数值和数值变量用于数值的存储和各种数值计算.而符号常量而符号常量,符号变量符号变量,符号函数符号函数,符号操作等则是用来形成符符号操作等则是用来形成符号表达式号表达式,严格按照代数严格按照代数,微积分等课程中的规则微积分等课程中的规则,公式进行运公式进行运算算,并尽可能给出解析表达式并尽可能给出解析表达式.2.1.1 符号对象的生成和使用符号对象的生成和使用 数值计算数值计算-变量先赋值变量先赋值,再使再使用用.符号计算符号计算-先定义基本的符号对象先定义基本的符号对象(可以是常量可以是常量,变变 量量,表达式表达式),然后用这些基本符号对象去构成新的表达然后用这些基本符号对象去构成新的表达式式,再进行所需的符号运算再进行所需的符号运算6/16/202442.1 符号对象和符号表达式在matlab中,数值和数值变量符号对象的创建和衍生符号对象的创建和衍生1.生成符号对象的基本规则生成符号对象的基本规则 任何基本符号对象(数字、参数、变量、表达任何基本符号对象(数字、参数、变量、表达式)都必须借助专门的符号函数指令式)都必须借助专门的符号函数指令sym或或syms定义。定义。任何包含符号对象的表达式或方程,将任何包含符号对象的表达式或方程,将继承符号对象的属性。即任何包含符号对象继承符号对象的属性。即任何包含符号对象的表达式、方程也一定是符号对象。的表达式、方程也一定是符号对象。6/16/20245符号对象的创建和衍生1.生成符号对象的基本规则 任何基本符号对象的定义:符号对象的定义:f=sym(arg)-把数字把数字,字符串或表达式字符串或表达式arg转为符号对象转为符号对象f=sym(argn,flagn)-把数值或数值表达式转换为把数值或数值表达式转换为flagn格式的符号对象格式的符号对象f=sym(1/2),s=sym(1/3),y=sym(pi),a=sym(b*c)f=1/2,s=1/3,y=pi,a=b*cf=sym(1/2,d),s=sym(1/3,d),y=sym(pi,d)f=sym(1/2,r)=sym(1/2)f=.50000000000000000000000000000000s=.333333333333333314829616256247396/16/20246符号对象的定义:f=sym(arg)-把数字,字符串或表syms(argv1,argv2,argvk)-把字符把字符argv1,argv2,argvk定义为基本符号对象定义为基本符号对象syms argv1 argv2 argvk-上述格式的简洁形式上述格式的简洁形式,各符各符号对象间不得有逗号号对象间不得有逗号argv=sym(argv,flagv)-按按flagv指定的要求把字符串指定的要求把字符串argv定义为符号对象定义为符号对象argvf=sym(pi),s=sym(2*pi+sin(60*pi*180)+exp(2)f=pi,s=2*pi+sin(60*pi*180)+exp(2)syms(a,b,c)a=a,b=b,c=csyms a b ca=a,b=b,c=c只能定义符号变量只能定义符号变量6/16/20247syms(argv1,argv2,argvk说明:说明:f=sym(argn,flagn)中的中的argn是数值或数值表达式时是数值或数值表达式时,flagn可可 选选:d-最接近的十进制浮点精确表示最接近的十进制浮点精确表示.r-最接近的有理表示最接近的有理表示,缺省选项缺省选项.有理是指用两有理是指用两 个正整数个正整数p,q 构成的构成的p/q,p*pi/q,sqrt(p),2q,10q的形式之一的形式之一 argv=sym(argv,flagv)中的中的argv是字符时是字符时,flagv可取限可取限定选项定选项 positive-限定限定argv是是“正,实正,实”符号变量符号变量 real-限定限定argv是是“实实”符号变量符号变量 unreal-argv是非实符号变量是非实符号变量6/16/20248说明:8/9/202382 符号数字的定义符号数字的定义格式:格式:sc=sym(num)%sc为值为为值为num的符号数字的符号数字注意:注意:i)单引号必须在英文状态下输入,构成字符串单引号必须在英文状态下输入,构成字符串 ii)num为一个具体的数字为一个具体的数字如:如:sc=sym(2/3)sb=sym(pi+sqrt(5)sc=2/3sb=pi+sqrt(5)6/16/202492 符号数字的定义格式:sc=sym(num)3 符号参数符号参数定义格式:定义格式:i)syms para para=sym(para)syms a;a=sym(a)ii)syms para flag para=sym(para,flag)syms a positive;a=sym(a,positive)iii)syms a b c syms a b c flagflag为参数属性:为参数属性:positive-参数取正实数参数取正实数real-参数为实数参数为实数unreal-参数为限定的复数参数为限定的复数4 符号变量符号变量表达式中的自变量表达式中的自变量无逗号无逗号6/16/2024103 符号参数定义格式:i)syms para pa推荐格式推荐格式:定义符号变量定义符号变量:syms 变量名变量名syms a b c定义符号常数定义符号常数:常数名常数名=sym(常数值常数值)K=sym(2/3);定义符号常数定义符号常数:表达式名表达式名=sym(表达式表达式);f=sym(a*sin(x)+b);6/16/202411推荐格式:定义符号变量:syms 变量名syms 例例2.1.1-1 符号对象的生成符号对象的生成a1=1/3,pi/7,sqrt(5),sqrt(9),5.1,pi+sqrt(5)a2=sym(1/3,pi/7,sqrt(5),sqrt(9),5.1,pi+sqrt(5)a3=sym(1/3,pi/7,sqrt(5),sqrt(9),5.1,pi+sqrt(5)a1=0.3333 0.4488 2.2361 3.0000 5.1000 5.3777a2=1/3,pi/7,sqrt(5),3,51/10,q*2(-50)a3=1/3,pi/7,sqrt(5),sqrt(9),5.1,pi+sqrt(5)q=6054707603575008a23=a2-a3a23=0,0,0,0,0,189209612611719/35184372088832-pi-5(1/2)6/16/202412例2.1.1-1 符号对象的生成a1=1/3,pi/例例5.1.1-2 把字符表达式转换为符号变量把字符表达式转换为符号变量y=sym(2*sin(x)*cos(x)y=simple(y)y=sin(2*x)说明说明:1)是数值常数,是数值常数,是最接近的有理表示,是最接近的有理表示,是绝对准确是绝对准确的符号数值表示的符号数值表示2)部分元素相同,是因为部分元素相同,是因为 中的那几个元素是有理中的那几个元素是有理表示的基本形式,所以也是绝对准确的表示的基本形式,所以也是绝对准确的3)指令产生的符号数值总是绝对准确的,因此建议:在产指令产生的符号数值总是绝对准确的,因此建议:在产生符号常量时应优先使用这种输入方式,把数值放入单引号对生符号常量时应优先使用这种输入方式,把数值放入单引号对中,数组元素间一定要采用逗号分隔中,数组元素间一定要采用逗号分隔在符号运算中在符号运算中,如果事先没有对表达式中的独立变量进行定义如果事先没有对表达式中的独立变量进行定义,那那么系统将自动检查哪些字符是符号函数么系统将自动检查哪些字符是符号函数,哪些是符号变量哪些是符号变量,并且总并且总是把在英文字母表中离是把在英文字母表中离x最近的字母认做独立符号变量最近的字母认做独立符号变量6/16/202413例5.1.1-2 把字符表达式转换为符号变量y=sym(2例例2.1.1-3 用符号计算验证三角等式用符号计算验证三角等式syms phi1 phi2;y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2);y=sin(phi1-phi2)例例2.1.1-4 求矩阵求矩阵的行列式的行列式,逆和特征值逆和特征值syms a11 a12 a21 a22;A=a11,a12;a21,a22;DA=det(A),IA=inv(A),EA=eig(A)A=a11,a12 a21,a22DA=a11*a22-a12*a216/16/202414例2.1.1-3 用符号计算验证三角等式syms phi1 例例2.1.1-4 验证积分验证积分syms A t tao w;yf=int(A*exp(-i*w*t),t,-tao/2,tao/2);yf=simple(yf)yf=2*A*sin(1/2*tao*w)/w练习练习:展开展开sin(4x)(expand)6/16/202415例2.1.1-4 验证积分syms A t tao w2.1.2 符号计算中的算符和基本函数符号计算中的算符和基本函数由于新版由于新版matlab采用了重载技术采用了重载技术,使得用来构成符号计算表达使得用来构成符号计算表达式的算符和基本函数式的算符和基本函数,无论在形状无论在形状,名称名称,还是使用方法上还是使用方法上,都与都与数值计算中的算符和基本函数几乎完全相同数值计算中的算符和基本函数几乎完全相同,这给编程带来极大这给编程带来极大的方便的方便.(2)关系运算符关系运算符在符号对象的比较中在符号对象的比较中,没有大于没有大于,大于等于大于等于,小于小于,小于等于的概小于等于的概念念,而只有是否等于的概念而只有是否等于的概念.”=“=“分别用来对算符两边分别用来对算符两边的对象进行相等和不等的比较的对象进行相等和不等的比较,返回为逻辑量返回为逻辑量(1)基本运算符基本运算符算符算符”+”,”-”,”*”,”,“/”,“”分别构成矩阵分别构成矩阵的加的加,减减,乘乘,左除左除,右除右除,求幂运算求幂运算.算符算符”.*”,“./”,“.”,“.”分别实现元素对元素的数组乘分别实现元素对元素的数组乘,除除,求幂运算求幂运算.算符算符”,“.”分别实现矩阵的共轭转置分别实现矩阵的共轭转置,非共轭转置非共轭转置6/16/2024162.1.2 符号计算中的算符和基本函数由于新版matlab采(4)指数指数,对数函数对数函数函数函数sqrt,exp,expm在两者中用法相同符号计算中只有自然在两者中用法相同符号计算中只有自然对数,而没有数值计算中的对数,而没有数值计算中的log2,log10(5)复数函数复数函数conj,imag,real,abs在两者中用法相同在两者中用法相同.但在符号计算中没有求但在符号计算中没有求相角的指令相角的指令.(6)矩阵代数指令矩阵代数指令在符号计算中在符号计算中,matlab提供的常用矩阵代数指令有:提供的常用矩阵代数指令有:diag,triu,tril,inv,det,rank,rref,null,colspace,expm,poly,eig,svd(3)三角函数三角函数,双曲线函数以及他们的反函数双曲线函数以及他们的反函数除除atan2只能用于数值计算外只能用于数值计算外,另外的在两种运算中使用方法相同另外的在两种运算中使用方法相同.6/16/202417(4)指数,对数函数(5)复数函数(6)矩阵代数指令(数值计算对象数值计算对象,符号计算对象符号计算对象,字符串是字符串是MATALB中最常用的中最常用的数据对象数据对象.他们遵循各自不同的运算法则他们遵循各自不同的运算法则,但有时在外形上却但有时在外形上却十分相似十分相似.MATLAB提供了一些识别不同数据对象的指令提供了一些识别不同数据对象的指令,常用常用的有的有class,isa,whos 例例2.1.3-1 数据对象及其识别指令的使用数据对象及其识别指令的使用(1)生成三种不同类型的矩阵,给出不同的显示形式生成三种不同类型的矩阵,给出不同的显示形式clear,a=1;b=2;c=3;d=4%产生四个数值变量产生四个数值变量Mn=a,b,c,d%利用已赋值变量构成数值矩阵利用已赋值变量构成数值矩阵Mc=a,b,c,d%字符串中的字符串中的a,b,c,d与前面输入的数值变量无关与前面输入的数值变量无关Ms=sym(Mc)%符号变量,与前面的各变量无关符号变量,与前面的各变量无关Mn=1 2 3 4Mc=a,b;c,dMs=a,b c,d2.1.3 对象类别的识别对象类别的识别6/16/202418数值计算对象,符号计算对象,字符串是MATALB中最常用的数(2)三个矩阵的大小不同三个矩阵的大小不同SizeMn=size(Mn),SizeMc=size(Mc),SizeMs=size(Ms)SizeMn=2 2SizeMc=1 9SizeMs=2 2(3)用用class获得每种矩阵的类别获得每种矩阵的类别CMn=class(Mn),CMc=class(Mc),CMs=class(Ms)CMn=doubleCMc=charCMs=sym(4)用用isa判断每种矩阵的类别判断每种矩阵的类别isa(Mn,double),isa(Mc,char),isa(Ms,sym)ans=1ans=1ans=16/16/202419(2)三个矩阵的大小不同SizeMn=size(Mn),(5)利用利用whos观察内存变量的类别和其他属性观察内存变量的类别和其他属性 Name Size Bytes Class Mc 1x9 18 char array Mn 2x2 32 double array Ms 2x2 312 sym objecta=0:1:6;theta=sym(30*pi/180*a)alfa=sym(30*pi/180)*atheta=30*pi/180*aalfa=0,1/6*pi,1/3*pi,1/2*pi,2/3*pi,5/6*pi,pia与数组与数组a无关无关6/16/202420(5)利用whos观察内存变量的类别和其他属性 Name2.1.4 符号表达式中自由变量的确定符号表达式中自由变量的确定findsym(expr)-确认表达式确认表达式expr中所有自由符号变量中所有自由符号变量findsym(expr,n)-从从expr中确认出靠中确认出靠x最近的最近的n个独立自变量个独立自变量例例2.1.4-1 对独立自由符号变量的自动辨认对独立自由符号变量的自动辨认(1)生成符号变量生成符号变量syms a b x X Y;k=sym(3);z=sym(c*sqrt(delta)+y*sin(theta);expr=a*z*X+(b*x2+k)*Y;(2)找出找出expr中的全部自由符号变量中的全部自由符号变量findsym(expr)ans=X,Y,a,b,c,delta,theta,x,y6/16/2024212.1.4 符号表达式中自由变量的确定findsym(exp(3)从从expr中确定中确定1,2,3个自由变量个自由变量findsym(expr,1),findsym(expr,2),findsym(expr,3)ans=xans=x,yans=x,y,thetafindsym 确认的是表达式中的确认的是表达式中的”自由自由”,”独立独立”的符号变量的符号变量,由于由于k不是自由的不是自由的,z不是独立的不是独立的,所以该指令不将其作为自由变所以该指令不将其作为自由变量。量。该指令把该指令把expr表达式中表达式中n个最靠近个最靠近x的自由符号变量确认为的自由符号变量确认为“独独立自由变量立自由变量”,并且认为大写字母离并且认为大写字母离x的距离总大于所有小写字的距离总大于所有小写字母离母离x的距离的距离作用作用:在符号函数调用中在符号函数调用中,当没有明确指定所针对的变当没有明确指定所针对的变量时量时,系统自动确定所操作的自由变量系统自动确定所操作的自由变量6/16/202422(3)从expr中确定1,2,3个自由变量findsym(2.2 符号对象的操作与转换符号对象的操作与转换2.2.1 符号表达式的操作符号表达式的操作collect合并同类项合并同类项numden 提取公因式提取公因式expand 展开指定项展开指定项simplify 恒等式简化恒等式简化factor因式分解因式分解pretty习惯方式显示习惯方式显示horner转换为嵌套形式转换为嵌套形式 simple简化简化例例2.2.1-1 简化简化sym x;f=(1/x3+6/x2+12/x+8)(1/3);g1=simple(f)g2=sinple(g1)g1=(2*x+1)/xg2=2+1/x验证验证:f2=g23;expand(f2)6/16/2024232.2 符号对象的操作与转换2.2.1 符号表达式的操作co例例2.2.1-2 因式分解因式分解 9876542fx=sym(9876542);factor(fx)ans=(2)*(13)*(19)*(19993)例例2.2.1-3 因式分解因式分解x12-1syms x;f=x12-1;factor(f)例例2.2.1-4 pretty,horner的使用的使用syms x;f=exp(-x);f1=taylor(f);pretty(f1)fh=horner(f1)ans=(x-1)*(x2+x+1)*(x+1)*(1-x+x2)*(x2+1)*(x4-x2+1)6/16/202424例2.2.1-2 因式分解 9876542fx=sym(9f1=1-x+1/2*x2-1/6*x3+1/24*x4-1/120*x5 2 3 4 5 1-x+1/2 x -1/6 x +1/24 x -1/120 x fh=1+(-1+(1/2+(-1/6+(1/24-1/120*x)*x)*x)*x)*xexpand的使用的使用syms x y;f=sin(x+y)u=expand(f)f=sin(x+y)u=sin(x)*cos(y)+cos(x)*sin(y)6/16/202425f1=1-x+1/2*x2-1/6*x3+1/24*x2.2.2 置换操作置换操作作用作用:把复杂表达式中所含的多个相同子表达式用一个符号代替把复杂表达式中所含的多个相同子表达式用一个符号代替,使表达简洁使表达简洁RS,ssub=subexpr(S,ssub)-运用符号变量运用符号变量ssub置换子表达式置换子表达式,重写重写S为为RS例例2.2.2-1 表达式置换表达式置换syms a b c d W;V,D=eig(a,b;c,d);RVD,W=subexpr(V;D,W)说明说明:被置换的子表达式是机器自动寻找的被置换的子表达式是机器自动寻找的,置换原则为置换原则为,只有只有比较长的子表达式才被置换比较长的子表达式才被置换,比较短的子表达式比较短的子表达式,即使出现多次即使出现多次,也不被置换也不被置换.1)子表达式置换操作子表达式置换操作指令格式:指令格式:6/16/2024262.2.2 置换操作作用:把复杂表达式中所含的多个相同子表达2)通用置换指令通用置换指令RES=subs(ES,old,new)-用用new置换置换ES中的中的old后产生后产生RESRES=subs(ES,new)-用用new置换置换ES中的自由变量后产生中的自由变量后产生RES例例2.2.2-2 subs置换规则示例置换规则示例(1)产生符号函数产生符号函数syms a x;f=a*sin(x)+5;(2)符号变量置换符号变量置换f1=subs(f,sin(x),sym(y)(3)符号常数置换符号常数置换f2=subs(f,a,x,2,sym(pi/3)f1=a*y+5a=2x=pi/3,符号数字符号数字f2=3(1/2)+5double(f2)代值代值6/16/2024272)通用置换指令RES=subs(ES,old,new(4)双精度数值转换双精度数值转换(所有自由变量被双精度数值取代所有自由变量被双精度数值取代)自定义自定义函数的赋值函数的赋值f3=subs(f,a,x,2,pi/3)f3=6.7321(5)数值数组置换一数值数组置换一 (取取a=2,x=0:pi/6:pi)f4=subs(subs(f,a,2),x,0:pi/6:pi)f4=5.00 6.00 6.73 7.00 6.73 6.00 5.00(6)数值数组置换二数值数组置换二 (取取a=0:6,x=0:pi/6:pi)f5=subs(f,a,x,0:6,0:pi/6:pi)f5=5.00 5.50 6.73 8.00 8.46 7.50 5.006/16/202428(4)双精度数值转换(所有自由变量被双精度数值取代)自定f6=subs(f,a,x,0:6,0:pi/6:pi)f6=5.00 5.50 6.73 8.00 8.46 7.50 5.00比较:比较:f7=subs(f,a,x,2,pi/6 )f8=subs(f,a,x,2,sym(pi/6)6.732050807568883(1/2)+5 subs指令的属性取决于指令的属性取决于new的属性的属性,当当new中全部为数值数中全部为数值数字时字时,所得结果为双精度数据所得结果为双精度数据,当当new中有符号数字时中有符号数字时,所得结所得结果也为字符数字。果也为字符数字。new可以是数组可以是数组【说明】【说明】6/16/202429f6=subs(f,a,x,0:6,0:pi/求求n0.5(n=1,2,.10)之值之值syms x;f=sqrt(x);res=subs(f,x,1:1:10)?思考:如何求思考:如何求f=a*n0.5+b (其中其中(a=2,3,411,n=1,2,3,10,b=0.1,0.2,0.3,1)的值的值6/16/202430求n0.5(n=1,2,.10)之值syms x;?例例2.2.2-2 猴子吃桃问题:猴子第一天摘下若干个桃猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到以后每天早上都吃了前一天剩下的一半零一个。到第第10天早上想再吃时,见只剩下一个桃子了。求第天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。一天共摘了多少。syms r;f=2*(r+1);u=f;for k=1:1:8 u=subs(f,r,u);endtotal=subs(u,r,1)u=512*r+1022total=1534a(1)=1534;%验算验算for k=2:1:10 a(k)=a(k-1)/2-1;end6/16/202431例2.2.2-2 猴子吃桃问题:猴子第一天摘下若干个桃子,当2.2.3 符号数值精度控制和任意精度的计算符号数值精度控制和任意精度的计算数值计算受计算机字长的限制数值计算受计算机字长的限制,每次数值操作都带有截断误差每次数值操作都带有截断误差,因因此任何数值计算不管采用什么算法都将产生积累误差此任何数值计算不管采用什么算法都将产生积累误差.在在matlab中中,每个算术操作结果的相对精度约为每个算术操作结果的相对精度约为16位数字位数字.但是符号计算的但是符号计算的结果是绝对准确的结果是绝对准确的,不包含任何计算误差不包含任何计算误差.符号计算中与数值精度符号计算中与数值精度计算有关的指令有:计算有关的指令有:double(x)-把符号常数转化为把符号常数转化为16位相对精度的浮点数值对象位相对精度的浮点数值对象digits(n)-设置以后的数值计算以设置以后的数值计算以n位相对精度进行位相对精度进行xs=vpa(x)-在在digits指定精度下,给出指定精度下,给出x的数值型符号结果的数值型符号结果xsxs=vpa(x,n)-在在n位相对精度下,给出位相对精度下,给出x的数值型符号结果的数值型符号结果xs6/16/2024322.2.3 符号数值精度控制和任意精度的计算数值计算受计算机说明:说明:double指令运作所得结果一定是双精度数值对象指令运作所得结果一定是双精度数值对象 除了除了vpa(x,n)对特定符号对象指定具体精度外对特定符号对象指定具体精度外,所有所有vpa(x)的精度都受到其前面的的精度都受到其前面的digits指令控制指令控制,digits指令缺省精指令缺省精 度为度为32位位 x可以是符号对象或数值对象可以是符号对象或数值对象,但运行后所得结果但运行后所得结果xs一定是符一定是符 号对象号对象6/16/202433说明:8/9/2023332.2.4 符号对象与其他数据对象间的转换符号对象与其他数据对象间的转换数值数值,符号符号,字符是字符是matlab中三种不同的数据类型中三种不同的数据类型,matlab为每种为每种数据类型提供了各自特定的生成指令和操作指令数据类型提供了各自特定的生成指令和操作指令.为实现不同数为实现不同数据类型间的交互据类型间的交互,matlab 提供了一系列的转换指令提供了一系列的转换指令 数值型数值型符号结果符号结果符号常数符号常数数值数值符号量符号量(表达式表达式)字符串字符串(表达式表达式)ASCII码码 vpadoublevpasymdoublestr2num,str2double,sscanfint2str,num2str,mat2strcharsymchar abs double6/16/2024342.2.4 符号对象与其他数据对象间的转换数值,符号,字符是数值数字和符号数字之间的相互转换数值数字和符号数字之间的相互转换1)数值数字数值数字符号数字符号数字sk=sym(num,flag)flag:r-数值类数字的广义有理表达数值类数字的广义有理表达d-十进制浮点近似表达十进制浮点近似表达e-带误差的理性近似表达带误差的理性近似表达f-十六进制浮点近似表达十六进制浮点近似表达PI=sym(pi,r);PI=pi注意:在符号运算中,数值类数字会自动转换为符号数字注意:在符号运算中,数值类数字会自动转换为符号数字syms t;y=1/3*sin(t)+2/4y=1/3*sin(t)+1/2sk=sym(num)sk=sym(num)6/16/202435数值数字和符号数字之间的相互转换1)数值数字符号数字sPI=sym(pi,d);PI=3.14159265358979311599796346854422)符号数字符号数字数值数字数值数字double(num_sym)PI=sym(pi);double(PI)ans=3.14166/16/202436PI=sym(pi,d);PI=2)符号数字数值2.2.5 符号表达式的复合函数和反函数符号表达式的复合函数和反函数1)复合函数运算复合函数运算 compose(f,g)-返回复合函数返回复合函数f(g(y),这里这里f=f(x),g=g(y)compose(f,g,z)-返回自变量为返回自变量为z的复合函数的复合函数f(g(z),这里这里2)反函数反函数 g=finverse(f)-返回符号函数返回符号函数f的反函数的反函数g,满足满足g(f(x)=x g=finverse(f,v)-返回自变量为返回自变量为v的符号函数的符号函数f的反函数使得的反函数使得f=f(x),g=g(y)g(f(v)=v,当当f包含不止一个符号变量时包含不止一个符号变量时,使用这种格式使用这种格式.6/16/2024372.2.5 符号表达式的复合函数和反函数1)复合函数运算例例2.2.5-1 复合函数和反函数示例复合函数和反函数示例syms x y;f=1/x3;g=tan(y);fg=compose(f,g)fin=finverse(fg)fg=1/tan(y)3fin=atan(1/y(1/3)6/16/202438例2.2.5-1 复合函数和反函数示例syms x y;fg2.3 符号微积分符号微积分1)符号极限符号极限limit(F,x,a)-计算计算F在在xa时的极限时的极限limit(F,x,a,left/right)-计算左计算左/右极限右极限例例5.3-1 极限示例极限示例syms x;f=3/(x2+6);val1=limit(f,x,inf)val2=limit(f,x,0)val1=0val2=1/26/16/2024392.3 符号微积分1)符号极限limit(F,x,a)-例例 已知已知f(x)=sin(|x|),求求fx(0),fx(x)f(x)=sin(|x|)曲线图6/16/202440例 已知f(x)=sin(|x|),求fx(0),syms x;syms dx positive;x0=sym(0);f_p=sin(x);df_p=limit(subs(f_p,x,x+dx)-f_p)/dx,dx,0)df_p0=limit(sin(x0+dx)-sin(x0)/dx,dx,0)数学分析数学分析:f(x)=sin(|x|)6/16/202441syms x;数学分析:f(x)=sin(|x|)8/绘图绘图要绘制原函数在要绘制原函数在x0时的导函数曲线,应先将导函时的导函数曲线,应先将导函数离散化,采用通用置换指令进行离散化数离散化,采用通用置换指令进行离散化deltx=pi/200;xx=0:deltx:2*pi;y=subs(df_p,x,xx);plot(xx,y);6/16/202442绘图要绘制原函数在x0时的导函数曲线,应先将导函数离散化,2)符号序列求和符号序列求和对于数学上的求和对于数学上的求和可用可用matlab的求和指令解决的求和指令解决.其指令为其指令为:s=symsum(f,v,a,b)-求通式求通式f字指定变量字指定变量v取遍取遍a,b中所有整中所有整数时的和数时的和.说明说明:f是矩阵时是矩阵时,对矩阵的元素逐个求和对矩阵的元素逐个求和,但自变量定义在整个矩阵上但自变量定义在整个矩阵上 v缺省时缺省时 f中的自变量由中的自变量由findsym自动辨认自动辨认;b可以取有限整数可以取有限整数,也可以取无穷大也可以取无穷大inf a,b可同时缺省可同时缺省,此时默认求和的自变量区间为此时默认求和的自变量区间为0,v-16/16/2024432)符号序列求和对于数学上的求和可用matlab的求和指令例例2.3-2 求求syms n;f=n2,1/n2;s1=symsum(f(1),1,100)s2=symsum(f(2),1,inf)s1=338350s2=1/6*pi26/16/202444例2.3-2 求syms n;s1=8/9/202344例例2.3-3 求求syms k t;f1=t,k3;f2=1/(2*k-1)2,(-1)k/k;s1=simple(symsum(f1);s2=simple(symsum(f2,1,inf)3)符号微分和符号微分和Jacobian矩阵矩阵求导数,高阶导数,偏导数和多元向量函数的求导数,高阶导数,偏导数和多元向量函数的Jacobian矩阵是矩阵是数学分析的重要内容,有机器实现求导的指令有:数学分析的重要内容,有机器实现求导的指令有:dfdvn=diff(f,v,n)-求求fjac=jacobian(f,v)-求多元向量函数的求多元向量函数的Jacobian矩阵矩阵6/16/202445例2.3-3 求syms k t;3)符号微分和Jaco f是矩阵时是矩阵时,求导对矩阵的元素逐个进行求导对矩阵的元素逐个进行,但自变量定义在整个但自变量定义在整个 矩阵上矩阵上.v缺省时缺省时,自变量会自动由自变量会自动由findsym确认确认,n缺省时缺省时,默认默认n=1 在数值计算中,指令在数值计算中,指令diff是用来求差分的是用来求差分的 如f的的Jacobian矩阵为矩阵为说明:说明:6/16/202446 f是矩阵时,求导对矩阵的元素逐个进行,但自变量定义在整个例例2.3-4 求求syms a t x;f=a,t3;t*cos(x),log(x);df=diff(f),dfdt2=diff(f,t,2),dfdxdt=diff(diff(f,x),t)6/16/202447例2.3-4 求syms a t x;8/9/2023474)符号积分符号积分与数值积分相比与数值积分相比,符号积分指令简单符号积分指令简单,适应性强适应性强,但可能占用机器但可能占用机器时间很长时间很长.intf=int(f,v)-f对对v的不定积分的不定积分intf=int(f,v,a,b)-f对对v的定积分的定积分说明:说明:当当f是矩阵时,积分对矩阵的元素逐个进行是矩阵时,积分对矩阵的元素逐个进行 v缺省时,积分对缺省时,积分对findsym确认的变量进行确认的变量进行 a,b分别是积分的上下限分别是积分的上下限例例2.3-5 求求syms a b x;f=a*x,b*x2;1/x,sin(x);int(f)6/16/2024484)符号积分与数值积分相比,符号积分指令简单,适应性强,但例2.3-6 求积分syms x y z;f=x2+y2+z2;s=int(int(int(f,z,sqrt(x*y),x2*y),y,sqrt(x),x2),x,1,2)第一重积分第一重积分第二重积分第二重积分6/16/202449例2.3-6 求积分syms x y z;第一重积分第ft=ilaplace(Fs,s,t)-求频域函数求频域函数Fs的的Laplace反变换反变换ftFZ=ztrans(fn,n,z)-求时域系列求时域系列fn的的Z变换变换FZfn=iztrans(FZ,z,n)-求频域系列求频域系列FZ的的Z变换变换fn5)符号积分变换符号积分变换傅立叶变换傅立叶变换,拉普拉斯变换拉普拉斯变换,Z变换在信号处理和系统动态特性研变换在信号处理和系统动态特性研究中起着重要作用究中起着重要作用Fw=fourier(ft,t,w)-求时域函数求时域函数ft的傅立叶变换的傅立叶变换Fwft=ifourier(Fw,w,t)-求频域函数求频域函数Fw的傅立叶反变换的傅立叶反变换ftFs=laplace(ft,t,s)-求时域函数求时域函数ft的的Laplace变换变换Fs6/16/202450ft=ilaplace(Fs,s,t)-求频域函数syms A t tao x w;Fw1=int(A*exp(-i*w*t),t,-tao/2,tao/2);Fw1=simple(Fw1)ft=exp(x-t)*exp(-i*w*t);Fw2=int(ft,t,x,inf)%被积变量不能省略被积变量不能省略6/16/202451syms A t tao x w;8/9/202352.4 符号代数方程求解符号代数方程求解1)线性方程组的符号解线性方程组的符号解矩阵计算是求解线性方程组最简单有效的方法矩阵计算是求解线性方程组最简单有效的方法,在在matlab中中,不管数据对象是数值还是符号不管数据对象是数值还是符号,实现矩阵运算的指令形式几乎实现矩阵运算的指令形式几乎完全相同完全相同.例例2.4-1 求求:d+n/2+p/2=q,n+d+q-p=10,q+d-n/4=p,q+p-n-8d=1线性方程组的解线性方程组的解A=sym(1,1/2,1/2,-1;1,1,-1,1;1,-1/4,-1,1;-8,-1,1,1);b=sym(0;10;0;1)x=Ab6/16/2024522.4 符号代数方程求解1)线性方程组的符号解矩阵计算是求2)一般代数方程组的解一般代数方程组的解这里所讲的一般代数方程包括线性这里所讲的一般代数方程包括线性,非线性和超越方程等非线性和超越方程等,求解求解指令为指令为solve.S=solve(eq1,eq2,eqn,v1,v2,vn)-方程组指定变量的解方程组指定变量的解 (推荐格式推荐格式)S=solve(exp1,exp2,expn,v1,v2,vn)-方程方程组指定变量的解组指定变量的解 (可用格式可用格式)6/16/2024532)一般代数方程组的解这里所讲的一般代数方程包括线性,非线说明:说明:eq1,eq2,eqn或是字符串表达的方程或是字符串表达的方程,或是或是字符串字符串 表达式表达式.v1,v2,vn是字符串表达的求解变是字符串表达的求解变量名量名 exp1,exp2,expn只能是符号表达式只能是符号表达式.v1,v2,vn是是 求解的符号变量求解的符号变量 如如eq1,eq2,eqn是不含等号的表达式是不含等号的表达式,则指令是对则指令是对eq1=0,eq2=0,eqn=0求解求解 S是一个结构数组是一个结构数组,如要显示求解结果如要显示求解结果,必须采用必须采用S.V1,S.V2,S.Vn的援引方式的援引方式.6/16/202454说明:8/9/202354例例2.4-1 求求(x+2)x=2的解的解syms x;S=solve(x+2)x=2,x)解方程组解方程组:x+sin(y)=3/2x*sin(y)=1/2S=solve(x+sin(y)=3/2,x*sin(y)=1/2);S.x=1 1/2S.y=1/6*pi 1/2*pi6/16/202455例2.4-1 求(x+2)x=2的解syms x;解方程组:2.5 符号微分方程求解符号微分方程求解S=dsolve(eqn1,eqn2,)-符号微分方程组求解指令格式符号微分方程组求解指令格式.说明:说明:输入宗量包括三部分内容输入宗量包括三部分内容:微分方程微分方程,初始条件初始条件,指定独立变量指定独立变量.其中微分方程是必不可少的其中微分方程是必不可少的.其余可以没有其余可以没有 对于独立变量对于独立变量,若要指定独立变量若要指定独立变量,总是由全部输入宗量的最后总是由全部输入宗量的最后一个指令一个指令,默认的独立变量是默认的独立变量是t 字母字母D代表微分算子代表微分算子,即即d/dt,D2代表代表d2/dt2,dny代表对代表对y(t)的的n阶微分阶微分.初始条件可以写成格式初始条件可以写成格式:y(a)=b,Dy(c)=d,在解中可以出现任意在解中可以出现任意常数符常数符C1,C2 等等 输出输出S为结构对象为结构对象.6/16/2024562.5 符号微分方程求解S=dsolve(eqn1,例例2.5-1 求求dx/dt=y,dy/dt=-x的解的解S=dsolve(Dx=y,Dy=-x);disp(blanks(12),x,blanks(21),y,disp(S.x,S.y)x y cos(t)*C1+sin(t)*C2,-sin(t)*C1+cos(t)*C26/16/202457例2.5-1 求dx/dt=y,dy/dt=-x的解S=d2.6 符号函数画图符号函数画图ezplot(f)-在默认区间在默认区间(-2pi,2pi)绘制绘制f=f(x)的函数图的函数图.ezplot(f,a,b)-在区间在区间(a,b)绘制绘制f=f(x)的函数图的函数图.fplot(fun,lims)-绘制绘制fun函数在区间函数在区间lims=xmin,xmax的图形的图形例例2.6-1 ezplot绘图示例绘图示例ezplot(4*cos(t),3*sin(t)ezplot(x2+y2-4)ezplot(x3-10*x,0,10)6/16/2024582.6 符号函数画图ezplot(f)-在默认区间(-22.7 图形化函数计算器图形化函数计算器在在matlab命令窗中输入命令窗中输入funtool,即可进入图形化符号函数计算器即可进入图形化符号函数计算器.2.8 maple接口本章前几节仅介绍了符号计算的最基本内容,它们只涉及用简单的几条指令在单一的符号计算范围内所解决的问题.事实上,用户还会遇到混合使用符号计算和数值计算的问题,也会遇到使用maple深层资源的问题.matlab提供了五个与maple交互的指令:mfun-对对maple中若干经典特殊函数实施数值计中若干经典特殊函数实施数值计算算6/16/2024592.7 图形化函数计算器在matlab命令窗中输入funtomfunlist-能被mfun计算的maple经典特殊函数列表mhelp-查阅maple中的库函数及其调用方法maple-进入maple工作空间计算,结果送回matlab工作空间procread-把按maple格式写的源程序读入maple工作空间maple命令在matlab环境下,为了实现maple绝大多数的符号计算命令的调用,符号计算工具箱提供了一个通用的命令maple,它的调用格式为:1)maple(statement)-statement为一完整的maple语法的可执行2)语句的字符串输出结果也是maple语法的字符串2)maple(fun,arg1,arg2,)-fun为输入函数名,arg1,arg2为输入此函数中的变量.且fun(arg1,arg2,)构成maple语法的执行语句.个变量必须以字符串的形式输入,输出结果也是符合maple语法的字符串.如要使它成为matlab符号变量环境下的有效语句,可用sym进行转换.6/16/202460mfunlist-能被mfun计算的maple经典特殊例2.8-1 计算递推方程f(n)=-3f(n-1)-2f(n-2)的通解maple(rsolve,f(n)=-3*f(n-1)-2*f(n-2),f(k)说明:在matlab符号计算工具箱中没有提供求解递推方程的专用函数,因此,用户必须调用maple函数与maple库函数接口再调用maple的rsolve来解决此递推方程从而使matlab的符号计算的功能得到了扩充6/16/202461例2.8-1 计算递推方程f(n)=-3f(n-1)-2f(
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!