您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 其它文档 > 第3 章 matlab的符号运算
河南理工大学测绘学院第三章MATLAB符号运算在科学研究和工程应用中,除了存在大量的数值计算外,还有对符号对象进行的运算,即在运算时无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。MATLAB符号计算是通过集成在MATLAB中的符号运算工具箱(SymbolicMathToolbox)来实现的。应用符号计算功能,可以直接对抽象的符号对象进行各种计算,并获得问题的解析结果。河南理工大学测绘学院第三章MATLAB符号运算本章学习目标●掌握符号对象的定义方法以及符号表达式的运算法则。●掌握微积分的符号计算方法。●掌握级数求和的方法以及将函数展开为泰勒级数的方法。●掌握代数方程和微分方程符号求解的方法。河南理工大学测绘学院§3.1符号对象及其运算3.1符号对象及其运算MATLAB为用户提供了一种符号数据类型,相应的运算对象称为符号对象。例如,符号常量、符号变量以及有它们参与的数学表达式等。在进行符号运算前首先要建立符号对象。河南理工大学测绘学院§3.1符号对象及其运算3.1.1建立符号对象1.建立符号对象(1)sym函数sym函数用来建立单个符号量,一般调用格式为符号量名=sym('符号字符串')该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。例如:a=sym('a')%建立符号变量a符号变量参与运算前无须赋值,其结果是一个由参与运算的变量名组成的表达式。河南理工大学测绘学院§3.1符号对象及其运算a=sym('a');%定义符号变量aw=a^3+3*a+10%符号运算w=a^3+3*a+10x=5;%定义数值变量xw=x^3+3*x+10%数值运算w=150whos%查看内存变量NameSizeBytesClassAttributesa1x1126symw1x18doublex1x18double河南理工大学测绘学院§3.1符号对象及其运算应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。下面的命令用于比较符号常量与数值常量在代数运算时的差别。p1=sym('pi');a=sym('4');p2=pi;x=4;sin(p1/3)sin(p2/3)cos((a+10)^2)-sin(pi/4)cos((x+10)^2)-sin(pi/4)河南理工大学测绘学院§3.1符号对象及其运算(2)syms函数函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为syms符号变量名1符号变量名2…符号变量名n用这种格式定义符号变量时不要在变量名上加字符串分界符('),变量间用空格而不要用逗号分隔。例如,用syms函数定义4个符号变量a、b、c、d,命令如下:symsabcd河南理工大学测绘学院§3.1符号对象及其运算2.建立符号表达式含有符号对象的表达式称为符号表达式。建立符号表达式有以下2种方法。(1)用sym函数建立符号表达式。例如:U=sym('3*x^2-5*y+2*x*y+6')U=3*x^2-5*y+2*x*y+6F=sym('cos(x^2)-sin(2*x)=0')F=cos(x^2)-sin(2*x)=0M=sym('[a,b;c,d]')M=[a,b][c,d]河南理工大学测绘学院§3.1符号对象及其运算(2)使用已经定义的符号变量组成符号表达式。例如:symsxy;V=3*x^2-5*y+2*x*y+6ans=3*x^2+2*y*x-5*y+6河南理工大学测绘学院§3.1符号对象及其运算3.1.2符号表达式运算1.符号表达式的四则运算符号表达式的四则运算与数值运算一样,用+、−、*、/、^运算符实现,其运算结果依然是一个符号表达式。例如:f=sym('2*x^2+3*x-5')%定义符号表达式g=sym('x^2-x+7')f+gans=3*x^2+2*x+2f^gans=(2*x^2+3*x-5)^(x^2-x+7)河南理工大学测绘学院§3.1符号对象及其运算2.符号表达式的提取分子和分母运算如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为[n,d]=numden(s)该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。numden函数在提取各部分之前,将符号表达式有理化后返回所得的分子和分母。如果符号表达式是一个符号数组,numden返回两个新数组n和d,其中n是分子数组,d是分母数组。河南理工大学测绘学院§3.1符号对象及其运算例如:h=sym('[3/2,(2*x+1)/3;a/x+a/y,3*x+4]');[n,d]=numden(h)n=[3,2*x+1][a*x+a*y,3*x+4]d=[2,3][x*y,1]河南理工大学测绘学院§3.1符号对象及其运算3.符号表达式的因式分解与展开●factor(s):对符号表达式s分解因式。●expand(s):对符号表达式s进行展开。●collect(s):对符号表达式s合并同类项。●collect(s,v):对符号表达式s按变量v合并同类项。河南理工大学测绘学院§3.1符号对象及其运算例如:symsxy;s1=x^3-y^3;factor(s1)%对s分解因式ans=(x-y)*(x^2+x*y+y^2)s2=(-7*x^2-8*y^2)*(-x^2+3*y^2);expand(s2)%对s展开ans=7*x^4-13*x^2*y^2-24*y^4河南理工大学测绘学院§3.1符号对象及其运算s3=(x+y)*(x^2+y^2+1)collect(s3,y)%对s按变量y合并同类项ans=y^3+x*y^2+(x^2+1)*y+x*(x^2+1)factor(sym(630))%对符号整数分解因式ans=2*3^2*5*7河南理工大学测绘学院§3.1符号对象及其运算4.符号表达式系数的提取c=coeffs(s[,x])该函数返回多项式中按指定变量升幂顺序排列的系数,若没有指定变量,则返回所有项的常系数,且按离字符“x”近原则确定主变量。例如:symsxys=5*x*y^3+3*x^2*y^2+2*y+1;coeffs(s)%求所有项的常系数,按x的升幂排列[1,2,5,3]coeffs(s,y)%求变量y的系数[1,2,3*x^2,5*x]河南理工大学测绘学院§3.1符号对象及其运算5.符号表达式的化简MATLAB提供的对符号表达式化简的函数如下。●simplify(s):应用MuPAD简化规则对s进行化简。●simple(s):调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。例如:s=sym('(x^2+5*x+6)/(x+2)');simplify(s)ans=x+3河南理工大学测绘学院§3.1符号对象及其运算函数simple试用几种不同的化简工具,然后选择在结果表达式中含有最少字符的那种形式。例如s=sym('cos(3*acos(x))');simple(s)%自动调用多种函数对s进行化简,并显示每步结果显示一系列化简过程后,最后显示化简结果:ans=4*x^3-3*x河南理工大学测绘学院§3.1符号对象及其运算6.符号表达式与数值表达式之间的转换利用函数sym可以将数值表达式变换成它的符号表达式。例如:sym(‘[3.14,1.5]’)sym(3.14+1.5)ans=ans=[3.14,1.5]116/25函数eval可以将符号表达式变换成数值表达式。例如:phi=sym('(1+sqrt(5))/2')phi=(1+sqrt(5))/2eval(phi)ans=1.6180河南理工大学测绘学院§3.1符号对象及其运算7.符号多项式与多项式系数向量之间的转换利用函数sym2poly可以将符号多项式转换为多项式系数向量,而函数poly2sym可以将多项式系数向量转换为符号多项式。例如:u=sym2poly(sym('x^3-2*x-5'))u=10-2-5v=poly2sym(u,'Y')v=Y^3-2*Y-5河南理工大学测绘学院§3.1符号对象及其运算3.1.3符号表达式中变量的确定findsym、sysvar函数可以帮助用户查找一个符号表达式中的符号变量。该函数的调用格式为findsym(s[,n])symvar(s[,n])函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。findsym以字符串形式返回结果,symvar以向量形式返回结果。例如:河南理工大学测绘学院§3.1符号对象及其运算symsxayzb;%定义5个符号变量s1=3*x+y;s2=a*y+b;%定义2个符号表达式findsym(s1)findsym(s2,2)ans=ans=x,yy,bsymvar(s1+s2)ans=[a,b,x,y]在求函数的极限、导数和积分时,如果用户没有明确指定自变量,MATLAB将按以下原则确定主变量并对其进行相应微积分运算。●找寻除i、j之外,在字母顺序上最接近x的小写字符。●若表达式中有两个符号变量与x的距离相等,则ASCII大者优先。河南理工大学测绘学院§3.1符号对象及其运算可用findsym(s,1)或symvar(s,1)查找表达式s的主变量。例如:symsabwyzfindsym(a*z+b*w,1)ans=wfindsym(a*y+b*w,1)ans=y河南理工大学测绘学院§3.1符号对象及其运算3.1.4符号矩阵函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。【例3.1】化简矩阵,并对其因式分解。symsabxym=[(a^2-x^2)/(a+x),sin(y)^2,(x-y)/(a+b);1,15,x^2+y^2-2*x*y];simplify(m)%对符号矩阵化简处理ans=[a-x,1-cos(y)^2,(x-y)/(a+b)][1,15,x^2+y^2-2*x*y]factor(m)%对符号矩阵因式分解[a-x,sin(y)^2,(x-y)/(a+b)][1,15,(x-y)^2]xyyxbayxyxaxa2151sin22222河南理工大学测绘学院§3.1符号对象及其运算由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运算。前面介绍的应用于数值矩阵的运算符和函数,如diag,triu,tril,inv,det,rank,eig等,也可直接应用于符号矩阵。例如:A=sym('[sin(x),x^2;cos(x),log(x)]')A=[sin(x),x^2][cos(x),log(x)]河南理工大学测绘学院§3.1符号对象及其运算B=A.'B=[sin(x),cos(x)][x^2,log(x)]C=inv(A)C=[-log(x)/(x^2*cos(x)-log(x)*sin(x)),x^2/(x^2*cos(x)-log(x)*sin(x))][cos(x)/(x^2*cos(x)-log(x)*sin(x)),-sin(x)/(x^2*cos(x)-log(x)*sin(x))]E=triu(A)E=[sin(x),x^2][0,log(x)]河南理工大学测绘学院§3.1符号对象及其运算一、符号矩阵的创立(1)使用sym函数直接创建符号矩阵与直接创建数值矩阵的方法几乎完全相同。矩阵元素可以是任何不带等号的符号表达式,各符号表达式的长度可以不同;矩阵元素之间可用空格或逗号分隔。例如:a=sym('[1/s+x,sin(x)con(x)^2/(b+x);9,exp(x^2+y^2),log(tanh(y))]')a=[1/s+x,sin(x),con(x)^2/(b+x)][9,exp(x^2+y^2),log(tanh(y))]河南理工大学测绘学院§3.1符号对象及其运算(2)用创建子阵的方法创建符号矩阵该方法是仿照matlab的字符串矩阵的
本文标题:第3 章 matlab的符号运算
链接地址:https://www.777doc.com/doc-3795470 .html