符号变量——我们在手算中采用都是的是符号变量,什么求导、微积分等等,可以说在我们接触编程环境之前所有的数学量都是符号变量,为什么?因为我们采用的所有数据都是精确的,不存在数值解一说。符号变量的特点是它不需要依赖一个具体的值,比如syms x,当x创建好了,我们也不知道x的值是多少;而数值变量则不然,数值变量必须时刻有个一值(比如我们定义x=1,当然特殊地,x=[],代表空值,通常用来向内存申请一个空间)
在matlab中如何定义一个符号变量,请看截图,多种方式:
先注意看工作区(右上角)中每一个变量的值都是sym标识,它代表这是一个符号变量。(此处小贴士,大家在不确定自己的量是什么类型的时候可以在运行结束之后在工作区来看看!)第一行和第三行功能一样,但是函数不同,推荐大家用第一种方法;第二行同时定义多个符号变量,注意各个变量之间用空格而不是逗号;第四行是定义了一个符号变量的数组,维度是[3 3],即一个3行3列的矩阵里每个元素都是符号变量。
有了符号变量,我们就可以构造表达式了,想想你在草稿纸上进行数学运算而不是编程环境中, 你就可以很好理解这一点。比如我们利用x构造一个符号表达式y,结果显而易见,如图中的y;我们也可以将符号变量x+1,得到的仍然是一个符号变量,这里的‘1’最好理解成常数项,而不是数字1会更好!
数值变量——最后看一下数值变量,这个没什么好说的,形如x=1;A=[1 2; 3 4];都是数值型的变量,它们的值直接在工作区中显示出来,而且在变量名前没有任何标识符,大家仔细体会!这是由于数值变量是MATLAB的根基,MATLAB最核心的是数值运算,其他诸如符号运算的软件有更为强大的计算工具可以替代!
此外,符号变量x无法强制转换成数值型变量x,参见如下报错:
但是符号常量(注意不是数值常量)可以进行转换。仔细看下面第一行,这里的x值为1,是精确的1,而不是数值的1,是不是有点懵?没关系,可以看工作区变量类型,即x为sym!
例子——我们来比较一下符号变量和数值变量的区别,以两个绘图函数fplot和plot为例,只做最简单的参数传递。
——fplot(fun):要求一个fun是符号表达式,即不用给出任何具体的值,就可以根据函数表达式绘制图像,当然函数内部有默认的定义域范围,这完全类似我们人工的画图思维,对吗?
——plot(x):要求传入的是数值型变量(标量、向量、矩阵),且必须指定具体的值。
希望大家通过这两个函数的对比了解了符号变量和数值变量的区别,在MATLAB内部还有很多类似的函数对照组,大家在使用的时候一定要注意,通常以“ f ”开头的很有肯能是要求传入符号变量的!