第6章MATLAB的符号运算教学教案_第1页
第6章MATLAB的符号运算教学教案_第2页
第6章MATLAB的符号运算教学教案_第3页
第6章MATLAB的符号运算教学教案_第4页
第6章MATLAB的符号运算教学教案_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章MATLAB符号计算及工具箱电子科技大学

王洪

MathWorks公司在1993年收购了主要针对符号计算的MAPLIEV软件的使用,以MAPLIE内核为符号计算的引擎,开发了符号数学工具箱(SymbolicMathToolbox)。MAPLIE占据符号软件的主导地位,符号运算工具包通过调用Maple软件实现符号计算的。在符号计算中,参与运算的是符号变量而不是数值,使用字符串进行分析。数值运算中必须先对变量赋值,然后才能参与运算。符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达,可以获得任意精度的解。

MATLAB的符号数学工具箱包括基本符号数学工具箱和扩展数学工具箱。符号数学工具箱有三个通道与MAPLIE交换信息:基本符号数学工具箱、专门的M文件和函数计算器。符号常量、符号变量、符号表达式、符号矩阵的创建符号表达式的代数运算符号表达式的操作和转换符号极限、符号微分、符号积分、符号级数符号积分变换§6.1符号表达式的建立1.创建符号常量符号常量是不含变量的符号表达式。语法:

sym(‘常量’) %创建符号常量

例如,创建符号常量,这种方式是绝对准确的符号数值表示:

>>a=sym('sin(2)')a=sin(2)sym命令也可以把数值转换成某种格式的符号常量语法:sym(常量,参数)%把常量按某种格式转换为符号常量

参数作用d返回最接近的十进制数值(默认位数为32位)f返回该符号值最接近的浮点表示r返回该符号值最接近的有理数型(为系统默认方式),可表示为p/q、p*q、10^q、pi/q、2^q和sqrt(p)形式之一e返回最接近的带有机器浮点误差的有理值2.创建符号变量和符号表达式S=sym(arg)从表达式arg创建一个sys对象S,如果arg是数值标量或矩阵,应当作数值对应的符号。x=sym(‘x‘)建立符号变量x,其值为单引号内的内容。x=sym(‘x‘,’real’)设定符号变量为实型变量。x=sym(‘x‘,’unreal’)取消符号变量的实型属性,成为纯粹的形式变量。sym(‘表达式’)例:f1=sym('a*x^2+b*x+c')

3.定义多个符号变量symsarg1arg2...symsarg1arg2...realsymsarg1arg2...unrealsymsarg1arg2...isshort-handnotationforarg1=sym('arg1');arg2=sym('arg2');...symsarg1arg2...realisshort-handnotationforarg1=sym('arg1','real');arg2=sym('arg2','real');...4.创建符号矩阵用sys命令:矩阵元素是不带等号的符号表达式,矩阵元素长度可以不同。例:A=sym('[4+xx^2x;x^35*x-3x*a]')或先创建符号变量symsxaA=[4+xx^2x;x^35*x-3x*a]结果:A=[4+x,x^2,x][x^3,5*x-3,x*a]5.数字矩阵转化为符号矩阵数值变量与符号变量不能进行运算,需要将数值矩阵转化为符号矩阵,数值矩阵中的小数按最近的有理数转化。例:A=[1/3,2.5;1/0.7,2/5]A=0.33332.50001.42860.4000sym(A)ans=[1/3,5/2][10/7,2/5]6.将符号矩阵转化为数值矩阵函数调用格式:double(A)numeric(A)A=[1/3,5/2][10/7,2/5]numeric(A)ans=0.33332.50001.42860.4000三种数据类型之间的转换:MATLAB有三种数值型、字符型和符号型,优先级符号型最高,混合运算时将自动转换为高级数据类型。转换指令:1)转化为符号型:S=sym(f);2)转化为字符变量:S=int2str(x)整数转化为字符变量,x为有理数先四舍五入,x为虚数,只转化实部。S=num2str(x)普通数值类型转化为字符变量。3)转化为数值型:X=double(s);X=numeric(s);X=srt2num(s):字符型转化为数值型,若s中含有非字符型变量,返回空矩阵。7符号表达式或矩阵的修改1)重新赋值。2)指令修改用A1=subs(A,‘old’,‘new’)来修改。

