自动为迭代创建的列表分配名称

Automatically assigning name to a list created by iteration

我目前正在尝试为 maxima 创建一个命令,该命令允许对函数进行迭代并将结果放入列表中。我设法通过循环创建迭代,并成功地将结果放入列表中。

但是,我希望在用户进行输入时分配该列表的名称。我尝试使用 makelist 命令或函数内置的直接命名,但它不起作用。

FunctionIterationList(f,a,j,listname):= block(
b:a,
s: [],
for iteraciones: 0 thru j do
(
b: f(b),
s: cons([iteraciones,bfloat(b)],s)
),    
listname: reverse(s));

这将是当前代码的结果示例

FunctionIterationList(f(x):=x+1,0,10,asdf);

[[0,1.0b0],[1,2.0b0],[2,3.0b0],[3,4.0b0],[4,5.0b0],[5,6.0b0],[6,7.0b0],[7,8.0b0],[8,9.0b0],[9,1.0b1],[10,1.1b1]]

我看到有几种方法可以找到解决方案。

(1) 您可以使用:: 赋值运算符代替: 来修复现有的函数定义,因为:: 表示将右侧的值赋值side 到左侧的值。例如。在 x: 'asdf 之后,x :: 123123 分配给 asdf,而不是 x.

所以在你的函数定义中你可以在最后说 listname :: reverse(s)

(2) 另一种方法是使用内置函数 makelist,例如

asdf: makelist (x + 1, x, 0, 10);

asdf: makelist (f(x), x, 0, 10);

f 是您想要的功能时。