wolfram-mathematica - 将函数传递给模块而不指定其参数

标签 wolfram-mathematica

我想写一个

 Module Arg[f_,n_] 

它接受一个函数 f(具有 <=n 个参数)和一个自然数 n,并输出函数 f 的第 n 个参数。

例如,假设 f 定义为
f[a_,b_]=a^2+b^2. 

然后,
Arg[f[s,t],1] 

应该是s;

尽管
Arg[f[u,v],2] 

应该是 v。

我的问题是这是否可能。如果是这样,我应该写什么来代替“???”以下?
Arg[f_,n_] := Module[{}, ??? ]

请注意,我不想在 Arg 的定义中指定 a_ 和 b_
 Arg[f_,a_,b_,n_]

编辑:“Arg”只是我对模块的名称,而不是 Mathematica 的内部函数 Arg。

最佳答案

也许

SetAttributes[arg, HoldFirst];
arg[f_[x___], n_] := {x}[[n]]

f[a_, b_] := a^2 + b^2.
arg[f[arg[f[s, t], 1], t], 1]
arg[f[s, t], 2]

(*
 -> s
 -> t
*)

arg[ArcTan[f[Cos@Sin@x, x], t], 1]

(*
->  x^2. + Cos[Sin[x]]^2
*)

关于wolfram-mathematica - 将函数传递给模块而不指定其参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8198051/

相关文章:

wolfram-mathematica - 如何减少Mathematica中自变量的数量

java - Java/Python/Mathematica 中的循环序列

wolfram-mathematica - 如何从 Mathematica 的自动标记列表中指定特定的绘图标记?

wolfram-mathematica - 在mathematica中绘制多规则函数

windows - Mathematica 中可移植笔记本的相对路径

wolfram-mathematica - 制作表格的速度差异

wolfram-mathematica - 在 Mathematica 中求解微分方程

wolfram-mathematica - 如何获取列表并生成所有长度增加的列表?

wolfram-mathematica - 如何在不使用 Manipulate 结构的情况下返回 "SaveDefintions"?

wolfram-mathematica - 加快 ListLinePlot 速度