0

我有一个功能列表: DisUFuncList = Table[x^2, {n, 1, M}];

和参数列表y。我的目标是收到这笔款项 DisUFuncList[[i]] [ y[[i]] ]

这是代码:

    DisUFuncList = Table[x^2, {n, 1, M}];
Sum2=0;For[i = 1, i <= Length[y], i++, 
Sum2 = Sum2 + Function[x, DisUFuncList[[i]] ] [ y[[i]] ]    ]; 

这也不起作用:

Apply[Function[DisUFuncList[[2]]], {2} ]

有任何想法吗?谢谢!

4

2 回答 2

3

例如

DisUFuncList[x_] := Table[x^n, {n, 2, 6}]
y = Range[2, 6];
Sum[DisUFuncList[y[[i]]][[i]], {i, Length[y]}] == Sum[i^i, {i, 2, 6}]
(*
-> True
*)

请记住:Looping in Mathematica is generally considered a bad practice.

编辑

关于您的评论,有很多方法可以做到这一点。这是一个:

M = 5;
DisUFuncList = Table[x^n, {n, 1, M}]
y = Range[M]
Sum[DisUFuncList[[i]] /. x -> y[[i]], {i, Length@y}]
(*
 -> 3413  (==Sum[i^i, {i, 5}])
*)
于 2012-06-28T14:20:43.813 回答
1

这里有很多问题,其中一些会妨碍您准确理解(我的,无论如何)您所追求的。

首先,x^2 不是 Mathematica 中的函数。函数应该看起来像 #^2& 或者你已经定义了它们。在可能陷入神秘和类似特技的 Mathematica 形式的讨论中,我将尝试通过将我的函数列表定义为来保持一些透明度:

    funcList = {Sin, Cos,Tan}

其次,您似乎希望将该函数列表线程化到参数列表上,

    argList = {a1, a2, a3} say

部分部分地,最终,如果我正确理解了这个问题,您需要一个可以生成结果的表达式

    Sin[a1] + Cos[a2] + Tan[a3]

您可以使用表单让 MapThread 迈出第一步

    MapThread[#1@#2&, {funcList, argList}]

那么总和是

    Plus@@%

更漂亮,但可能更不透明的是:

    Inner[#1@#2&,funcList,argList]

QED 我对这个问题的解释。

我希望这有助于回答您实际提出的问题。

弗雷德·克林格

于 2012-06-28T19:06:21.927 回答