无法通过直接使用表达式分配 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);
为什么这对分配函数不起作用:
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);