无法通过直接使用表达式分配 Maple 函数,只能通过引用输出

Cannot assign Maple function by directly using expression, only by referencing output

为什么这对分配函数不起作用:

F(t) := Matrix(matrixDE(A, t)[1])

在使用标签引用输出时有效:

Matrix(matrixDE(A, t)[1])      (1)
F1(t) := (1)

matrixDE(A, t)[1]              (2)
F2(t) := Matrix((2))

索引操作 [1] 似乎是问题所在,但我不明白这背后的机制。

我发现了这个 但它并没有让我变得更聪明...


编辑:

我最终使用 eval 和 :

获得了我想要的效果
F(x) := eval(Matrix(matrixDE(A, t)[1]), t = x)

付出的代价是 F 的参数被命名为 x 而不是 t

问题与索引无关。问题正是您在标题中所说的:您不能(正确地)通过直接使用(未评估的)表达式来分配 Maple 函数;相反,您必须引用输出(或评估)。

更具体地说,这取决于这两个操作的所需顺序:参数化表达式的计算和参数值的替换。如果您想首先使用符号参数(在本例中为您的 t)评估表达式,那么要使用的命令是 unapply:

F:= unapply(Matrix(matrixDE(A, t)[1]), t);