如何在mathematica中应用涉及一百个变量的规则

时间:2011-01-20 03:18:14

标签: wolfram-mathematica

我有一个涉及x1,x2,...,x100的表达式,我还有一个包含100个元素的列表lst,如何将规则应用于此表达式以实现如下所示:

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

谢谢!

3 个答案:

答案 0 :(得分:6)

 exp /.  Table[Symbol["x" <> ToString[i]] -> lst[[i]], {i, 1, 100}]  

所以你不需要写X1,X2,... X100

答案 1 :(得分:3)

您可以使用Thread将规则应用于每对表达式:

Thread[{a, b, c} -> {1, 2, 3}]

答案 2 :(得分:2)

使用索引变量解决此类任务而不是生成不同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