我想写一个
Module Arg[f_,n_]
Run Code Online (Sandbox Code Playgroud)
它接受函数f(具有<= n个参数)和自然数n并输出函数f的第n个参数.
例如,假设f由...定义
f[a_,b_]=a^2+b^2.
Run Code Online (Sandbox Code Playgroud)
然后,
Arg[f[s,t],1]
Run Code Online (Sandbox Code Playgroud)
应该是;
而
Arg[f[u,v],2]
Run Code Online (Sandbox Code Playgroud)
应该是v.
我的问题是这是否可行.如果是这样,我应该写什么"???" 下面?
Arg[f_,n_] := Module[{}, ??? ]
Run Code Online (Sandbox Code Playgroud)
注意,我不想在Arg的定义中指定a_和b_
Arg[f_,a_,b_,n_]
Run Code Online (Sandbox Code Playgroud)
编辑:"Arg"只是模块的名称而不是Mathematica的内部函数Arg.
假设:
f[c_,x_]:= c x (1-x)
Run Code Online (Sandbox Code Playgroud)
修复[0,1]中的间隔(a,b).庞加莱返回(到区间(a,b))f的图是一个函数
[R [C,X] = F ^ K [C,X],
其中k是第一个迭代,这样a<f^k[c,x]<b(这里f^k[c,x]表示与自身的k时间组成f,即f[c,f[c,...f[c,x]...]])
所以,我想写一个函数(或模块)
R[f_,a_,b_,n_,x_]
Run Code Online (Sandbox Code Playgroud)
它考虑f的前n次迭代并返回第一次迭代的值f[c,x]落入区间[a,b].
这是我尝试的:
R[f_[x___ ], a_,b_, n_, x0_] :=
Module[{i, y=x0},
Catch[
For[i = 0, i <= n, i++,
If[a < f[{x}[[1]], y] < b,
Throw[f[{x}[[1]], y]], y = f[{x}[[1]], y]
]
]
]
]
Run Code Online (Sandbox Code Playgroud)
代码不起作用,因为f[{x}[[1]], y]写入的位置f被理解为乘以数字{x}[[1]]而不是上面定义的逻辑函数.
请注意,我正在寻找一段简单的代码,如果可能的话,请不要在答案中更改函数R的输入数量.
编辑:我想打电话给R如下.
R[f[3.5, t], 0.4, 0.7, 100, 0.2] …Run Code Online (Sandbox Code Playgroud)