数模培训-matlab3 MATLAB符号计算功能_第1页
数模培训-matlab3 MATLAB符号计算功能_第2页
数模培训-matlab3 MATLAB符号计算功能_第3页
数模培训-matlab3 MATLAB符号计算功能_第4页
数模培训-matlab3 MATLAB符号计算功能_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

MATLAB的符号运算

符号表达式、符号矩阵的创建符号线性代数因式分解、展开和简化符号代数方程求解符号微积分符号微分方程什么是符号运算 与数值运算的区别※数值运算中必须先对变量赋值,然后才能参与运算。※符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。特点运算对象可以是没赋值的符号变量。可以获得任意精度的解。SymbolicMathToolbox——符号运算工具包,通过调用Maple软件实现符号计算。Maple软件——主要功能是符号运算,它占据符号软件的主导地位。

MATLAB包含两个相关的工具箱:基本符号工具箱和扩展符号工具箱符号工具箱引入了符号对象;而数值运算中的数据被称为数值对象。符号工具箱重载了MATLAB中的许多数值计算函数,故使用方便。一、符号变量与符号表达式1符号变量:sym函数(symbolic的缩写)例>>x=sym(‘x’)>>y=sym(‘y’)syms函数例>>symsxyz两者功能相同,但syms输入更方便。2符号表达式例:

>>f=sym('sin(x)+5*x’)f——符号变量名

sin(x)+5*x——符号表达式

'

'——符号标识※符号表达式一定要用''单引号括起来MATLAB才能识别。‘’的内容可以是符号表达式,也可以是符号方程。例:

f1=sym('ax^2+bx+c')——二次三项式

f2=sym('ax^2+bx+c=0')——方程

f3=sym('Dy+y^2=1')——微分方程※符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算。例1

sym('x'),rho=sym('(1+sqrt(5))/2')f=rho^2-rho-1,fs=simplify(f)ans=xrho=(1+sqrt(5))/2f=(1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)fs=0符号对象和数值对象之间的转换例2rho=sym('(1+sqrt(5))/2');a=double(rho)b=sym((1+sqrt(5))/2,'r')digits(5);c=sym((1+sqrt(5))/2,'d')a=1.6180b=7286977268806824*2^(-52)c=1.61803确定符号表达式中自由变量的规则:

1)只对除i和j以外的单个小写英文字母进行搜索;

2)默认x是首选变量;

3)其余小写字母被选中为自由变量的次序是,在字母表中,靠x距离近的优先;在x之后的优先。符号表达式默认自变量a*x^2+b*x+cx1/(4+cos(t))t4*x/yx2*a+bb2*i+4*jx注意:

1)符号计算中出现的数字也都是当作符号处理的;

2)符号表达式对空格很敏感,请不要在字符间乱加修饰性空格符;

3)为了得到最简结果,可能要多次使用命令simplify和simple。

4)数值对象不能参与符号运算,符号对象不能参与数值运算。3.符号矩阵的创建

数值矩阵A=[1,2;3,4]A=[a,b;c,d]——不识别

用MATLAB函数sym创建矩阵命令格式:A=sym('[]')

※符号矩阵内容同数值矩阵

※需用sym指令定义

※需用''标识例3:A=sym('[a,2*b;3*a,0]')A=[a,2*b][3*a,0]这就完成了一个符号矩阵的创建。注意:符号矩阵的每一行的两端都有方号,这是与MATLAB数值矩阵的一个重要区别。※将数值矩阵转化为符号矩阵。函数调用格式:sym(A)例4A=[1/3,2.5;1/0.7,2/5]

A=0.33332.50001.42860.4000

sym(A)ans=[1/3,5/2][10/7,2/5]

符号矩阵与数值矩阵的转换※将符号矩阵转化为数值矩阵函数调用格式:numeric(A)例4(续)A=[1/3,5/2][10/7,2/5]numeric(A)

ans=0.33332.50001.42860.4000

符号矩阵的操作和运算(包括数组运算和矩阵运算)与数值矩阵的操作和运算雷同。例如:a=b+c;a=a*b;A=2*a^2+3*a-5等。

二、符号矩阵的基本运算例5: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:f=cos(x);g=sin(2*x);>>symsx>>f=cos(x);g=sin(2*x);>>f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x)符号函数特有的复合函数和反函数finverse(f)对默认自变量的函数求反函数finverse(f,v)对指定自变量为v的函数f(v)求反函数compose(f,g)求f=f(x)和g=g(y)的复合函数f(g(y))compose(f,g,z)求f=f(x)和g=g(y)的复合函数f(g(z))compose(f,g,x,z)求f=f(x)和g=g(y)的复合函数f(g(z)),其中x是f的自变量compose(f,g,x,y,z)求f=f(x)和g=g(y)的复合函数f(g(z)),其中x是f的自变量,y是g的自变量

例7symsxyztuv;h=x^t;p=exp(-y/u);fz=compose(h,p,x,y,z),fi=finverse(exp(u-2*v),u)

fz=exp(-z/u)^tfi=2*v+log(u)因式分解、展开和化简collect(F)将表达式F中相同幂次的项合并expand(F)将表达式F展开factor(F)将表达式F因式分解simplify(F)利用代数上的函数规则对表达式F进行化简simple(F)以尽可能的办法将F表示式再做简化,目的是使表达式以最少的字表示出来。例8a=sym('(s+1)/(s^2+5*s+6)');b=factor(a),symsx;a=sym((x+1)^3);c=expand(a)a=-1/4*x*exp(-2*x)+3/16*exp(-2*x);d1=collect(a,exp(-2*x)),d2=collect(a,'x')a=x^3-6*x^2+11*x-6;e=horner(a)a=sym('sin(x)^2+3*x+cos(x)^2-5');b=sym('(1-a^2)/(1-a)');A=[a,b];simplify(A);simple(A)

例8运行结果:

b=(s+1)/(s+3)/(s+2)c=x^3+3*x^2+3*x+1d1=(-1/4*x+3/16)*exp(-2*x)d2=-1/4*x*exp(-2*x)+3/16*exp(-2*x)e=-6+(11+(-6+x)*x)*xans=[-4+3*x,a+1]ans=[-4+3*x,a+1]注:因式操作仅针对矩阵中的元素进行。diff(f)—对缺省变量求微分diff(f,v)—对指定变量v求微分diff(f,v,n)—对指定变量v求n阶微分int(f)—对f表达式的缺省变量求积分int(f,v)—对f表达式的v变量求积分int(f,v,a,b)—对f表达式的v变量在(a,b)区间求定积分三符号微积分int(‘被积表达式’,‘积分变量’,‘积分上限’,'积分下限')——定积分——缺省时为不定积分例9

积分

symsxkreal;f=exp(-(k*x)^2);int(f,x,-inf,inf)

ans=signum(k)/k*pi^(1/2)例10

多重积分

symsxyzF2=int(int(int(x^2+y^2+z^2,…z,sqrt(x*y),x^2*y),…y,sqrt(x),x^2),x,1,2);VF2=vpa(F2,10) VF2=224.9215357例11求导数

y=sym('sin(a*x)');a=diff(y),b=diff(y,2)c=diff(y,'x',2),d=diff(y,'a',1)

a=cos(a*x)*ab=-sin(a*x)*a^2c=-sin(a*x)*a^2d=cos(a*x)*x例12.计算二重不定积分F=int(int('x*exp(-x*y)','x'),'y')F=1/y*exp(-x*y)求极限和级数limit(f,x,a)----若a=0,且是对x求极限,可简写为limit(f)limit(f,x,a,’left’)----左趋近于alimit(f,x,a,’right’)----右趋近于asymsum(s,v,a,b)----自变量v在[a,b]之间取值时,对通项s求和。toylor(F,v,n)----求F对自变量v的泰勒级数展开至n阶例13

求极限

symsxn;limit((1+x/n)^n,n,inf)limit(1/x,x,0,'left')ans=exp(x)ans=-inf例14

级数求和

s1=symsum(x^2,x,0,10)s2=symsum(x^k,k,0,inf)s1=385s2=-1/(x-1)四.符号代数方程求解

MATLAB符号运算能够解一般的线性方程、非线性方程及一般的代数方程、代数方程组。当方程组不存在符号解时,又无其他自由参数,则给出数值解。命令格式:solve(f)——求一个方程的解Solve(f1,f2,…fn)——求n个方程的解使用solve时,要求未知数的个数和方程的个数一致。例15.f=ax2+bx+c求解A=solve('a*x^2+b*x+c')——对缺省变量x求解A=[1/2/a*(-b+(b^2-4*a*c)^(1/2))][1/2/a*(-b-(b^2-4*a*c)^(1/2))]计算机格式一般格式例16.分别对符号方程cos(x)=sin(x)tan(2*x)=sin(x)求解

f1=solve('cos(x)=sin(x)'),

f1=

1/4*pisolve('f','b')——对指定变量b求解ans=-(a*x^2+c)/xf2=solve('tan(2*x)=sin(x)')f2= [0][acos(1/2+1/2*3^(1/2))][acos(1/2-1/2*3^(1/2))]numeric(f2)ans=00+0.8314i1.9455例17用solve解方程

s=solve('2*x^2=(x-1)'),n=double(s),s=vpa(n,10)s=[1/4+1/4*i*7^(1/2)][1/4-1/4*i*7^(1/2)]n=0.2500+0.6614i0.2500-0.6614is=[.25000+.6614378278*i][.25000-.6614378278*i]例18解方程组x+y+z=1x-y+z=22x-y-z=1>>f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')>>f.x,f.y,f.zf=x:[1x1sym]y:[1x1sym]z:[1x1sym]ans=2/3ans=-1/2ans=5/6

[x,y,z]=solve(‘x+y+z=1’,…'x-y+z=2','2*x-y-z=1')

x=2/3y=-1/2z=5/6五符号微分方程求解

——用一个函数可以方便地得到微分方程的符号解符号微分方程求解指令:dsolve命令格式:dsolve(f,g)f——微分方程,可多至12个微分方程的求解;g为初始条件默认自变量为‘t',可任意指定自变量‘x','u'等微分方程的各阶导数项以大写字母D表示或或或y的一阶导数——Dyy的二阶导数——D2yy的n阶导数——Dny[y1,y2…]=dsolve(x1,x2,…xn)——返回微分方程的解。一阶微分方程例19dsolve('Dx=y','Dy=x','x(0)=0','y(0)=1')ans=x(t)=sin(t),y(t)=cos(t)二阶微分方程例20dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0‘,’x’)ans=cos(a*x)例21y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')ans=exp(-x)*cos(x)+exp(-x)*sin(x)求该方程的解例22微分方程组

[f,g]=dsolve('Df=3*f+4*g',...'Dg=-4*f+3*g',...'f(0)=0,g(0)=1')f=exp(3*t)*sin(4*t)g=exp(3*t)*cos(4*t)例2

温馨提示

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

评论

0/150

提交评论