有没有人知道#在例如Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]中在Mathematica中是什么意思?
那么Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]到底是什么意思呢?
谢谢。
发布于 2010-11-25 06:37:25
如何在Mathematica中找出任何内置语法的含义:
发布于 2011-09-23 02:44:46
Notation # (如上所述)用于在纯函数中表示“这里有一个变量”(对于传统开发人员来说是“闭包”)。它的末尾必须总是跟&。
最好的例子是:f[x_]:=x+5。这会创建一个延迟集,每当将值作为函数参数传递到符号引用f中时,该值都会被赋予特定于本地上下文函数的名称x (如果有的话,不会影响x的全局定义)。然后将使用这个新变量/值对表达式x+5求值。上述过程需要初始化symbol f,创建局部变量x,并将expression x+5永久保存在内存中,除非您将其清除。
旁注: f=5和f[x_]:=5都使用"Symbol“f。当使用方括号提取其值时,f可以被称为一个函数,并且f[x_]可以与f[x_,y_]和平共存,而不会相互覆盖。一个在发送一个参数时使用,另一个在发送两个参数时使用。
有时你只需要一个快速的函数,而不需要定义它并让它挂起。因此,(someValue + 5)变成了(#+5)&,其中&说“我是一个纯函数,可以处理您发送给我的任何东西”,而#说“我是发送给纯函数的参数(或参数列表)”。如果要发送多个参数,还可以使用#1、#2、#3等。
常用多参数纯函数示例:
假设mydata是一个列表列表,您需要按列表的中位数排序(例如,来自美国各个城市的房价数据):
Sort[ myData , Median[#1] > Median[#2]& ]快速提示,如果您将一个函数应用于单个值,它可能看起来更整洁,并且使用更少的类型来使用@而不是[],这实际上意味着Prefix。不要与Map (/@)或Apply(@@)混淆。然后,上面的命令变成:
Sort[ myData , Median@#1 > Median@#2 & ] 您可以像这样链接@:Reverse@Sort@DeleteDuplicates[...]
发布于 2010-11-25 06:24:45
#1表示pure function中的第一个参数。
如果你有多个参数#1,#2,#3...请参考第一个、第二个、第三个参数等。
https://stackoverflow.com/questions/4272067
复制相似问题