关于语法:#在Mathematica中是什么意思? 您所在的位置:网站首页 hold表示什么意思 关于语法:#在Mathematica中是什么意思?

关于语法:#在Mathematica中是什么意思?

2023-11-02 08:52| 来源: 网络整理| 查看: 265

有人知道例如在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]到底是什么意思?

谢谢。

它是变量的占位符。

如果要定义y(x)= x ^ 2函数,则可以执行以下操作:

1  f = #^2 &

&将变量"插入"#号。当您具有嵌套函数时,这对于配对&和#非常重要。

12  In: f[2]     Out: 4

如果您有一个在两个变量上操作的函数,则可以执行以下操作:

1 f = #1 + #2 &

所以

12  In: f[3,4]     Out: 7

或者您可能有一个在列表中操作的函数,因此:

1 f = #[[1]] + #[[2]] &

所以:

12  In: f[{3,4}]   Out: 7

关于Root[]

根据Mathematica的帮助:

1Root[f,k] represents the exact kth root of the polynomial equation f[x]==0  .

因此,如果您的多边形是x^2 - 1,请使用上面看到的内容:

12345        f = #^2 - 1 & In[4]:= Root[f, 1]   Out[4]= -1  (* as we expected ! *)

123In[5]:= Root[f, 2]   Out[5]= 1  (* Thanks God ! *)

但是,如果我们尝试使用更高阶的多项式:

12345         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不知道如何计算符号结果。它只是多项式的第一个根。但是它确实知道它的数值是多少:

123In[7]:= N@Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] Out[7]= -2.13224

因此,Root[f,k]是一种速记法,用于表示阶次为3的多项式的根。

如何找出Mathematica中任何内置语法的含义:

复制表达 执行TreeForm [Hold [在此处粘贴表达式]]。 将鼠标悬停在树的各个部分上以标识所讨论的语法,在本例中为Slot 输入"?插槽" 相关讨论 也许更简单:1)突出显示2)按F1 3)获利? 这可能在大多数时间都有效。 当上下文很重要时,TreeFor更好的例子是,例如,如果在函数末尾选择&,它将为BitAnd,And和Function提供帮助

标记#(如上所述)用于表示纯函数中的"变量在此处"(对于传统开发人员而言为"闭包")。必须始终在末尾跟随&。

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

旁注:f=5和f[x_]:=5均与"符号" f一起使用。当使用方括号提取其值时,f可以称为函数,并且f[x_]可以与f[x_,y_]和平共处,而不会彼此覆盖。发送一个参数时将使用一个,发送两个参数时将使用另一个。

有时候,您只需要一个快速功能,而无需定义它并使它挂起。因此,(someValue + 5)变为(#+5)&,其中&表示"我是一个纯函数,并且可以使用您发送给我的任何东西",而#表示"我是参数(或参数列表)发送给纯函数"。如果要向其发送多个参数,还可以使用#1,#2,#3等。

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

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

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

快速提示,如果您将函数应用于单个值,它可能看起来更整洁,干净,并且使用更少的键入来使用@而不是[],这实际上意味着Prefix。不要与Map (/@)或Apply(@@)混淆。上面的命令将变为:

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

您可以这样链接@:Reverse@Sort@DeleteDuplicates[...]

相关讨论 这是一个很好的解释。 谢谢。 (不过,链接到@的不同含义的更多信息可能是个好主意;如果您要提到的是几种令人困惑的含义,而且对于Google而言,这是相当困难的……)

#1表示纯函数中的第一个参数。

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

相关讨论 亲爱的苏菲安,谢谢。 那么Root [-1-2#1-#1 ^ 2 + 2#1 ^ 3 +#1 ^ 4&,1]到底是什么意思?



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有