命令 +、-、*、.*、\\、.\\、/、./、^、.^、’、.’ 功能符号矩阵的算术操作 用法如下:
A+B、A-B 符号阵列的加法与减法.
若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减.
A*B 符号矩阵乘法.
A*B为线性代数中定义的矩阵乘法.按乘法定义要求必须有矩阵A的列数等于矩阵B的行数.即:若
An*k*Bk*m= A.*B 符号数组的乘法. A.*B为按参量A与B对应的分量进行相乘.A与B必须为同型阵列,或至少有一个为标量.即:An*m.*Bn*m= A\\B 矩阵的左除法. X=A\\B为符号线性方程组A*X=B的解.我们指出的是,A\\B近似地等于inv*B.若X不存在或者不唯一,则产生一警告信息.矩阵A可以是矩形矩阵〔即非正方形矩阵〕,但此时要求方程组必须是相容的. A.\\B 数组的左除法. A.\\B为按对应的分量进行相除.若A与B为同型阵列时,An*m.\\Bn*m= bij,i=1,2,…,n;j=1,2,…,m.若若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作. A/B 矩阵的右除法. X=B/A为符号线性方程组X*A=B的解.我们指出的是,B/A粗略地等于B*inv.若X不存在或者不唯一,则产生一警告信息.矩阵A可以是矩形矩阵〔即非正方形矩阵〕,但此时要求方程组必须是相容的. A./B 数组的右除法. A./B为按对应的分量进行相除.若A与B为同型阵列时,An*m./Bn*m= 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 数组的方幂. 1 / 38 A.^B为按A与B对应的分量进行方幂计算.若A与B为同型阵列时,An*m..^Bn*m= aij^bij,i=1,2,…,n;j=1,2,…,m.若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作. A' 矩阵的Hermition转置. 若A为复数矩阵,则A'为复数矩阵的共轭转置.即,若A= A.' 数组转置. A.'为真正的矩阵转置,其没有进行共轭转置. 例3-1 >>syms a b c d e f g h; >>A = [a b; c d]; >>B = [e f; g h]; >>C1 = A.*B >>C2 = A.^B >>C3 = A*B/A >>C4 = A.*A-A^2 >>syms a11 a12 a21 a22 b1 b2; >>A = [a11 a12; a21 a22]; >>B = [b1 b2]; >>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 = [ -/, /] [ -<-c*e*d+c*d*h+c^2*f-d^2*g>/, /] C4 = [ -b*c, b^2-a*b-b*d] [ c^2-a*c-d*c, -b*c] x1 = <-a22*b1+b2*a21>/ -<-a12*b1+a11*b2>/ 3.2 基本运算 命令1合并同类项 2 / 38 函数collect 格式 R = collect 量x的次数合并系数. R = collect 例3-2 >>syms x y; >>R1 = collect< 计算结果为: R1 = x^2+ y^3+x*y^2+ [ 命令2 列空间的基 函数colspace 格式 B = colspace %返回矩阵B,其列向量形成由矩阵A的列向量形 成的空间的坐标基,其中A可以是符号或数值矩阵.而 size 例3-3 >>syms a b c >>A = sym<[1,a;2,b;3,c]> >>B = colspace 计算结果为: 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 号x为函数f中由命令findsym compose x、y为函数f、g中由命令findsym确定的符号变量. 3 / 38 compose 自变量f=f compose 的自变量f=f 例3-4 >>syms x y z t u v; >>f = 1/<1 + x^2*y>; h = x^t; g = sin >>C1 = compose >>C5 = compose 计算结果为: C1 = 1/<1+sin 1/<1+sin sin x^sin <<-z/u>^<1/2>>^t C6 = x^<<-y/z>^<1/2>> 命令4 符号复数的共轭 函数conj 格式 conj X=real 命令5 符号复数的实数部分 函数real 格式 real 格式 imag 格式 Y = cosint 数值矩阵,或符号矩阵.余弦函数的整函数定义为:,其中为Euler 4 / 38 常数,… i=1,2,…,size 例3-6 >>cosint<7.2> >>cosint<[0:0.1:1]> >>syms x; >>f = cosint 计算结果为: ans = 0.0960 ans = Columns 1 through 7 Inf -1.7279 -1.0422 -0.92 -0.3788 -0.1778 -0.0223 Columns 8 through 11 0.1005 0.1983 0.2761 0.3374 ans = 1 命令8 设置变量的精度 函数digits 格式 digits >>z = 1.0e-16 % z为一很小的数 >>x = 1.0e+2 % x为较大的数 >>digits<14> >>y1 = vpa >>y2 = vpa 计算结果为: z = 1.0000e-016 x = 100 y1 = 1.0000000000000 y2 = 1.00000000000001 命令9 将符号转换为MATLAB的数值形式 函数double 5 / 38 格式 R = double 或表达式常数,double返回S的双精度浮点数值表示形式;若S为每一元素是符号常数或表达式常数的符号矩阵,double返回S每一元素的双精度浮点数值表示的数值矩阵R. 例3-8 >>gold_ratio = double 计算结果为: gold_ratio = 0.6180 T = [ 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.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 命令10 符号表达式的展开 函数expand 格式 R = expand 该命令通常用于计算多项式函数、三角函数、指数函数与对数函数等表达式的展开式. 例3-9 >>syms x y a b c t >>E1 = expand< >>E3 = expand 计算结果为: E1 = x^2*y-x^2*t-6*x*y+6*x*t+8*y-8*t E2 = cos exp*exp^3*exp^3*exp E4 = log> E5 = 6 / 38 [ 2*sin 命令11 符号因式分解 函数factor 格式 factor 若X为一正整数,则factor 例3-10 >>syms a b x y >>F1 = factor >>F2 = factor<[a^2-b^2, x^3+y^3]> 计算结果为: F1 = [ <2>*<3>^2*<5>*<101>*<3803>*<3607>*<27961>*<3541> 命令12 符号表达式的分子与分母 函数numden 格式 [N,D] = numden 说明将符号或数值矩阵A中的每一元素转换成整系数多项式的有理式形式,其中分子与分母是相对互素的.输出的参量N为分子的符号矩阵,输出的参量D为分母的符号矩阵. 例3-11 >>syms x y a b c d; >>[n1,d1] = numden 计算结果为: n1 = d1 = n2 = x^2+y^2 d2 = y*x n3 = [ a, 1] [ 1, d] d3 = [ 1, b] [ c, 1] 7 / 38 命令13 搜索符号表达式的最简形式 函数simple 格式 r = simple 显示任意的能使表达式S长度变短的表达式,且返回其中最短的一个.若S为一矩阵,则结果为整个矩阵的最短形式,而非是每一个元素的最简形式.若没有输出参量r,则该命令将显示所有可能使用的算法与表达式,同时返回最短的一个. [r,how] = simple 短的一个.输出参量r为一符号,how为一字符串,用于表示算法. 例3-12 >>syms x >>R1 = simple >>R4 = simple 计算的结果为: R1 = 1/4*cos<4*x>+3/4 R2 = 3*cos cos<2*x> R4 = cos exp R6 = x ^3-x R7 = 4*x^3-3*x how = expand 命令14 符号表达式的化简 函数simplify 格式 R = simplify 说明使用Maple软件中的化简规则,将化简符号矩阵S中每一元素. 8 / 38 例3-13 >>syms x a b c >>R1 = simplify 计算结果为: R1 = 2*cos ^<1/2*c> R3 = [ x+3, 4] 命令15 符号矩阵的维数 函数size 格式 d = size %若A为m*n阶的符号矩阵,则输出结果d=[m,n]. [m,n] = size %分别返回矩阵A的行数于m,列数于n. d= size %返回由标量n指定的A的方向的维数:n=1为行 方向,n=2为列方向. 例3-14 >>syms a b c d >>A = [a b c ; a b d; d c b; c b a]; >>d = size >>r = size 计算结果为: d = 4 3 r = 3 命令16 代数方程的符号解析解 函数solve 格式 g = solve 符号表达式x^2 -2*x-1或一没有等号的字符串’x^2-2*x-1’,则solve g = solve 变量var求解方程eq=0. g = solve 达式或字符串.该命令对方程组eq1,eq2,…,eqn中由命令findsym确定的n个变量如x1,x2,…,xn求解.若g为一单个变量,则g为一包含n个解的结构;若g为有n个变量的向量,则分别返回结果给相应的变量. 9 / 38 g = solve eq1,eq2,…,eqn中指定的n个变量如var1,var2,…,varn求解. 注意:对于单个的方程或方程组,若不存在符号解,则返回方程〔组〕的数值解. 例3-15 >>solve<'a*x^2 + b*x + c'> >>solve<'a*x^2 + b*x + c','b'> >>solve<'x + y = 1','x - 11*y = 5'> >>A = solve<'a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a +6'> 计算结果为: ans = [ 1/2/a*<-b+^<1/2>>] [ 1/2/a*<-b-^<1/2>>] ans = -/x ans = x: [1x1 sym] y: [1x1 sym] A = a: [4x1 sym] u: [4x1 sym] v: [4x1 sym] 命令17 以共同的子表达式形式重写一符号表达式 函数subexpr 格式 [Y,SIGMA] = subexpr [Y,SIGMA] = subexpr 说明找出符号表达式 X中相同的子表达式,再结合命令pretty >>t = solve<'a*x^3+b*x^2+c*x+d = 0'>; >> [r,s] = subexpr %对于多项式S中的每一函数,collect按缺省变 %对指定的变量v计算,操作同上. %将符号对象S转换为数值对象R.若S为符号常数 %对符号表达式S中每个因式的乘积进行展开计算. %该命令试图找出符号表达式S的代数上的简单形式, %没有显示中间的化简结果,但返回能找到的最