小编Can*_*tor的帖子

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

我想写一个

 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.

wolfram-mathematica

6
推荐指数
2
解决办法
1161
查看次数

后勤地图的庞加莱返回地图f_c(x)= cx(1-x)

假设:

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)

wolfram-mathematica

3
推荐指数
1
解决办法
604
查看次数

标签 统计

wolfram-mathematica ×2