有没有人知道Mathematica中的#{例如Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]
是什么意思?
那么Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]
究竟意味着什么?
感谢。
答案 0 :(得分:32)
它是变量的占位符。
如果你想定义一个y(x)= x ^ 2函数,你可以这样做:
f = #^2 &
&将变量“泵入”#符号。这对配对和配对非常重要。和#当你有嵌套函数。
In: f[2]
Out: 4
如果你有一个在两个vars上运行的功能,你可以这样做:
f = #1 + #2 &
所以
In: f[3,4]
Out: 7
或者你可能有一个在列表中运行的功能,所以:
f = #[[1]] + #[[2]] &
所以:
In: f[{3,4}]
Out: 7
关于Root[]
根据Mathematica的帮助:
Root[f,k] represents the exact kth root of the polynomial equation f[x]==0 .
所以,如果您的多边形是x^2 - 1
,请使用我们在上面看到的内容:
f = #^2 - 1 &
In[4]:= Root[f, 1]
Out[4]= -1 (* as we expected ! *)
和
In[5]:= Root[f, 2]
Out[5]= 1 (* Thanks God ! *)
但是如果我们尝试使用更高阶的多项式:
f = -1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &
In[6]:= Root[f, 1]
Out[6]= Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]
这意味着Mathematica不知道如何计算符号结果。它只是多项式的第一个根。但它确实知道它的数值是什么:
In[7]:= N@Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]
Out[7]= -2.13224
因此,Root[f,k]
是一种多项式根的速记书写,顺序为> 3.我从一个关于激进分子和发现多项式根的解释中拯救你......我认为
答案 1 :(得分:10)
如何找出Mathematica中任何内置语法的含义:
答案 2 :(得分:7)
符号#
(如上所述)用于表示“变量在这里”的纯函数(传统开发人员的“闭包”)。必须始终遵循&
。
最好的例子是:f[x_]:=x+5
。这会创建一个延迟集,任何时候将值作为函数参数传递给符号引用f
,该值将被赋予一个本地上下文函数特定名称x
(不影响全局) x
的定义,如果有的话)。然后将使用此新变量/值来计算表达式x+5
。上述过程要求初始化符号f
,创建局部变量x
,并将表达式x+5
永久保存在内存中,除非您清除它。
旁注: f=5
和f[x_]:=5
都使用“符号”f
。 f
可以被称为函数,当使用方括号来提取其值时,f[x_]
可以与f[x_,y_]
和平共存而不会相互覆盖。一个参数发送时使用一个,发送2个参数时使用另一个参数。
有些时候你只需要一个快速的功能,不需要定义它并让它挂起。因此,(someValue + 5)
变为(#+5)&
,其中&
表示“我是一个纯粹的函数,并且可以使用您发给我的任何内容”,#
说“我是发送到纯函数的参数(或参数列表)“。如果您发送的参数超过1个,也可以使用#1
,#2
,#3
等。
常用的多参数纯函数示例:
假设mydata
是一个列表列表,您需要按列表的中位数排序(例如来自美国各个城市的住房价格数据):
Sort[ myData , Median[#1] > Median[#2]& ]
快速提示,如果您将某个功能应用于单个值,它可能看起来更整洁,更清晰,并且使用更少的输入来使用@
代替[]
,这实质上意味着{{1} }}。不要与Prefix
或Map (/@)
混淆。然后上面的命令变为:
Apply(@@)
您可以链接Sort[ myData , Median@#1 > Median@#2 & ]
:@
答案 3 :(得分:4)
#1
代表pure function中的第一个参数。
如果您有多个参数#1
,#2
,#3
...请参阅第一个,第二个,第三个参数,依此类推。