を評価しない:Mathematicaは、私は2つのオブジェクト定義された#1
f=x^2
g=x->#1
なぜこのん:
25
しかし、この:
f /. x -> #1 &[5]
は私に期待される結果を与えるが
f /. g &[5]
は私を与える:
#1^2
#1が助けてください5 に評価されなかったかのように。
を評価しない:Mathematicaは、私は2つのオブジェクト定義された#1
f=x^2
g=x->#1
なぜこのん:
25
しかし、この:
f /. x -> #1 &[5]
は私に期待される結果を与えるが
f /. g &[5]
は私を与える:
#1^2
#1が助けてください5 に評価されなかったかのように。
純粋な機能コンポーネントを一緒に保つことで機能させることができます。
f = x^2
g = x -> #1 &
f/. g[5]
マッピングする前に機能を形成し、リスト上でそれを実行します。
f = x^2
g = x -> #1
list = {1, 2, 3, 4, 5};
b = Block[{a}, Function[f /. a] /. a -> g]
Map[b, list]
{1、4、9、16、25}
やコメントに特定の問題のために...
vars = {x, y};
f = x + y;
g = Table[vars[[i]] -> Slot[i], {i, 1, Length[vars]}];
b = Block[{a}, Function[f /. a] /. a -> g];
list = {{1, 2}, {3, 4}, {5, 6}};
Map[b[Sequence @@ #] &, list]
{3、7、11}
Mr. Wizardの答えで、これは次のようになります:
vars = {x, y};
f = x + y;
g = Table[vars[[i]] -> Slot[i], {i, 1, Length[vars]}];
list = {{1, 2}, {3, 4}, {5, 6}};
Map[Evaluate[f /. g] &[Sequence @@ #] &, list]
Attributes[Function]
{HoldAll, Protected}
したがってg
未評価のままである:{3、7、11}
Function
さて、問題は次のとおりです:[f /。 [x - >#1}&、list] – user1161552
問題は、次のようなことです:vars = {x、y}; f = x + y; g =テーブル[vars [[i]] - > Slot [i]、{i、1、Length [vars]}];リスト= {{1,2}、{3,4}、{5,6}};マップ[f /。g&、list]; get {5、7、11}これは、fとuserとvarsの式が変数リストになるため、変数をハードコードできないからです。 – user1161552
すばらしい、ありがとう。私が理解していないことの1つは、ブロックにシーケンスを送信することです。シーケンスはそのブロックのパラメータリストとして理解されますか? – user1161552
Mathematicaで頻繁に使用されるように、式を[]にラップし、出力を調べるのは参考になります。おかげさまで –
しかし、予想通りに間違った結果をもたらす声明をどのように修正することができますか?私はMathematicaの初心者なので、ほとんどのことは分かりません。 – user1161552