在一些符号计算之后,我有一个带有5个符号变量的表达式:expr = f(v1,v2,v3,v4,v5)。每个变量都是一系列值,例如:
v1 = Range[1, 15, 1]
v2 = Range[0.5, 3, 0.1]
...
我想评估所有变量中所有值的每个组合的表达式,并取其平均值和标准差。
我试过
exprEval = Table[Table[Table[Table[Table[expr, {v1, 1, 15, 1}], {v2, 0.5, 3, 0.1}], {v3,...}], {v4, ...}], {v5, ...}]
exprEvalMean = Mean[Flatten[exprEval]]
但这要么是永远的,要么因内存错误而崩溃。还有另一种更有效的方法吗?
答案 0 :(得分:1)
有三组变量值
v1 = Range[1, 3, 1];
v2 = Range[1.1, 1.5, 0.2];
v3 = Range[300, 400, 100];
说你的表达是变量的乘积
f[a_, b_, c_] := a b c
然后
res = f[Sequence @@ #] & /@ Tuples[{v1, v2, v3}];
Through@{Mean, StandardDeviation}[res]
(* {910., 428.348} *)
希望这有帮助。
答案 1 :(得分:0)
v1 = Range[1, 3, 1];
v2 = Range[1.1, 1.5, 0.2];
v3 = Range[300, 400, 100];
Print[out = Outer[List, v1, v2, v3]];
Print[avg = Mean[Flatten[out]]];
Print[sd = StandardDeviation[Flatten[out]]];