Maple中的sequence, set和list

前言

在數學計算中, 序列、集合與列表是最常用的幾種基本數據類型。在Maple中, 有相應的數據結構與之對應。本文就這幾種數據結構在Maple的使用方法進行簡要說明。

定義

  • sequence, es
    一序列的值
  • set {es}
    無序的值的序列, 使用{}表示, 不能重複。
  • list [es]
    有序的值的序列, 使用[]表示, 可以重複。

set和list均可用numelems() 函數計算, 如numelems(S), numelems(L)。

簡介

  • 集合是用大括號 {} 括起來的無序表達式的無序序列, 從數學意義上表示一個集合。
  • 列表是括在方括號 [] 中的表達式的有序序列。表達式的順序是es的順序。
  • 注意, es可能爲空, 因此空集用 { } 表示, 空列表用 [ ] 表示。
  • 在輸出中, 空集的排版爲\emptyset
  • 集或列表S的元素數由 numelems(S)numelems(S) 求出。

訪問元素

  • 可以通過選擇操作來提取集合或列表的元素。因此, 如果S是集合或列表, 則 S[i]S[i] 選擇第 ii 個元素。或者, 可以使用 op(i,S)op(i, S)。元素從1開始編號, 因此 S[1]S[1] 提取第一個元素。也可以使用負下標, 如 S[1]S[-1] 選擇最後一個元素, S[2]S[-2] 選擇第二個元素, 依此類推。
  • 可以提取列表或集合 SS 的多個元素。使用 op(i..j,S)op(i..j,S) 選擇子序列 (S[i],S[i+1],...,S[j])(S[i], S [i + 1],...,S [j])。如果 SS 是集合, 則選擇 S[i..j]S[i..j] 選擇子集 {op(i..j,S)}\{op(i..j,S)\}。如果 SS 是一個列表, 則選擇 S[i..j]S[i..j] 選擇子列表 [op(i..j,S)][op(i..j,S)]。同樣地, 列表也可以使用負下標。
  • 列表和集合可以嵌套, 在這種情況下, 可以通過以下兩種方式之一進行選擇:S[i][j]...[n]S[i][j]...[n]S[i,j,...,n]S[i, j, ..., n]
  • 若要提取列表的內容或將 LL 設置爲序列, 請使用 op(L)op(L) 函數或空選擇運算符 L[]L[]

修改元素

注意:對列表或集合的以下修改會導致創建新列表或集合, 而不是就地修改原始列表或集合。爲了節省空間和時間, 當數據的數量或對其的修改數量很大時, 使用Array可能會更好。有關可變和不可變數據結構的更多信息, 請參閱《 Maple編程指南》的“基本數據結構”一章。

  • 通過 [op(L),x][op(L), x] 將元素 xx 追加到列表 LL。使用並運算符 S  union{x}()S \; union \{x\}() 將元素x插入到集合S中。
  • 可以用 subsop(i=x,L)subsop(i = x, L) 來將列表 LL 的第 ii 個元素替換爲 xx
  • 爲了方便起見, 操作 L[i]=xL [i]:= x也起作用, 但僅適用於簡短列表。除非知道列表很小, 否則不建議使用此操作。
  • 刪除列表 LL 的第 ii 個元素是 subsop(i=NULL,L)subsop(i = NULL, L)。使用減號運算符 S  minus{x}()S \; minus \{x\}()從集合 SS 中刪除元素 xx

設置和列出操作

  • 要測試元素x是在列表中還是集合L中, 請使用 $member(x, L)或L()中的x。
  • 若要測試集合S是否是集合T的子​​集, 請使用子集運算符S子集T()。
  • 要找到兩個集合S和T的交集, 請使用S與T()相交。
  • 要找到兩個集合S和T的並集, 請使用S union T()。
  • 要找到兩組S和T的差, 請使用S減去T()。
  • 有關這些設置操作的更多信息, 請參見設置運算符。
  • 可以在軟件包ListTools中找到更多列表操作。

設置順序

集合具有確定性的順序, 對於大多數對象, 該順序不基於運行時屬性。這意味着當輸入{b, c, a}時, 無論您何時創建該集合, 定單都將固定爲{a, b, c}。該規則的一個明顯例外是, 當一個集合包含多個相同類型的可變對象時。例如, 集合內的兩個向量可以在不同的會話中以任一順序出現。

通常, 對象排序首先由可快速識別的特徵(例如其類別或大小)確定。默認比較順序按以下順序檢查屬性:

  1. 對象ID:這導致將相同類型的數據結構分組在一起。例如, 整數將在精確的有理數, 浮點數和複數之前出現。
  2. 對象長度:這會將相同大小的對象組合在一起。 “長度”是基礎數據結構的屬性。結果, {-2 ^ 200, -2 ^ 100}的數字順序不是遞增的, {bb, aaaaaaaa}的字母順序也不是;在這兩種情況下, 較短的數據結構首先出現。
  3. 字典順序或數字順序:此數字按遞增的數字順序排列, 字符串按字典順序排列。
  4. 對組件遞歸:這將根據其子組件的上述屬性對複合對象進行排序。例如{f(z), g(a)}將傳遞上述屬性, 因爲f(z)和g(a)都是相同長度的函數對象。因此, 下一級別的排序將比較每個函數的名稱f和g, 它們將屬於規則3。請注意, 如果唯一表示形式, 則{x + 1,1 + y}之類的表達式的排序可能仍取決於會話x + 1的x的順序爲1 + x, 或者第二個表達式是y + 1而不是1 + y。
  5. 地址:在某些情況下, 對象在各個方面都是相同的, 例如本地名稱x和全局名稱x。發生這種情況時, 將使用給定對象的機器地址。

參考資料

[1] https://www.maplesoft.com/support/help/maple/view.aspx?path=set

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章