用‘new’置换符号表达式A中的’old’得到新的符号表达式A1。例:symsab;

A=[a,2*b;3*a,0]A(2,2)=4*bA=[a,2*b][3*a,4*b]A2=subs(A1,‘b',‘c')A2=[a,2*(c)][3*a,4*(c)] 新版MATLAB采用了重载技术,使得符号运算的算符和基本函数与数值运算中的算符和基本函数几乎完全相同。所以符号运算操作指令都比较直观、简单。

例1:f=2*x^2+3*x-5;g=x^2+x-7;symsx

f=2*x^2+3*x-5;g=x^2+x-7;

h=f+gh=3*x^2+4*x-12

§6.2符号矩阵的基本运算例2:f=cos(x);g=sin(2*x);symsxf=cos(x);g=sin(2*x);f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x)

符号运算中的运算符(2)关系运算符在符号对象的比较中,没有“大于”、“大于等于”、“小于”、“小于等于”的概念,只有“等于”和“不等于”的概念。“==”和“~=”(1)基本运算符运算符“+”,“-”,“*”,“\”,“/”,“^”分别实现符号矩阵的加、减、乘、左除、右除、求幂运算。运算符“.*”,“./”,“.\”,“.^”分别实现符号数组的乘、除、求幂,即数组间元素与元素的运算。运算符“′”,“.′”分别实现符号矩阵的共轭转置、非共轭转置。(1)三角函数和双曲函数三角函数包括sin、cos、tan;双曲函数包括sinh、cosh、tanh;三角反函数除了atan2函数仅能用于数值计算外,其余的asin、acos、atan函数在符号运算中与数值计算的使用方法相同。(2)指数和对数函数指数函数sqrt、exp、expm的使用方法与数值计算的完全相同;对数函数在符号计算中只有自然对数log(表示ln),而没有数值计算中的log2和log10。(3)复数函数复数的共轭conj、求实部real、求虚部imag和求模abs函数与数值计算中的使用方法相同。但没有提供求相角的命令。(4)矩阵代数命令常用矩阵代数命令有diag,triu,tril,inv,det,rank,poly,expm,eig等,用法几乎与数值计算中的情况完全一样。函数运算§6.3符号表达式的操作和转换小写字母i和j不能作为自由变量。符号表达式中如果有多个字符变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。大写字母比所有的小写字母都靠后。1.自由变量的确定语法: findsym(EXPR,n) %确定自由符号变量说明:EXPR可以是符号表达式或符号矩阵;n为按顺序得出符号变量的个数,当n省略时,则不按顺序得出EXPR中所有的符号变量。2.findsym函数f=sym('a*x^2+b*x+c')f=a*x^2+b*x+cfindsym(f) %得出所有的符号变量ans=a,b,c,x3.符号表达式的化简多项式形式的表达方式:f(x)=x3+6x2+11x-6因式形式的表达方式:f(x)=(x-1)(x-2)(x-3)嵌套形式的表达方式:f(x)=x(x(x-6)+11)-6

(1)pretty函数给出排版形式的输出结果(2)collect函数对符号变量合并同类项,多个符号变量,可以指定按某个符号变量合并同类项。(3)expand函数将符号表达式展开成多项式形式。(4)honer函数将符号表达式写成嵌套形式。(5)factor函数将符号表达式写成因式的形式。(6)simplify函数利用各种恒等式对符号表达式化简。(7)simple函数给出多种化简形式。f=sym('x^3-6*x^2+11*x-6') %多项式形式

