как применить правило, включающее сто переменных в Mathematica - PullRequest
2 голосов
/ 20 января 2011

У меня есть выражение, включающее x1, x2, ..., x100, у меня также есть список lst с 100 элементами, как применить правило к этому выражению для достижения чего-то вроде следующего:

exp/.{x1->lst[[1]],x2->lst[[2]],...,x100->lst[[100]]}

Спасибо!

Ответы [ 3 ]

6 голосов
/ 20 января 2011
 exp /.  Table[Symbol["x" <> ToString[i]] -> lst[[i]], {i, 1, 100}]  

Так что вам не нужно писать X1, X2, ... X100

3 голосов
/ 20 января 2011

Вы можете использовать Thread, чтобы применить правила к каждой паре выражений:

Thread[{a, b, c} -> {1, 2, 3}]
2 голосов
/ 19 июня 2011

Гораздо проще и удобнее решать такие задачи, используя индексированные переменные, а не генерировать список различных Symbol с.Таким образом:

listOfRules = Array[f@# :> list[[#]] &, {100}];
Short@%

=> {f[1]:>list[[1]],f[2]:>list[[2]],f[3]:>list[[3]],f[4]:>list[[4]],
<<92>>,f[97]:>list[[97]],f[98]:>list[[98]],f[99]:>list[[99]],f[100]:>list[[100]]}

Если вы планируете выполнять такую ​​замену много раз, стоит Dispatch большой список правил:

listOfRules = Dispatch@listOfRules;

Замена может быть сделана какобычно:

expr /. listOfRules
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...