自动为迭代创建的列表分配名称
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 :: 123
将 123
分配给 asdf
,而不是 x
.
所以在你的函数定义中你可以在最后说 listname :: reverse(s)
。
(2) 另一种方法是使用内置函数 makelist
,例如
asdf: makelist (x + 1, x, 0, 10);
或
asdf: makelist (f(x), x, 0, 10);
当 f
是您想要的功能时。
我目前正在尝试为 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 :: 123
将 123
分配给 asdf
,而不是 x
.
所以在你的函数定义中你可以在最后说 listname :: reverse(s)
。
(2) 另一种方法是使用内置函数 makelist
,例如
asdf: makelist (x + 1, x, 0, 10);
或
asdf: makelist (f(x), x, 0, 10);
当 f
是您想要的功能时。