Mathematica中的#含义是什么?

时间:2010-11-24 22:20:25

标签: syntax wolfram-mathematica

有没有人知道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]究竟意味着什么?

感谢。

4 个答案:

答案 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中任何内置语法的含义:

  1. 复制表达
  2. 执行TreeForm [暂停[在此处粘贴表达]]。
  3. 鼠标悬停在树的某些部分以识别有问题的语法,在本例中为Slot
  4. 输入“?Slot”

答案 2 :(得分:7)

符号#(如上所述)用于表示“变量在这里”的纯函数(传统开发人员的“闭包”)。必须始终遵循&

最好的例子是:f[x_]:=x+5。这会创建一个延迟集,任何时候将值作为函数参数传递给符号引用f,该值将被赋予一个本地上下文函数特定名称x(不影响全局) x的定义,如果有的话)。然后将使用此新变量/值来计算表达式x+5。上述过程要求初始化符号f,创建局部变量x,并将表达式x+5永久保存在内存中,除非您清除它。

旁注: f=5f[x_]:=5都使用“符号”ff可以被称为函数,当使用方括号来提取其值时,f[x_]可以与f[x_,y_]和平共存而不会相互覆盖。一个参数发送时使用一个,发送2个参数时使用另一个参数。

有些时候你只需要一个快速的功能,不需要定义它并让它挂起。因此,(someValue + 5)变为(#+5)&,其中&表示“我是一个纯粹的函数,并且可以使用您发给我的任何内容”,#说“我是发送到纯函数的参数(或参数列表)“。如果您发送的参数超过1个,也可以使用#1#2#3等。

常用的多参数纯函数示例:

假设mydata是一个列表列表,您需要按列表的中位数排序(例如来自美国各个城市的住房价格数据):

Sort[ myData , Median[#1] > Median[#2]& ]

快速提示,如果您将某个功能应用于单个值,它可能看起来更整洁,更清晰,并且使用更少的输入来使用@代替[],这实质上意味着{{1} }}。不要与PrefixMap (/@)混淆。然后上面的命令变为:

Apply(@@)

您可以链接Sort[ myData , Median@#1 > Median@#2 & ] @

答案 3 :(得分:4)

#1代表pure function中的第一个参数。

如果您有多个参数#1#2#3 ...请参阅第一个,第二个,第三个参数,依此类推。