gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:09:17 25 4
gpt4 key购买 nike

我想写一个

 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com