跳轉到內容

Mathematica/常用結構

來自華夏公益教科書,自由的教科書

常用結構和操作

[編輯 | 編輯原始碼]

在 Mathematica 中,一個指導原則是幾乎所有在 Mathematica 中表示的物件都具有統一的結構。例如,表示式 如果輸入,將被表示為如果它被寫為

In[8]:= x^4 + 1
Out[8]= 1+x4

如果FullForm命令用於此表示式,但是

In[9]:= FullForm[x^4 + 1]
Out[9]= Plus[1, Power[x, 4]]

Mathematica 中的所有物件,除了原子物件(如符號、數字和字串)之外,都具有基本形式 head[e1, e2, ...](這可能以其他方式顯示或輸入)。例如,上述表示式的頭部是Plus. 列表也具有這種結構,其中頭部是List, 元素是 e1, e2 等。head 的概念也為原子物件定義(Symbol對於符號,Integer對於整數等),但它們沒有可提取的子部分。

此原則允許與列表無關的普通表示式使用列表運算子進行操作

In[10]:= Expand[(Cos[x] + 2 Log[x^11])/13][[2, 1]]
Out[10]= 2/13

反之亦然——列表可以修改為表現得像普通表示式

In[11]:= Map[Apply[Log, #] &, {{2, x}, {3, x}, {4, x}}]
Out[11]= {Log[x]/Log[2], Log[x]/Log[3], Log[x]/Log[4]}

其中Apply函式將其第二個引數的頭部更改為第一個引數的頭部,並且Map的行為類似於在許多函式式語言中找到的 對映函式。請注意,Log[b,x]是底數b對數,它被 轉換為Log[x]/Log[b]在輸入時。

由於在 Mathematica 中表示的常規數學物件與簡單列表結構之間的這種等價性,一些內建的 Mathematica 函式允許 執行緒,其中函式在列表上對映自身,而無需太多其他說明。事實上,Apply當被呼叫時,它本身在列表上進行執行緒

In[12]:= Apply[Log, {{2,x}, {3,x}, {4,x}}, 1]
Out[12]= {Log[x]/Log[2], Log[x]/Log[3], Log[x]/Log[4]}

其中第三個引數為 1 指定Apply僅在其引數的第一個級別(這是我們想要的)中替換其引數的頭部,並且等效於上面的示例。

華夏公益教科書