2010-11-24 62 views

回答

4

#1代表pure function中的第一個參數。

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

+0

親愛Soufiane,謝謝。那麼Root [-1 - 2#1 - #1^2 + 2#1^3 +#1^4&,1]究竟意味着什麼? – user376089 2010-11-24 22:32:33

31

它是一個變量的佔位符。

如果要定義一個Y(X)= X^2的功能,你只可以做:

f = #^2 & 

的變量進入#號& 「在泵」。對於配對&和#,當你有嵌套函數時,這很重要。

In: f[2] 
    Out: 4 

如果你有兩個瓦爾運行的功能,你可以這樣做:

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] 

這意味着數學不知道如何caculate一個象徵性的結果。它只是多項式的第一個根。但它確實知道什麼是它的數值:

In[7]:= [email protected][-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] 

Out[7]= -2.13224 

所以,Root[f,k]是一種速記書寫多項式的根與秩序> 3.我救你從約自由基和尋找多項式根的解釋...好了,我想

9

如何找出任何內置語法Mathematica中表示:

  1. 拷貝表達
  2. 待辦事項TreeForm [按住[粘貼在這裏表達]。
  3. 樹的鼠標懸停零件識別語法問題,在這種情況下插槽
  4. 輸入「?老虎」
+5

或者也許更容易:1)突出顯示2)按F1 3)利潤? – Janus 2010-11-25 02:16:52

+0

這可能在大多數情況下都有效。TreeFor更好的一個例子是當上下文很重要時,例如,如果在函數的結尾選擇&,它會爲BitAnd提供幫助,並且函數 – 2010-11-25 02:42:50

6

符號#是(如上所述)用來指「一個變量超出這裏「在一個純粹的功能(」封閉「爲你的傳統開發者)。最後必須遵循&

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

旁註:f=5f[x_]:=5一個 「符號」 f都工作。當使用方括號來提取其值時,f可以被稱爲功能,並且f[x_]可以與f[x_,y_]和平共存而不會彼此超越。當發送一個參數時將使用一個,當發送兩個參數時使用另一個參數。

有些時候你只需要一個快速的功能,而不需要定義它,並讓它掛起。因此,(someValue + 5)變爲(#+5)&,其中&表示「我是純函數,並且可以與您發送給我的任何內容一起工作」,並且#表示「我是發送給純函數的參數(或參數列表)」 。如果您發送的參數超過1個,則還可以使用#1,#2#3等。

普遍使用的多參數純函數的例子:

比方說mydata是列表,其需要通過列表的中位數排序(例如,從美國各個城市的房價數據)的列表:

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

小技巧,如果你申請的功能爲單個值,它可能看起來整潔和清潔,並使用更少的打字使用@代替[],這基本上意味着Prefix。不要與Map (/@)Apply(@@)混淆。上面的命令就變成了:

Sort[ myData , [email protected]#1 > [email protected]#2 & ] 

你可以鏈@這樣:[email protected]@DeleteDuplicates[...]