我想写一个
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/