Utiliser une variable pour représenter une autre variable?

Oct 15 2020

J'essaye de créer une liste de fonctions en remplaçant des variables dans un modèle. J'ai essayé ceci:

In[1]:= Table[Function[{x,y}, (x + y) v], {v, {x,y}}]
Out[1]= {Function[{x, y}, (x + y) v], Function[{x, y}, (x + y) v]}

Mais ces fonctions ont ven eux. Je m'attendais à obtenir:

{Function[{x, y}, (x + y) x], Function[{x, y}, (x + y) y]}

J'ai pensé que cela fonctionnerait parce que je peux faire quelque chose de similaire avec Solve:

In[2]:= Table[Solve[(x + y) v == 1 && x == y], {v, {x, y}}]
Out[2]= {{{x -> -(1/Sqrt[2]), y -> -(1/Sqrt[2])}, …

Cela équivaut à:

In[3]:= {Solve[(x + y) x == 1 && x == y], Solve[(x + y) y == 1 && x == y]}
Out[3]= {{{x -> -(1/Sqrt[2]), y -> -(1/Sqrt[2])}, …

Il semble qu'il remplace vpar x/ ydans l' Solveexemple, mais pas dans l' Functionexemple. Remplacer Function[{x,y}, (x + y) Evaluate[v]]par Function[{x,y}, (x + y) v]n'aide pas. Que se passe t-il ici? Comment puis-je générer une liste de fonctions similaires?

Réponses

1 cvgmt Oct 15 2020 at 10:37

La question est similaire à celle de savoir comment construire une série de fonctions pures.

Function /@ Table[(Slot[1] + Slot[2]) v, {v, {Slot[1], Slot[2]}}]

Certains codes similaires à @BobHanlon dans le commentaire sont

Outer[Function[{x, y}, (x + y) #] &, {x, y}]