Wolfram Mathematica函数使用的变量列表

时间:2015-02-21 22:25:29

标签: wolfram-mathematica

有没有办法获取函数使用的变量列表? 例如:     一个= 1;     B = 2;     f [x _]:= 2a * x + b;

需要:     SomeFunction并[f]

输出:     {{X},{A,B}}

函数({x})的参数实际上并不是强制性的。

感谢。

1 个答案:

答案 0 :(得分:0)

要获得所有符号(不一定是变量),您可以从以下内容开始:

DownValues[f]

产生:

{HoldPattern[f[x_]] :> 2 a x + b}

然后问题在于你不要让Mathematica进行替换。这是通过Hold

完成的
held=(Hold //@ DownValues[f][[1]])[[1, 2]]

产生:

Hold[Hold[Hold[2] Hold[a] Hold[x]] + Hold[b]]

您可以使用以下内容提取所有看起来像符号的内容:

Cases[held, Hold[_Symbol], Infinity]

你得到:

{Hold[a], Hold[x], Hold[b]}

为了让这更好一点:

Union[Flatten[Hold @@ Cases[held, Hold[_Symbol], Infinity]]]

给你:

Hold[a, b, x]

你还需要Hold,因为只要你失去它, Mathematica 就会评估ab,你就会失去它们符号。

如果您注意到,它会考虑x一个您可能不想要的符号,因为它是一个参数。您可以从DownValues[f][[1]] RuleDelayed:>)表达式的左侧挑出参数,然后将其解压缩,但我会将此详细信息留给您。