首先有一个概念是符号对象。要进行符号运算,符号对象是符号运算的基础,符号对象包括符号常量,变量,矩阵和表达式。
与普通变量不同的是,符号对象必须先进行定义之后才能使用。定义符号常量的方法:sym(A)或者可以在后面接上flag参数成sym(A,flag)。创建符号变量时候:x=('x')则创建了一个符号变量。这里注意单引号引起来的x与变量x的字母是相同的。至于刚才提到的flag用于将一个数值矩阵转化为符号矩阵的可选参数类似浮点型,有理数型,估计误差值等类型。
关于与之前的区别:
明显看到s1是原样输出而s2得到了具体结果
s4这种形式log2被计算出来,然后因为没有标注它的参数就默认是r即有理数的形式表示出来,显示就成为了一个分数。这里加没加引号对最后的结果有很大影响。没有加引号就首先对括号里面的进行数值运算,然后再把结果转化成符号量
关于符号类型的运算:
前者是real类型的后者是unreal类型的,不会合并
可以使用命令一次性定义多个符号变量,函数只能一次性定义一个:syms arg1 arg2 real/unreal
以上的b+c+d是一种定义符号表达式的方法,除此以外还有一种方法就是直接定义:
符号矩阵内元素访问方式和数值矩阵访问方式一致,即下标法和单下标法:
符号对象用于算术运算没有什么特殊的,唯一和普通的区别就是运算结果都是符号变量。
使用符号对象在进行多项式运算时候非常方便,这里的符号变量已经提前定义好,后面使用expand函数对多项式的乘积进行展开
符号矩阵之间进行计算的时候,就是进行对应位置上的计算,如果是进行符号矩阵和符号变量之间的计算时候,会将符号变量扩展成对应大小的矩阵再进行计算:
用符号变量解对应的线性方程组: