List 将不同的函数(取自列表)应用到For循环中

List 将不同的函数(取自列表)应用到For循环中,list,wolfram-mathematica,List,Wolfram Mathematica,我有一个功能列表: list=表[x^2,{n,1,M}] 以及参数列表y。我的目标是得到这笔钱 list[[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]] ] ]; 有什么想法吗?谢谢 例如 DisUFuncList[x

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

以及参数列表
y
。我的目标是得到这笔钱
list[[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]] ]    ]; 
有什么想法吗?谢谢

例如

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
*)
请记住:
在Mathematica中循环通常被认为是一种不好的做法。

编辑

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

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}])
*)
比如说

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
*)
请记住:
在Mathematica中循环通常被认为是一种不好的做法。

编辑

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

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}])
*)

这里有很多问题,其中一些问题妨碍了你准确地理解(不管怎样,是我的)你想要的东西

首先,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]
谢谢我对问题的解释

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


弗雷德·克林格纳(Fred Klingener)

这里有很多问题,其中一些问题妨碍了你(不管怎么说,是我的)确切地理解你在追求什么

首先,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]
谢谢我对问题的解释

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


Fred Klingener

是的,开始时我希望此列表包含M份
x^2
,但之后我可以更改。是的,开始时我希望此列表包含M份
x^2
,但之后我可以更改。好的,谢谢。然而,通过这种方法,我们计算了许多冗余值。您知道如何将表达式直接解释为函数,而不是每次都生成新列表吗?好的,谢谢。然而,通过这种方法,我们计算了许多冗余值。你知道如何直接将表达式解释为函数,而不是每次都生成一个新列表吗?QED是“quod erat demonstrandum”的拉丁文首字母,它(如果我的拉丁文和英文都不让我失望的话)的意思类似于“要演示的东西是什么”。QED是“quod erat demonstrandum”的拉丁首字母,它(如果我的拉丁语和英语都不让我失望的话)的意思是“这是要演示的东西”。因此,在你的回答中可能没有正确使用。