您好,欢迎访问三七文档
第3章符号运算95第3章符号运算3.1算术符号操作命令+、-、*、.*、\、.\、/、./、^、.^、’、.’功能符号矩阵的算术操作用法如下:A+B、A-B符号阵列的加法与减法。若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。A*B符号矩阵乘法。A*B为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数。即:若An*k*Bk*m=(aij)n*k.*(bij)k*m=Cn*m=(cij)n*m,则k1ssjisijbac,i=1,2,…,n;j=1,2,…,m。或者至少有一个为标量时,方可进行乘法操作,否则将返回一出错信息。A.*B符号数组的乘法。A.*B为按参量A与B对应的分量进行相乘。A与B必须为同型阵列,或至少有一个为标量。即:An*m.*Bn*m=(aij)n*m.*(bij)n*m=Cn*m=(cij)n*m,则cij=aij*bij,i=1,2,…,n;j=1,2,…,m。A\B矩阵的左除法。X=A\B为符号线性方程组A*X=B的解。我们指出的是,A\B近似地等于inv(A)*B。若X不存在或者不唯一,则产生一警告信息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方程组必须是相容的。A.\B数组的左除法。A.\B为按对应的分量进行相除。若A与B为同型阵列时,An*m.\Bn*m=(aij)n*m.\(bij)n*m=Cn*m=(cij)n*m,则cij=aij\bij,i=1,2,…,n;j=1,2,…,m。若若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。A/B矩阵的右除法。X=B/A为符号线性方程组X*A=B的解。我们指出的是,B/A粗略地等于B*inv(A)。若X不存在或者不唯一,则产生一警告信息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方程组必须是相容的。A./B数组的右除法。A./B为按对应的分量进行相除。若A与B为同型阵列时,MATLAB6.0数学手册96An*m./Bn*m=(aij)n*m./(bij)n*m=Cn*m=(cij)n*m,则cij=aij/bij,i=1,2,…,n;j=1,2,…,m。若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。A^B矩阵的方幂。计算矩阵A的整数B次方幂。若A为标量而B为方阵,A^B用方阵B的特征值与特征向量计算数值。若A与B同时为矩阵,则返回一错误信息。A.^B数组的方幂。A.^B为按A与B对应的分量进行方幂计算。若A与B为同型阵列时,An*m..^Bn*m=(aij)n*m..^(bij)n*m=Cn*m=(cij)n*m,则cij=aij^bij,i=1,2,…,n;j=1,2,…,m。若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。A'矩阵的Hermition转置。若A为复数矩阵,则A'为复数矩阵的共轭转置。即,若A=(aij)=(xij+i*yij),则)yix()a()a(Aijijij'ji。A.'数组转置。A.'为真正的矩阵转置,其没有进行共轭转置。例3-1symsabcdefgh;A=[ab;cd];B=[ef;gh];C1=A.*BC2=A.^BC3=A*B/AC4=A.*A-A^2symsa11a12a21a22b1b2;A=[a11a12;a21a22];B=[b1b2];X=B/A;%求解符号线性方程组X*A=B的解x1=X(1)x2=X(2)计算结果为:C1=[a*e,b*f][c*g,d*h]C2=[a^e,b^f][c^g,d^h]C3=[-(a*c*f+c*b*h-a*e*d-b*d*g)/(a*d-b*c),(a*b*h-b^2*g+a^2*f-b*a*e)/(a*d-b*c)][-(-c*e*d+c*d*h+c^2*f-d^2*g)/(a*d-b*c),(a*d*h+a*c*f-b*c*e-b*d*g)/(a*d-b*c)]C4=[-b*c,b^2-a*b-b*d][c^2-a*c-d*c,-b*c]x1=(-a22*b1+b2*a21)/(a12*a21-a11*a22)x2=-(-a12*b1+a11*b2)/(a12*a21-a11*a22)第3章符号运算973.2基本运算命令1合并同类项函数collect格式R=collect(S)%对于多项式S中的每一函数,collect(S)按缺省变量x的次数合并系数。R=collect(S,v)%对指定的变量v计算,操作同上。例3-2symsxy;R1=collect((exp(x)+x)*(x+2))R2=collect((x+y)*(x^2+y^2+1),y)R3=collect([(x+1)*(y+1),x+y])计算结果为:R1=x^2+(exp(x)+2)*x+2*exp(x)R2=y^3+x*y^2+(x^2+1)*y+x*(x^2+1)R3=[(y+1)*x+y+1,x+y]命令2列空间的基函数colspace格式B=colspace(A)%返回矩阵B,其列向量形成由矩阵A的列向量形成的空间的坐标基,其中A可以是符号或数值矩阵。而size(colspace(A),2)等于rank(A)。即由A生成的空间维数等于A的秩。例3-3symsabcA=sym([1,a;2,b;3,c])B=colspace(A)计算结果为:A=[1,a][2,b][3,c]B=[1,0][0,1][-(3*b-2*c)/(-b+2*a),(-c+3*a)/(-b+2*a)]命令3复合函数计算函数compose格式compose(f,g)%返回复合函数f[g(y)],其中f=f(x),g=g(y)。其中符号x为函数f中由命令findsym(f)确定的符号变量,符号y为函数g中由命令findsym(g)确定的符号变量。compose(f,g,z)%返回复合函数f[g(z)],其中f=f(x),g=g(y),符号x、y为函数f、g中由命令findsym确定的符号变量。MATLAB6.0数学手册98compose(f,g,x,z)%返回复合函数f[g(z)],而令变量x为函数f中的自变量f=f(x)。令x=g(z),再将x=g(z)代入函数f中。compose(f,g,x,y,z)%返回复合函数f[g(z)]。而令变量x为函数f中的自变量f=f(x),而令变量y为函数g中的自变量g=g(y)。令x=g(y),再将x=g(y)代入函数f=f(x)中,得f[g(y)],最后用指定的变量z代替变量y,得f[g(z)]。例3-4symsxyztuv;f=1/(1+x^2*y);h=x^t;g=sin(y);p=sqrt(-y/u);C1=compose(f,g)%令x=g=sin(y),再替换f中的变量x=findsym(f)。C2=compose(f,g,t)%令x=g=sin(t),再替换f中的变量x=findsym(f)。C3=compose(h,g,x,z)%令x=g=sin(z),再替换h中的变量x。C4=compose(h,g,t,z)%令t=g=sin(z),再替换h中的变量t。C5=compose(h,p,x,y,z)%令x=p(y)=sqrt(-y/u),替换h中的变量x,再将y换成z。C6=compose(h,p,t,u,z)%令t=p(u)=sqrt(-y/u),替换h中的变量t,再将u换成z。计算结果为:C1=1/(1+sin(y)^2*y)C2=1/(1+sin(t)^2*y)C3=sin(z)^tC4=x^sin(z)C5=((-z/u)^(1/2))^tC6=x^((-y/z)^(1/2))命令4符号复数的共轭函数conj格式conj(X)%返回符号复数X的共轭复数例3-5X=real(X)+i*imag(X),则conj(X)=real(X)-i*imag(X)命令5符号复数的实数部分函数real格式real(Z)%返回符号复数z的实数部分命令6符号复数的虚数部分函数imag格式imag(Z)%返回符号复数z的虚数部分命令7余弦函数的整函数格式Y=cosint(X)%计算余弦函数在点X处的整函数值。其中X可以是数值矩阵,或符号矩阵。余弦函数的整函数定义为:dtttXYiXii01cosln,其中为Euler常数,=0.57721566490153286060651209…i=1,2,…,size(X)。Euler常数可以通过命令vpa('eulergamma')获得。第3章符号运算99例3-6cosint(7.2)cosint([0:0.1:1])symsx;f=cosint(x);diff(x)计算结果为:ans=0.0960ans=Columns1through7Inf-1.7279-1.0422-0.6492-0.3788-0.1778-0.0223Columns8through110.10050.19830.27610.3374ans=1命令8设置变量的精度函数digits格式digits(d)%设置当前的可变算术精度的位数为整数d位d=digits%返回当前的可变算术精度位数给ddigits%显示当前可变算术精度的位数说明设置有意义的十进制数值的、在Maple软件中用于做可变算术精度(命令为:vpa)计算的数字位数。其缺省值为32位数字。例3-7z=1.0e-16%z为一很小的数x=1.0e+2%x为较大的数digits(14)y1=vpa(x*z+1)%大数1“吃掉”小数x*ydigits(15)y2=vpa(x*z+1)%防止“去掉”小数x*y计算结果为:z=1.0000e-016x=100y1=1.0000000000000y2=1.00000000000001命令9将符号转换为MATLAB的数值形式函数double格式R=double(S)%将符号对象S转换为数值对象R。若S为符号常数或表达式常数,double返回S的双精度浮点数值表示形式;若S为每一元素是符号常数或表达式常数的符号矩阵,double返回S每一元素的双精度浮点数值表示的数值矩阵R。例3-8gold_ratio=double(sym('(sqrt(5)-1)/2'))%计算黄金分割率。MATLAB6.0数学手册100T=sym(hilb(4))R=double(T)计算结果为:gold_ratio=0.6180T=[1,1/2,1/3,1/4][1/2,1/3,1/4,1/5][1/3,1/4,1/5,1/6][1/4,1/5,1/6,1/7]R=1.00000.50000.33330.25000.50000.33330.25000.20000.33330.25000.20000.16670.25000.20000.16670.1429命令10符号表达式的展开函数expand格式R=expand(S)%对符号表达式S中每个因式的乘积进行展开计算。该命令通常用于计算多项式函数、三角函数、指数函数与对数函数等表达式的展开式。例3-9symsxyabctE1=expand((x-2)*(x-4)*(y-t))E2=expand(cos(x+y))E3=expand(exp((a+b)^3))E4=expand(log(a*b/sqrt(c)))E5=expand([sin(2*t),cos(2*t)])计算结果为:E1=x^2*y-x^2*t-6*x*y+6*x*t+8*y-8*tE2=cos(x)*cos(y)-sin(x)*sin(y)E3=exp(a^3)*exp(a^2*b)^3*exp(a
本文标题:03_符号运算
链接地址:https://www.777doc.com/doc-3822806 .html