问题描述
我无法根据带子索引的变量定义函数。使用 makelist
命令,我可以创建一个未指定的函数,该函数依赖于子索引变量 x[1]
和 x[2]
。但是,当我尝试为该函数提供表达式时,wxMaxima 不允许:
另一方面,如果我将子索引变量写为 x_1
和 x_2
而不是 x[1]
和 x_[2]
,事情确实有效。
这种行为的原因是什么?这两种子索引方法在功能上不是等价的吗?
解决方法
只有符号可以声明函数参数。特别是,下标表达式不是符号,因此不能作为函数参数。
WxMaxima 显示以数字结尾的符号,例如 x_1
,与下标表达式相同,例如 x[1]
。这是为了方便起见,尽管它令人困惑,因为很难区分两者。
您可以通过 ?print
查看表达式的内部形式(注意问号是名称的一部分)。例如,?print(x_1);
与 ?print(x[1]);
。