matlab符号运算功能_第1页
matlab符号运算功能_第2页
matlab符号运算功能_第3页
matlab符号运算功能_第4页
matlab符号运算功能_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

符号运算功能

字符和字符串运算是各种高级语言必不可少的部分,matab作为一种高级的科学计算语言,字符串运算功能同样是很丰富的,利用字符串处理工具箱(symbolictoolbox)和与maple的接口,可以实现很多功能。

1、通过调用matlab的各种功能函数进行常用符号运算。字符串操作,符号表达式与符号矩阵的基本操作,符号矩阵的运算,符号微积分运算,符号线性方程求解,符号微分方程运算,特殊数学符号函数,符号函数图形等。2、通过与maple的接口实现功能扩展。1字符串及字符串函数在matlab中所有的字符串都用单引号设定输入或赋值(yesinput命令除外)字符串的每个字符都是矩阵相应的一个元素字符串和字符数组基本上是等价的

>>s='matrixlaboratory's=matrixlaboratory>>size(s)ans=117>>s(3)ans=t>>s2=['matlab']s2=matlab2字符串函数Char:生成字符数组Double:字符串转换为数值代码Cellstr:字符数组转换为字符串>>s3=char('s','y','m','b','o','l','i','c');>>s3'ans=symbolic>>double(s3)'ans=1151211099811110810599>>double(s3')ans=1151211099811110810599>>cellstr(s3)ans='s''y''m''b''o''l''i''c'3字符数组与字符串之间的转换函数名可实现功能函数名可实现功能num2str数字转换为字符串Str2num转换字符串为数字Int2str整数转换为字符串Sprintf将格式数据写为字符串Mat2str矩阵转换为字符串Sscanf在格式控制下读字符串>>a=[1:5];>>b=num2str(a);>>a*2ans=246810>>b*2ans=986464100646410264641046464106>>str2num(b)*2ans=2468104字符串操作5Eval:执行字符串>>i=2;j=3;>>t='i+j't=i+j>>a=eval(t)a=5>>d='cd';>>eval(d)d:\MATLAB6p1\work6符号表达式的生成符号表达式包括符号函数(无等号)和符号方程(有等号)>>f='log(x)'f=log(x)>>equation='a*x.^2+b*x+c=0'equation=a*x.^2+b*x+c=0>>diffeq='Dy-y=x'diffeq=Dy-y=x>>f=sym('sin(x)')f=sin(x)>>f=sym('sin(x)^2=0')f=sin(x)^2=0>>symsx>>f=sin(x)+cos(x)f=sin(x)+cos(x)7符号与数值之间的转换Digits(D):函数设置返回有效数字个数为D的近似解精度R=vpa(S)或vpa(S,D):函数返回设定精度下的近似解n=Numeric(S):将不含自由变量的符号表达式转换为数值形式,等同于n=double(sym(s))8>s=solve('3*x^2-exp(x)=0')s=[-2*lambertw(-1/6*3^(1/2))][-2*lambertw(-1,-1/6*3^(1/2))][-2*lambertw(1/6*3^(1/2))]>>vpa(s)ans=[.910906065…][3.73342006…][-.45896226753694851459…]>>vpa(s,6)ans=[.910008][3.73308][-.458962]>>x=sym('x');>>f=x-cos(x)f=x-cos(x)>>f1=subs(f,'pi',x)f1=pi+1>>digits(10)>>vpa(f1)ans=4.141592654>>numeric(f1)ans=4.1416>>double(f1)ans=4.141694.符号函数的运算复合函数的运算:若函数z=z(y)的自变量y又是x的函数y=y(x),则求z对x的过程称为复合函数运算Compose(f,g)Compose(f,g,z)Compose(f,g,x,z)Compose(f,g,x,y,z)反函数的运算g=finverse(f)G=finverse(f,v)10符号矩阵的创建直接创建>>a=sym('[1/s+x,sin(x),x;8,exp(x),pi]')a=[1/s+x,sin(x),x][8,exp(x),pi]用创建子阵方法创建>>b=[a;'[3,log(x.^2),6*x/y]']b=[1/s+x,sin(x),x][8,exp(x),pi][3,log(x.^2),6*x/y]11将数值矩阵转化为符号矩阵>>a=[2/3,sqrt(2),0.222;1.4,1/0.23,log(3)]a=0.66671.41420.22201.40004.34781.0986>>b=sym(a)b=[2/3,sqrt(2),111/500][7/5,100/23,477*2^(-52)]符号矩阵的索引和修改>>b(2,3)ans=49477*2^(-52)>>b(2,3)='log(9)'b=[2/3,sqrt(2),111/500][7/5,100/23,log(9)]12符号矩阵的运算基本运算:与数值矩阵相同简化factor(s)因式分解>>%符号表达式的分解>>symsx>>factor(x^9-1)ans=(x-1)*(x^2+x+1)*(x^6+x^3+1)>>%大整数的分解>>factor(sym('123456789'))ans=(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)13expand(S):符号展开>>symsxy>>expand((x+1)^3)ans=x^3+3*x^2+3*x+1>>expand(sin(x+y))ans=sin(x)*cos(y)+cos(x)*sin(y)14合并:collect(S,v):将符号矩阵S中各元素的v按同幂项系数合并化简:Simplify(s):简化符号矩阵的每一个元素[R,HOW]=simple(S)分式通分:[N,D]=numden(A):把A的各元素转换为分子分母都是整系数的最佳形式“秦九昭型”重写:Horner(P):把符号多项式转换成嵌套形式表达式>>horner(x^3-6*x^2+11*x-6)ans=-6+(11+(-6+x)*x)*x15符号微积分符号极限limit(F,x,a):计算符号表达式F在x时的极限值limit(F,a):独立变量a时的极限值limit(F):默认a=0limit(F,x,a,’right’),limit(F,x,a,’right’)指明极限方向16>>symsxath;>>limit(sin(x)/x)ans=1>>limit((1+2*t/x)^(3*x),x,inf)ans=exp(6*t)>>limit(1/x,x,0,'right')ans=inf17符号积分int(S,v):计算符号表达式S对符号自变量v的不定积分int(S,a,b):计算定积分,[a,b]为区间,默认自变量int(S,v,a,b):计算定积分,v为自变量,[a,b]为区间symsum(S):计算符号表达式对符号变量的不定和symsum(S,v):计算符号表达式对变量v的不定和symsum(S,a,b)

symsum(S,v,a,b):

计算[a,b]的有限和18>>symsxx1alphaut;>>A=[cos(x*t),sin(x*t);-sin(x*t),cos(x*t)];>>int(A,t)ans=[sin(x*t)/x,-1/x*cos(x*t)][1/x*cos(x*t),sin(x*t)/x]>>int(x1*log(1+x1),0,1)ans=1/4>>symsk>>simple(symsum(k))ans=1/2*k*(k-1)>>symsum(k^2,0,10)ans=38519符号微分和差分diff(S),diff(S,’v’),diff(S,n),diff(S,’v’,n),diff(S,n,’v’)微分或差分,S为表达式,v为自变量,n为微分的重数[FX,FY]=gradient(F),[FX,FY]=gradient(F,H),[FX,FY]=gradient(F,HX,HY),[FX,FY,FZ]=gradient(F),[FX,FY,FZ]=gradient(F,HX,HY,HZ)近似梯度函数,各方向默认间隔为1,FX=dF/dx,H为指定间隔,HX为指定X方向间隔。jacobian(f,v):

计算数量或向量f对向量v的jacobian矩阵20求下式的jacobian矩阵>>x=sym(['x']);>>y=sym(['y']);>>jacobian([x^2+y^2;x^2-y^2],[x,y])ans=[2*x,2*y][2*x,-2*y]21符号代数方程求解线性方程组的解析解法:linsolve,solve,vpa非线性方程的解析解法:fsolveX=fsolve(‘fun’,X0)X=fsolve(‘fun’,X0,OPTIONS)X=fsolve(‘fun’,X0,OPTIONS,’GRADFUN’)X=fsolve(‘fun’,X0,OPTIONS,’GRADFUN’,P1,P2,…)Fun为需求解的函数名,X0为初始向量或矩阵,OPTIONS为参数输入向量,‘GRADFUN’为输入函数在x处的偏导数,p1,p2为问题定性参数,详细用法请看helpfsolve。22方程组求解>>a=sym('[10,-1,0;-1,10,-2;0,-2,10]');>>b=('[9;7;6]');>>linsolve(a,b)ans=[473/475][91/95][376/475]>>vpa(ans)ans=[.995789473684217421][.957894736842105263][.7921842]23非线性方程求解%编制函数文件fc.m如下%fc.mfunctiony=fc(x)y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2));y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2));y=[y(1)y(2)];>>x0=[0.50.5];>>fsolve('fc',x0)Optimizationterminatedsuccessfully:Relativefunctionvaluechangingbylessthan。。。ans=0.52650.507924符号微分方程求解(dsolve)dsolve(‘eqn1’,’eqn2’,…)输入参数为代表微分方程及初始条件的符号方程。默认自变量为t,D3y表示对y(t)的三阶微分,如果初始条件数目少于被微变量的数目,则结果中要包含不定常数C1,C2等。25>>dsolve('Dx=-a*x')ans=C1*exp(-a*t)>>x=dsolve('Dx=-a*x','x(0)=1','s')x=exp(-a*s)>>S=dsolve('Du=v','Dv=w','Dw=-u','u(0)=0','v(0)=0','w(0)=1')S=u:[1x1sym]v:[1x1sym]w:[1x1sym]>>S.u=1/3*exp(-t)-1/3*exp(1/2*t)*cos(1/2*t*3^(1/2))+1/3*3^(1/2)*exp(1/2*t)*sin(1/2*t*3^(1/2))>>S.v=-1/3*exp(-t)+1/3*exp(1/2*t)*cos(1/2*t*3^(1/2))+1/3*3^(1/2)*exp(1/2*t)*sin(1/2*t*3^(1/2))>>S.w=2/3*exp(1/2*t)*cos(1/2*t*3^(1/2))+1/3*exp(-t)2610.符号函数的二维图ezplot(f)ezplot(f,xmin,xmax)ezplot(f,[xmin,xm

温馨提示

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

评论

0/150

提交评论