在 Mathematica 中评估变量范围的符号表达式
Evaluate symbolic expression in Mathematica for ranges of variables
经过一些符号计算后,我得到了一个包含 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]]
但这要么需要很长时间,要么因内存错误而崩溃。还有另一种更有效的方法吗?
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]]];
具有三组变量值
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} *)
希望对您有所帮助。
经过一些符号计算后,我得到了一个包含 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]]
但这要么需要很长时间,要么因内存错误而崩溃。还有另一种更有效的方法吗?
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]]];
具有三组变量值
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} *)
希望对您有所帮助。