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.

編集

あなたのコメントに関しては、それを行う方法はたくさんあります。これが1つです:

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 に答える