2011-01-20 68 views
2

我有涉及X1,X2,...,X100,我也有一個列表lst 100種元素的計算式,如何將規則應用於這個表達式實現如下所示:如何應用規則涉及數學一百變量

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

謝謝!

回答

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

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

+2

對於很長的更換列出了適用於複雜的公式,我建議使用`Dispatch`:http://reference.wolfram.com/mathematica/ref/Dispatch.html。 – Timo 2011-01-20 07:45:22

3

您可以使用Thread的規則適用於每一對的表達式:

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

這是使用索引變量解決這些任務更簡單,更方便,而不是生成不同列表的不同Symbol s。通過這種方式:

listOfRules = Array[[email protected]# :> list[[#]] &, {100}]; 
[email protected]% 

=> {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 = [email protected]; 

更換可以照常進行:

expr /. listOfRules