建立连续计算
在进行计算时,经常需要使用以前获得的结果. 在 Wolfram 语言中,
% 始终代表最后一次计算的结果.
% | 生成的最后一个结果 |
%% | 倒数第二个结果 |
%%…% (k times) | 之前第 k 个结果 |
%n | |
你会注意到 Wolfram 语言中的所有输入和输出行均已编号. 可以使用这些数字来引用以前的结果.
如果使用 Wolfram 系统基于文本的界面,则连续的输入和输出行将始终按顺序显示. 但是,如果使用 Wolfram 系统的笔记本界面(如
“使用笔记本界面”中所述),则连续的输入和输出行不必按顺序出现. 例如,可以回到前面,在笔记本中的任意位置插入下一个计算. 应该注意到
% 始终被定义为 Wolfram 语言生成的最后一个结果. 这可能是也可能不是显示在笔记本当前位置上方的结果. 使用笔记本界面时,了解特定结果是何时生成的唯一方法是查看
Out[n] 标签. 因为你可以在笔记本中的任何位置插入和删除,所以笔记本中结果的文本顺序与结果生成的顺序无关.
当进行长时间计算时,为中间结果
命名通常会带来很多方便。就像在标准数学或其他计算机语言中一样,可以通过引入命名
变量来做到这一点.
每当
x 出现时,Wolfram 语言就会将其替换为
5:
pi 被设为
值,精度为 40 位:
下面给出
的值,与
pi 有同样的精度:
x=value | 为变量 x 赋值 |
x=y=value | 为 x 和 y 赋值 |
x=. or Clear[x] | 删除 x 的值 |
分配给变量的值是
永久性的,这一点非常重要. 将值分配给特定变量后,该值将一直保留,直到明确地被删除为止. 如果启动全新的 Wolfram 语言会话,则该值会消失.
使用 Wolfram 语言时,忘记先前所做的定义是导致错误的最常见原因. 如果设置
x=5,则 Wolfram 语言将假定你
始终希望
x 的值为
5,除非另外明确指出. 为避免出现错误,使用完定义的值后,应立即将其删除.
可以为你定义的变量分配任何名称. 名称的长度没有限制. 但是,一个限制是变量名不能以数字
开头. 例如,
x2 可以是一个变量,但是
2x 表示
2*x.
Wolfram 语言同时使用大写和小写字母. 有一个约定,内置 Wolfram 语言对象的名称始终以大写字母开头. 为避免混淆,你自己定义的变量应始终以小写字母开头.
aaaaa | 只含有小写字母的变量名 |
Aaaaa | 内置对象,以大写字母开头 |
可以像数学中一样在 Wolfram 语言中键入含有变量的公式. 但是,有几点要注意.
■ x y 表示 x 乘以 y. |
■ xy 没有空格,是名为 xy 的变量. |
■ 5x 表示 5 乘以 x. |
■ x^2y 表示 (x^2) y,不是 x^(2y). |
在 Wolfram 语言中使用变量时需要注意的几点.
当 Wolfram 语言将
x+x 这样的表达式转换为
2x 时,它将变量
x 视为纯符号或一种形式. 在这种情况下,
x 是可以代表任何表达式的符号.
但是,你经常需要用确定的
“值
”替换像
x 这样的符号. 有时,该值为数字;通常它将是另一个表达方式.
取如
1+2x 这样的表达式,将其中的符号
x 替换为确定的值,需要创建一个 Wolfram 语言转换规则,然后将此规则应用于表达式. 如果要将
x 替换为
3,需要创建转换规则
x->3. 必须将
-> 作为一对字符输入,中间不能有空格. 可以将
x->3 视为一条规则,即
“x 变为
3”.
如果要将转换规则应用于特定的 Wolfram 语言表达式,请键入
expr/.rule. 用一对字符
/. 键入
“替换运算符
”,中间没有空格.
可以将
x 替换为任何表达式. 下面用
2-y 替换所有的
x:
这里是一个转换规则. Wolfram 语言将其视为与其他符号表达一样:
expr/.x->value | 将表达式 expr 中的 x 替换为 value |
expr/.{x->xval,y->yval} | 同时执行几个替换 |
替换运算符
/. 允许你将转换规则应用于特定的表达式. 但是,有时你想要定义应
始终起作用的转换规则. 例如,每当
x 出现时,就将
x 替换为
3.
如
“定义变量”中所述,可通过
x=3 将
3 赋值给
x 来实现. 一旦完成赋值
x=3,只要出现
x,
x 就会被 3 替代.
可以将符号的值定义为任意表达式,而不仅仅是数字. 应该意识到,一旦给出了这样的定义,只要该符号出现,就会一直使用该该定义,直到你明确地更改或删除该定义. 对于大多数人而言,忘记删除赋给符号的值是使用 Wolfram 语言时最常见的错误来源.
x=value | 定义一个将始终使用的 x 值 |
x=. | 删除为 x 定义的任何值 |
如
x 这样的符号可以在 Wolfram 语言中有许多用途,实际上,Wolfram 语言的许多灵活性来自能够随意组合这些用法. 但是,你需要保留
x 的某些不同用法,以免出错. 最重要的区别是在用
x 作为另一个表达式的名称,还是用作仅代表自身的符号变量.
不支持符号计算的传统编程语言仅允许将变量用作对象(通常是数字)的名称,这些对象已被赋值给变量. 但是,在 Wolfram 语言中,
x 也可以被视为纯形式变量,可对其应用各种转换规则. 当然,如果明确给出一个定义,例如
x=3,则
x 将始终被
3 代替,并且不再可以用作形式变量.
应该了解的是像
x=3 这样的显式定义具有全局作用. 另一方面,如
expr/.x->3 这样的替换仅影响特定表达式
expr. 除非必要,避免使用显式定义通常会使事情变得简单.
可以将替换与赋值混合使用. 通过赋值,可以为要在其中进行替换的表达式命名,或为要用于替换的规则命名.
求
x 被替换为
Pi 时
t 的值,以数值方式进行计算:
Wolfram 语言使用了四种括号. 每种括号的含义大不相同. 重要的是要记住所有这些括号.
(term) | 分组括号 |
f[x] | 函数的方括号 |
{a,b,c} | 列表的大括号 |
v[[i]] | |
当输入的表达式很复杂时,最好在每组括号内放置额外的空格. 这会帮助你更容易地看到匹配的括号对. 例如,
v[[ {a,b} ]] 比
v[[{a,b}]] 更容易识别.
在使用 Wolfram 语言进行计算时,通常需要经过一系列步骤才能完成. 你可以在一行上完成一个步骤,但是,通常你会发现在一行上放置多个步骤更方便. 很简单,用分号分隔输入内容就可以做到这一点.
expr1;expr2;expr3 | 完成几个运算,给出最后一个运算的结果 |
expr1;expr2; | 完成运算,不显示任何输出 |
在同一行上执行三个运算. 结果是最后一个运算的结果:
如果结束时输入分号,就像是你要进行一系列运算,最后是
“空
”运算. 这样可以使 Wolfram 语言执行你指定的运算,但不显示任何输出.
在行的末尾添加分号,指示 Wolfram 语言不显示任何输出: