在Maple中,一个变量名可以有值,也可以没值.例如:
> 3*x^2 + a + b;
2
3 x + a + b
# 其中变量x,a,b就没有任何值
# 另一方面,Maple的任一变量名都可以指给另一个Maple对象,如:
> a := 100;
a := 100
# 这样认为:数100已经赋给变量a;从此以后,Maple每当遇到a是都看作100,即变量名a就指的是数100,例如:
> a^2*t - 2*a - 1;
10000 t - 201
# 我们利用Maple求出了a^2*t-2*a-1的值,术语求值(evaluation)在计算机语言中有着不同的含义,严格讲,Maple中求值是求变量的值(即通过对名称所指向的内存的搜寻过程),并不包含任何计算的意义.在Maple的术语里,计算(calcuation)叫做化简(simplification)一般地,化简必须由用户提出要求,但某些基本的化简是可以自动执行的,例如像100的平方,合并-200与-1等.实际上Maple在上例中是可以通过以下几步进行计算求结果的:
将a的值记为100
自动化简(autosimplification)所得的表达式
根据Maple内存的内部序对结果表达式的子式进行分类
在本章中,我们将讨论变量的赋值、管理和求值等问题.此外还要介绍Maple中可以使用的各种基本数据类型
3.1变量的赋值
3.1.1变量和函数的赋值定义
Maple允许给表达式命名,其语法如下:
name:=expression;含义是把expression的值赋给变量name,以后就可以使用变量名name来代替表达式expression进行各种计算.任何maple表达式都可以被命名,例如:
方程也可以被命名.Maple的名字可以由任何字母、数字和下划线构成,但不能以数字开头,应避免以下划线开头,Maple中以下划线开头的变量用于内部变量。合法的Maple名字如polynomial,test_data,RoOt_10cUs,pLoT和value2,不合法的如2ndphase(数字开头)和x&y(&不是字母,数字)
然而,并非所有名字均可用于自定义变量命名,Maple中预定义的变量和保留字,同其他编程语言一样,试图给这些预定义的变量或保留字命名,系统会给出警告
有时希望对自己定义的变量名进行保护,这时可以使用protect命令,对变量进行保护以后,就不能再给这个变量赋值,如果赋值就会出现保护错误,如果你一定要改变这个变量的值,可以使用unprotect命令取消对变量的保护,例如:
# 可以利用Maple中的箭头记号(->)定义自己的函数,使Maple知道当这些函数出现在表达式中的时候,如何求它们的值,下面给出一个利用plot命令画图的例子:
# 赋值操作(:=)将函数名与函数定义相关联,函数名出现在:=的左侧,而函数定义(利用箭头记号)出现在右侧,下列语句中将f定义为平方函数
3.1.2变量的内部管理
# 对于所有的变量,Maple提供了用于内部管理的命令,我们可以用assigned命令来检查一个变量是否被赋值.例如:
# 当一个变量已经被赋值之后,assigned命令的结果是true,此外也可以用unassigned命令取消对某个变量的赋值,例如在下例中我们给变量a,b,c赋值,然后用unassign命令取消对它们的赋值,当我们再次求值时,得到的结果是它们的名字.
# 前面我们提到,变量可以储存任意的数据类型,那么我们如何知道一个变量所存储的数据类型呢?最简单的方法是用whattype命令来了解的变量的类型.
# 这些命名的变量在左侧面板变量管理器中可以看到,第一列是变量的类型,这里用符号表示的,变量名和值都有
# 不过whattype命令只能知道基本的数据类型,对于他所不了解的数据类型,它就简单的返回一个string类型,此时可以用type命令来检查变量是否是否是某种数据类型.
# 在Maple中,对变量的使用比较自由,不像其他程序语言需要对使用的变量进行说明,因此,在计算过程中经常会出现误用已经赋值的变量答得情况,例如:
因为之前给x定义了a^2+b^2这个求和,在这里使用的时候就出现了矛盾问题.所以我们在计算或者定义行的变量或者函数时,可以通过查看左侧面板中的变量管理器来确定我们是否已经定义了该变量.