我想通过将列表传递给某个函数来评估下面的 f:
f = {z[1] z[2], z[2]^2};
a = % /. {z[1]-> #1,z[2]-> #2};
F[Z_] := Evaluate[a] & @@ Z ;
所以现在如果我尝试F[{1,2}]我会得到{2, 4}预期的结果。但仔细观察?F会返回定义
F[Z_] := (Evaluate[a] &) @@ Z
这取决于 的值a,所以如果我们设置a=3然后评估F[{1,2}],我们得到3。我知道添加最后一个&可以Evaluate[a]保持,但是什么是优雅的解决方法?本质上我需要强制评估Evaluate[a],主要是为了提高效率,因为a实际上是相当复杂的。
有人可以帮忙,并考虑到f必须包含Array[z,2]一些未知计算的给定值。所以写
F[Z_] := {Z[[1]]Z[[2]],Z[[2]]^2}
还不够,我需要从我们的f.
非常感谢您的任何贡献。