簡體   English   中英

Mathematica中的#含義是什么?

[英]What does # mean in Mathematica?

有沒有人知道什么#in例如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]究竟是什么意思?

謝謝。

它是變量的占位符。

如果你想定義ay(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  .

所以,如果您的poly是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]是一種用於> 0的多項式根的速記書寫。我從一個關於自由基的解釋中找到你並找到多項式根...我認為更好

如何找出Mathematica中任何內置語法的含義:

  1. 復制表達式
  2. 做TreeForm [保持[粘貼表達式]]。
  3. 鼠標懸停在樹的部分以識別有問題的語法,在本例中為Slot
  4. 輸入“?Slot”

符號# (如上所述)用於表示純函數中的“變量在這里”(傳統開發人員的“閉包”)。 最后必須始終跟隨&

最好的例子是: f[x_]:=x+5 這就形成了一個延遲集,一個值被傳遞到符號引用任何時候f的功能參數,該值將被賦予的本地環境特定功能名稱x (不影響全局定義x ,如果有一個)。 然后使用這個新的變量/值來計算表達式x+5 上述過程要求初始化符號f ,創建局部變量x ,並且表達式x+5永久保存在內存中,除非您清除它。

旁注: f=5f[x_]:=5均使用“符號” f f可以被稱為函數,當使用方括號來提取其值時, f[x_]可以與f[x_,y_]和平共存而不會相互覆蓋。 一個參數發送時使用一個,發送2個參數時使用另一個參數。

有時你只需要一個快速的功能,不需要定義它並讓它掛起。 所以, (someValue + 5)成為(#+5)& ,其中&表示“我是一個純函數,並且可以使用你發送給我的任何東西”,而#說“我是參數(或參數列表) )被發送到純函數“。 如果您發送超過1個參數,也可以使用#1#2#3等。

常用的多參數純函數示例:

假設mydata是一個列表列表,您需要按列表的中位數進行排序(例如,來自美國各個城市的住房價格數據):

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

快速提示,如果您將函數應用於單個值,它可能看起來更整潔,更清晰,並且使用更少的類型來使用@而不是[] ,這實際上意味着Prefix 不要與Map (/@)Apply(@@)混淆。 上面的命令變為:

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

您可以鏈接@Reverse@Sort@DeleteDuplicates[...]

#1表示純函數中的第一個參數。

如果您有多個參數#1#2#3 ...請參閱第一個,第二個,第三個參數,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM