了解一个蜘蛛网代码

时间:2017-04-01 21:40:55

标签: wolfram-mathematica

我试图在Mathematica中运行一个蜘蛛网代码,我需要以下脚本:

ClearAll[CobwebPlot]
Options[CobwebPlot]=Join[{CobStyle->Automatic},Options[Graphics]];
CobwebPlot[f_,start_?NumericQ,n_,xrange:{xmin_,xmax_},opts:OptionsPattern[]]:=Module[{cob,x,g1,coor},
cob=NestList[f,N[start],n];
coor = Partition[Riffle[cob,cob],2,1];
coor[[1,2]]=0;
cobstyle=OptionValue[CobwebPlot,CobStyle];
cobstyle=If[cobstyle===Automatic,Red,cobstyle];
g1=Graphics[{cobstyle,Line[coor]}];
Show[{Plot[{x,f[x]},{x,xmin,xmax},PlotStyle->{{Thick,Black},Black}],g1},FilterRules[{opts},Options[Graphics]]]
]

Manipulate[CobwebPlot[Sqrt[3#-1]&,\[Alpha],40,{0,5},PlotRange->{{0,4.5},{0,3.65}},Frame->True,Axes->False,CobStyle->Directive[Dashed,Red],PlotRangePadding->None],{\[Alpha],0.5,4.375}]

我在网上找到了该剧本但我不了解一些功能,例如以下字符的目的是什么,& ,代码的 Manipulate [] 部分:

Manipulate[CobwebPlot[Sqrt[3#-1]&,\[Alpha],40,{0,5},PlotRange->{{0,4.5},{0,3.65}},Frame->True,Axes->False,CobStyle->Directive[Dashed,Red],PlotRangePadding->None],{\[Alpha],0.5,4.375}]

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

请参阅this Mathematica documentation page on pure functions,或其他语言称为anonymous functions或lambda函数。

举一个可爱的例子,假设你有这个功能

doItTwice[x_,f_] := f[f[x]];

现在说你想使用这个函数将数字7平方两次。一种方法是定义一个像这样的方形函数:

square[x_] := x^2; 
doItTwice[7, square]

嗯,有一种更简洁的方法可以通过简单地将square函数作为纯函数来编写,它看起来像(#^2)&#是纯函数的参数,&就是指示它是纯函数。实际上括号甚至不是必需的,所以你可以写#^2&。无论如何,下面的代码现在是一个更简洁的方法,两次:

doItTwice[7, (#^2)&]