1、运算对象可以是没赋值的符号变量 可以获得任意精度的解Symbolic Math Toolbox符号运算工具包通过调用Maple软件实现符号计算的。maple软件主要功能是符号运算,它占据符号软件的主导地位。3.1.符号表达式的建立3.1.1 创建符号常量符号常量是不含变量的符号表达式,用符号常量是不含变量的符号表达式,用sym(symbolic的缩写)命令来创建符号常量。命令来创建符号常量。语法:sym(常量常量)%创建符号常量创建符号常量例如:例如:a=sym(sin(2)a=sin(2)3.1.2创建符号变量和表达式1.使用使用sym命令创建符号变量和表达式命令创建符号变量和表达式语法:s
2、ym(表达式表达式)%创建符号表达式 符号变量名符号变量名=sym(表达式表达式)sym arg1%符号表达式赋给符号变量2.使用使用syms命令创建符号变量和符号表达式命令创建符号变量和符号表达式-syms用于创建多个符号变量 语法:syms(arg1,arg2,参数参数)%把字符变量定义为符号变量 syms arg1 arg2,参数参数%把字符变量定义为符号变量的简洁形式简洁形式3.使用使用 创建符号变量和符号表达式创建符号变量和符号表达式 如:f=sin(x)+5x f 符号变量名 sin(x)+5x 符号表达式 符号标识v符号表达式一定要用 单引号括起来matlab才能识别。v 的内容
3、可以是符号表达式,也可以是符号方程。【例例】使用syms命令创建符号变量和符号表达式。1、syms a b c x%创建多个符号变量 f2=a*x2+b*x+c%创建符号表达式 f2=a*x2+b*x+c 2、syms(a,b,c,x)f3=a*x2+b*x+c;%创建符号表达式 3、f3=a*x2+b*x+c例:f1=ax2+bx+c 二次三项式 f2=ax2+bx+c=0 方程 f3=Dy+y2=1 微分方程符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算3.1.3符号矩阵的创建 数值矩阵A=1,2;3,4 A=a,b;c,d 不识别1.用matlab函
4、数sym创建矩阵命令格式:A=sym()符号矩阵内容同数值矩阵 需用sym指令定义 需用 标识例如,A=sym(a,b;c,d)A=a,b c,d syms a b c dA=a b;c d A=a,b c,d注意:符号矩阵的每一行的两端都有方括号,这注意:符号矩阵的每一行的两端都有方括号,这是与是与 matlab数值矩阵的数值矩阵的 一个重要区别。一个重要区别。2.用字符串直接创建矩阵v 模仿matlab数值矩阵的创建方法v 需保证同一列中各元素字符串有相 同的长度。例:A=a,2*b;3*a,0 A=a,2*b 3*a,03.2符号矩阵的修改 a.直接修改 可用、键找到所要修改的矩阵,直接
5、修改 b.指令修改v 用A1=sym(A,new)来修改。v 用A1=subs(A,new,old)来修改v A1=subs(S,old,new)例如:A=a,2*b 3*a,0A1=sym(A,2,2,4*b)A1=a,2*b 3*a,4*b A(2,2)=4*bA3=a,2*b 3*a,4*bA2=subs(A1,c,b)A2=a,2*c 3*a,4*c v将数值矩阵转化为符号矩阵 函数调用格式:sym(A)A=1/3,2.5;1/0.7,2/5A=0.3333 2.5000 1.4286 0.4000sym(A)ans=1/3,5/210/7,2/53.3符号矩阵与数值矩阵的转换v将符号
6、矩阵转化为数值矩阵函数调用格式:numeric(A)A=1/3,5/210/7,2/5numeric(A)ans=0.3333 2.5000 1.4286 0.40001.符号矩阵运算 符号运算符同数值运算一样,所有运算操作指令都比较直观、简单。符号表达式f=2x2+3x+4与g=5x+6的代数运算。3.4 符号运算f=sym(2*x2+3*x+4)f=2*x2+3*x+4 g=sym(5*x+6)g=5*x+6 f+g%符号表达式相加符号表达式相加 ans=2*x2+8*x+10 f*g%符号表达式相乘符号表达式相乘 ans=(2*x2+3*x+4)*(5*x+6)而符号运算所有涉及符号运算
7、的操作都有专用函数来进行符号矩阵运算的函数:symadd(a,d)符号矩阵的加symsub(a,b)符号矩阵的减symmul(a,b)符号矩阵的乘symdiv(a,b)符号矩阵的除sympow(a,b)符号矩阵的幂运算symop(a,b)符号矩阵的综合运算例1:f=2*x2+3*x-5;g=x2+x-7;h=symadd(f,g)h=3*x2+4*x-12例2:f=cos(x);g=sin(2*x);symop(f,/,g,+,f,*,g)ans=cos(x)/sin(2*x)+cos(x)*sin(2*x)例1:syms x f=2*x2+3*x-5;h=f+gh=3*x2+4*x-12例2
8、:syms x f=cos(x);f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x)符号运算函数:symsize 求符号矩阵维数charploy 特征多项式determ 符号矩阵行列式的值eigensys 特征值和特征向量inverse 逆矩阵transpose 矩阵的转置jordan 约当标准型simple 符号矩阵简化【例例】求矩阵的行列式值、非共轭转置和特征值。syms a11 a12 a21 a22 A=a11 a12;a21 a22%创建符号矩阵创建符号矩阵 A=a11,a12 a21,a22 det(A)%计算行列式计算行列式 ans=a11*a22-a1
9、2*a21 A.%计算非共轭转置计算非共轭转置 ans=a11,a21 a12,a22 eig(A)%计算特征值计算特征值 2.任意精度的数学运算 在symbolic中有三种不同的算术运算:1.数值类型 matlab的浮点算术运算2.有理数类型 maple的精确符号运算3.vpa类型 maple的任意精度算术 运算 浮点算术运算1/2+1/3 (定义输出格式format long)ans=0.83333333333333符号运算sym(1/2)+(1/3)ans=5/6 精确解 任意精度算术运算digits(n)设置可变精度,缺省16位vpa(x,n)显示可变精度计算digits(25)vpa
10、(1/2+1/3)ans=.8333333333333333333333333vpa(5/6,40)ans=.8333333333333333333333333333333333333333 a=sym(1/4,exp(1);log(3),3/7)a=1/4,exp(1)log(3),3/7vpa(a,10)ans=.2500000000,2.7182818281.098612289,.4285714286diff(f)对缺省变量求微分diff(f,v)对指定变量v求微分diff(f,v,n)对指定变量v求n阶微分int(f)对f表达式的缺省变量求积分int(f,v)对f表达式的v变量求积分i
11、nt(f,v,a,b)对f表达式的v变量在(a,b)区间求定积分3.5 符号微积分与积分变换int(被积表达式,积分变量,积分上限,积分下限)定积分缺省时为不定积分mtaylor(f,n)泰勒级数展开ztrans(f)Z变换Invztrans(f)反Z变换Laplace(f)拉氏变换Invlaplace(f)反拉氏变换fourier(f)付氏变换Invfourier(f)反付氏变换求极限函数limit用于求符号函数f的极限。系统可以根据用户要求,计算变量从不同方向趋近于指定值的极限值。该函数的格式及功能:limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x
12、)函数的极限值。limit(f,a):由于没有指定符号函数f(x)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,既变量x趋近于a。limit(f):符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。limit(f,x,a,right):求符号函数f的极限值。right表示变量x从右边趋近于a。limit(f,x,a,left):left表示变量x从左边趋近于a。例求极限 syms x%定义符号变量f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/si
13、n(x)3 w=limit(f)%求函数的极限w=-1/2 例1.计算二重不定积分F=int(int(x*exp(-x*y),x),y)F=1/y*exp(-x*y)例2.计算 f=x*exp(-x*10)的Z变换 F=ztrans(f)F=z*exp(-10)/(z-exp(-10)2 syms x y F=int(int(x*exp(-x*y),x),y)F=1/y*exp(-x*y)syms x f=x*exp(-x*10);F=ztrans(f)F=ztrans(x*exp(-x*10);F=z*exp(-10)/(z-exp(-10)2 例3.计算指数函数eAt。用拉氏反变换法计算e
14、At的公式为:eAt=L-1(SI-A)-1系统矩阵A=eAt=结果:a=0 1;-2-3;syms s b=(s*eye(2)-a)b=s,-1 2,s+3 B=inv(b)(s+3)/(s2+3*s+2),1/(s2+3*s+2)-2/(s2+3*s+2),s/(s2+3*s+2)3.5 符号代数方程求解 matlab符号运算能够解一般的线性方程、非线性方程及一般的代数方程、代数方程组。当方程组不存在符号解时,又无其他自由参数,则给出数值解。命令格式:solve(f)求一个方程的解Solve(f1,f2,fn)求n个方程的解 例1.f=ax2+bx+c 求解f=a*x2+b*x+c;sol
15、ve(f)对缺省变量x求解ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)计算机格式一般格式例2.符号方程cos(x)=sin(x)tan(2*x)=sin(x)求解f1=solve(cos(x)=sin(x),f1=1/4*pi solve(f,b)对指定变量b求解ans=-(a*x2+c)/xf2=matlab6.5的解 0 pi atan(1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(-1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)+pi-atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)-pi f2=solve(tan(2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1