前言
看到文章的名字,可能很多人都没懂意思,如果叫它的另一个名字:代数运算,或许你就懂了;与正常的数值计算对数值处理有点不一样,符号运算处理的是符号;符号除了可以代表数以外,还可以代表多项式、函数、数学结构等等,MATLAB的符号数学工具箱(Symbolic Math Toolbox简成sym)具有丰富的内容,工具箱中符号表达式的计算都是在Maple内核下运行。Maple是一款数学软件,具体我也没了解过,反正符号运算功能很强就对了,本篇将对符号对象、符号变量以及符号表达式进行一些使用介绍,下一篇再对符号矩阵、符号微积分、符号积分变换以及符号方程求解进行记录。
注:使用的是MATLAB R2019B的版本
创建符号对象
符号对象在MATLAB中的使用也很好理解,直接使用sym或者syms函数生成其相关的变量或表达式,格式如下:
S=sym(x)
S=syms var1,var2,var3...%var代表变量名
S就是生成的符号对象,x代表字符、字符串、表达式等等,如果x代表的是一个数,则S为该数的一个符号表示;如果x是字符串,则S为一个符号变量或者符号表达式,如下示例:
s1=sqrt(2)%对数值2进行开方运算
s2=sym(sqrt(2))%将根号2转为字符表达式即“根号2”
s22=double(s2)%将对应的符号对象s2转为对应的运算结果
结果:
如果表达式的元素都定义成符号变量,则所得结果会按代数式的规则进行运算,如:
sym(2)/sym(5)+sym(1)/sym(2)
结果:
ans = 9/10
使用sym函数进行符号变量和符号表达式进行演示,然后观察运行结果,就可以很清楚的理解符号对象了,看以下的举例,可以看到生成字符表达式使用了一个str2sym的函数将字符串直接转换成了sym的格式,因此此时的sym()这个其实可以不写了,不过为了理解,还是加上了。
注:旧版本(测试了下r2016a)就没有str2sym这个函数了,直接使用sym就可以。
x=sym('x')
y=sym(str2sym('hello_world'))
z=sym(str2sym('(1+sqrt(3))/2'))
s=sym(str2sym('a*x^2+b*x+c'))
结果:
syms函数用于创建符号变量,然后再将生成的符号变量使用在符号表达式上,这个就不需要再像刚刚那样进行字符串的转化了,举例:
syms a b c x
f=a*x^2+b*x+c
f-a%进行符号表达式的运算
结果:
以上主要介绍了符号变量与符号表达式的创建,接下来再对符号方程进行创建,首先都知道,方程和表达式的区别就在于表达式是由数字和变量组成的代数式,方程则在此基础上多了个等式,所以创建的方式和生成符号表达式类似:
s=sym(str2sym('a*x^2+b*x+c=0'))
结果: