30
第第第第第 (Array) 第第第 (Matrix) 第第 第第第第 2-1 第第第第 (Ordered List) 2-2 第第第第 (array) 2-3 第第 (matrix) 第第第 2-4 第第第第第第第第

第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

  • View
    259

  • Download
    8

Embed Size (px)

Citation preview

Page 1: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

本章重點

2-1 有序串列(Ordered List)

2-2 介紹陣列(array)

2-3 矩陣(matrix)的應用

2-4 陣列與多項式應用

Page 2: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

2-1 有序串列 (Ordered List)

就是一個有序串列,而且序列中元素的資料型態是數字。而有序串列的定義,可以形容如下:

有序串列可以是空集合,或者可寫成 (a1,a2,a3... ,an-1,an) 。

存在唯一的第一個元素 a1與存在唯一的最後一個元素an。

除了第一個元素 a1外,每一個元素都有唯一的先行者(precessor) ,例如 ai的先行者為 ai-1。

除了最後一個元素 an外,每一個元素都有唯一的後續者 (successor) ,例如 ai+1是 ai的後續者。

Page 3: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

8 種常見的運算

計算串列的長度 n 。 取出串列中的第 i 項元素來加以修正。 插入一個新元素到第 i 項,並使得原來的第 i , i+1... ,

n 項,後移變成 i+1 , i+2... , n+1 項。 刪除第 i 項的元素,並使得第 i+1 , i+2 ,… n 項,前

移變成第 i , i+1... , n-1 項。 從右到左或從左到右讀取串列中各個元素的值。 在第 i 項存入新值,並取代舊值。 複製串列。 合併串列。

Page 4: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

有序串列在電腦中的儲存方式

按照記憶體儲存的方式,可區分為以下兩種方式: 靜態資料結構:

或稱為密集串列 (dense list) ,它是一種將有序串列的資料使用連續記憶空間 (contiguous allocation) 來儲存。例如陣列型態就是一種典型的靜態資料結構。

動態資料結構: 又稱為鍵結串列 (linked list) ,它是一種將有序串列的資料使

用不連續記憶空間來儲存。例如指標 (pointer) 型態就是一種典型的動態資料結構。

Page 5: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

2-2 介紹陣列 (array)

五種屬性: 起始位址:表示陣列名稱 ( 或陣列第一個元素 ) 所在

記憶體中的起始位址。 維度 (dimension) :代表此陣列為幾維陣列,如一

維陣列、二維陣列、三維陣列等等。 索引上下限:指元素在此陣列中,記憶體所儲存位

置的上標與下標。 陣列元素個數:是索引上限與索引下限的差 +1 。 陣列型態:宣告此陣列的型態,它決定陣列元素在

記憶體所佔有的大小。

Page 6: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

一維陣列 (one-dimension array)

陣列 A 宣告為 A(1:u1) ,表示 A 為含 n 個元素的一維陣列,其中 1 為下標, u1為上標。

A(1) 、 A(2) 、 A(3) 、 ..................A(u1)

α 、 α+ 1*d 、 α+2*d 、 .................α+( u1-1)*d

Loc(A(i))= α+(i-1)*d (Loc(A(i)) 表示 A(i) 所在的位址 )

Page 7: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

二維陣列 (two-dimension array) 假設陣列 A 宣告為 (1:m,1:n) ,表示 A 為一個含有 m*

n 個元素的二維陣列名稱,且有 m 個列與 n 個行。我們可以把 A(i,j) 元素想像成平面上矩陣圖

Page 8: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

陣列元素與記憶體位址關係

通常依照不同的語言,又可區分為兩種方式:

以列為主 (row-major)

Loc(A(i,j))= α+n*(i-1)*d+(j-1)*d

以行為主 (column-major)

Loc(A(i,j))= α+(i-1)*d+m*(j-1)*d

Page 9: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

三維陣列 (three-dimension array)

如果陣列 A 宣告為 A(1:u1,1:u2,1:u3) ,表示 A 為一個含有 u1*u2*u3 元素的三維陣列。我們可以把 A(i,j,k) 元素想像成空間上的立方體圖

Page 10: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

三維陣列 - 以列為主 以列為主 (row-major)Loc(A(i,j,k))=α+(i-1)*u2*u3*d+(j-1)*u3*d+(k-1)*d

Page 11: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

三維陣列 - 以行為主

以行為主 (column-major)

Loc(A(i,j,k))=α+(i-1)*u2*u3*d+(j-1)*u3*d+(k-1)*d

Page 12: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

n 維陣列 以列為主 (row-major)

Loc(A(i1,i2,i3………,in))= α+(i1-1)u2u3u4……und+(i2-1)u3u4……und

+(i3-1)u4u5……und+(i4-1)u5u6……und+(i5-1)u6u7……und:+(in-1-1)und

+(in-1)d

Page 13: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

n 維陣列

以行為主 (column-major)

Loc(A(i1,i2,i3………,in))= α+(in-1)un-1un-2……u1d+(in-1-1)un-2……u1d

: :+(i2-1-1)u1d

+(i1-1)d

Page 14: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

2-3 矩陣 (matrix) 的應用

基本上,數學的矩陣 (matrix) 是一種用來描述二維陣列的最好方式。

許多矩陣的運算與應用,都可以使用電腦中的二維陣列解決,例如討論到兩個矩陣的相加、相乘,或是某些稀疏矩陣(sparse matrix) 、轉置矩陣 (At) 、上三角形矩陣 (Upper Triangular Matrix) 與下三角形矩陣 (Lower Triangular Matrix) 等等。

Page 15: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

1 3 5

7 9 11

13 15 17A 矩陣

10 11 12

13 14 15

16 17 18

C 矩陣

9 8 7

6 5 4

13 2 1

B 矩陣

++

3x3

3x3

3x3

矩陣的相加

Page 16: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

轉置矩陣

假設 A 為 mxn 矩陣,則 At為 nxm 矩陣,對每一個 A(i,j)=At(j,k) 則稱 At為 A 的轉置矩陣。

Page 17: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

矩陣的乘積

A 為一個 mxn 矩陣, B 為一個 nxp 矩陣;也

就是 A 矩陣的行數必須與 B 矩陣的列數相等。

AxB 之後的乘積必須為一個 mxp 矩陣 C 。

Page 18: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

矩陣的乘積計算公式

Page 19: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

稀疏矩陣 (Sparse Matrix)

稀疏矩陣最簡單的定義就是一個矩陣中大部份

的元素為 0,即可稱為「稀疏矩陣」。

Page 20: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

稀疏矩陣的儲存

傳統的方式會浪費記憶體空間。 改進方法:假如一個稀疏矩陣有 n 個非零項目,那麼可以利用一個 A(0:t,1:3) 的二維陣列來表示。其中 A(0,1) 代表此稀疏矩陣的列數, A(0,2) 代表此稀疏矩陣的行數,而 A(0,3) 則是此稀疏矩陣非零項目的總數。

Page 21: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

三項式稀疏矩陣表示方式

Page 22: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

上三角形矩陣 (Upper Triangular Matrix)

上三角形矩陣就是一種對角線以下元素皆為 0

的 nxn 矩陣。其中又可分為右上三角形矩陣 (R

ight Upper Triangular Matrix) 與左上三角

形矩陣 (Left Upper Triangular Matrix) 。

Page 23: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

右上三角形矩陣

Page 24: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

以列為主

Page 25: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

以行為主

Page 26: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

左上三角形矩陣

Page 27: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

下三角形矩陣 (Lower Triangular Matrix)

與上角形矩陣相反,就是一種對角線以上元素皆為 0的 nxn 矩陣。

對映到一維陣列 B(1:n(n+1)) 的方式,也可區分為以列為主及以行為主兩種陣列記憶體配置方式。

Page 28: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

左下三角形矩陣

Page 29: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

右下三角形矩陣

Page 30: 第二章陣列 (Array) 與矩陣 (Matrix) 結束 本章重點 2-1 有序串列 (Ordered List) 有序串列 (Ordered List) 2-2 介紹陣列 (array) 介紹陣列 (array) 2-3 矩陣

第二章陣列 (Array) 與矩陣 (Matrix)

結束

2-4 陣列與多項式的應用

多項式使用陣列結構,可以使用底下兩種模式: 使用一個 n+2 長度的一維陣列存放,陣列的第一個位

置儲存最大指數 n ,其他位置依照指數 n遞減,依序儲存相對應的係數:

P=(n,an,an-1,……,a1,a0) 儲存在 A(1:n+2)

例如 P(x)=2x5+3x4+5x2+4x+1 ,可轉換為成 A 陣列來表示 =>A={5,2,3,0,5,4,1}

只儲存多項式中非零項目。P(x)=2x5+3x4+5x2+4x+1 ,可表示成 A(1:2m+1) 陣列

=>A={5,2,5,3,4,5,2,4,1,1,0}