f=x^3-6*x^2+11*x-6g=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)-6给出多种化简形式。例:演示上述函数功能。4.求反函数和复合函数(1)求反函数finverse(f,v)%对指定自变量v的函数f(v)求反函数说明:当v省略,则对默认的自由符号变量求反函数例:求tex的反函数。f=sym('t*e^x') %原函数

f=t*e^xg=finverse(f) %对默认自由变量求反函数

g=log(x/t)/log(e)g=finverse(f,'t') %对t求反函数

g=t/(e^x)(2)求复合函数compose(f,g)%求f(x)和g(y)的复合函数f(g(y))compose(f,g,’z’)%求f(x)和g(y)的复合函数f(g(z))例:计算tex与ay2+by+c的复合函数。f=sym('t*e^x'); %创建符号表达式g=sym('a*y^2+b*y+c'); %创建符号表达式h1=compose(f,g) %计算f(g(x))

h1=t*e^(a*y^2+b*y+c)

h2=compose(g,f) %计算g(f(x))

h2=a*t^2*(e^x)^2+b*t*e^x+ch3=compose(f,g,'z') %计算f(g(z))

h3=t*e^(a*z^2+b*z+c)(3)提取分子和分母

如果符号表达式是一个有理分式(两个多项式之比),可以利用numden函数来提取分子或分母,还可以进行通分。语法: [n,d]=numden(f)说明:n为分子;d为分母;f为有理分式。例:用numden函数来提取符号表达式和f1=sym('1/(s^2+3*s+2)')

f2=sym('1/s^2+3*s+2')

[n1,d1]=numden(f1)

[n2,d2]=numden(f2)

§6.4符号极限、微积分和级数求和表达式函数格式说明limt(f)对x求趋近于0的极限

limt(f,x,a)对x求趋近于a的极限,当左右极限不相等时极限不存在。limt(f,x,a,left)对x求左趋近于a的极限

limt(f,x,a,right)对x求右趋近于a的极限1.符号极限例:分别求1/x在0处从两边趋近、从左边趋近和从右边趋近的三个极限值。f=sym('1/x')

f=1/xlimit(f) %对x求趋近于0的极限

ans=NaNlimit(f,'x',0) %对x求趋近于0的极限

ans=NaNlimit(f,'x',0,'left') %左趋近于0

ans=-inflimit(f,'x',0,'right') %右趋近于0

ans=inf2.符号微分 diff(f) %求f对自由变量的一阶微分 diff(f,t) %求f对符号变量t的一阶微分 diff(f,n) %求f对自由变量的n阶微分 diff(f,t,n) %求f对符号变量t的n阶微分例:已知f(x)=ax2+bx+c,求f(x)的微分。f=sym('a*x^2+b*x+c')

f=a*x^2+b*x+cdiff(f) %对默认自由变量x求一阶微分

ans=2*a*x+bdiff(f,'a') %对符号变量a求一阶微分

ans=x^2diff(f,'x',2)%对符号变量x求二阶微分

3.符号积分int(f,’t’) %求符号变量t的不定积分int(f,’t’,a,b) %求符号变量t的积分int(f,’t’,’m’,’n’) %求符号变量t的积分

。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)3.级数求和

symsum(s,x,a,b) %计算表达式s的级数和说明:x为自变量,x省略则默认为对自由变量求和;s为符号表达式;[a,b]为参数x的取值范围。symsxks1=symsum(1/k^2,1,10) %计算级数的前10项和s1=1968329/1270080s2=symsum(1/k^2,1,inf) %计算级数和

s2=1/6*pi^2s3=symsum(x^k,'k',0,inf) %计算对k为自变量的级数和

s3=-1/(x-1)4.泰勒级数展开taylor(F,x,n) %求泰勒级数展开说明:x为自变量,F为符号表达式;对F进行泰勒级数展开至n项,参数n省略则默认展开前5项symsxs1=taylor(exp(x),8) %展开前8项

s2=taylor(exp(x)) %默认展开前5项

泰勒级数展开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论