Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple

Tên (name) và xâu kí tự

Tên là một xâu hình tự (string of letters) được dùng như một chỉ mục hay một

nhãn để đại diện cho các đối tượng trong Maple có thể thay đổi được (như biến, kí

hiệu toán học, các biểu thức nói chung,.) mà ta có thể gán cho nó. Tên là một

trong các thành phần không thể thiếu được của Maple trong việc tạo ra các biểu

thức. Chiều dài tối đa của tên phụ thuộc vào hệ máy tính mà Maple chạy trên đó

(với máy 32-bit thì chiều dài tối đa của tên là 524275).

Bất cứ biểu thức nào đều có thể được gán cho một cái tên. Nếu không có giá trị

nào được gán cho một tên thì nó sẽ nhận chính tên nó làm giá trị mặc định.

Chương trình Maple sử dụng tên bắt đầu với một dấu gạch dưới ( _ ) làm các

biến toàn cục, và vì thế chúng ta nên tránh sử dụng chúng.

Một xâu ký tự bất kỳ (string of characters) có thể không phải là xâu hình tự (vì

có thể chứa các ký tự đặc biệt như: khoảng trống, dấu chấm than,.) và do đó không87

thể là một tên hợp lệ. Tuy nhiên, Maple cho phép tạo một tên từ một xâu ký tự bất

kỳ bằng cách cho nó vào trong cặp dấu nháy đơn ( ` ) (backquote), thí dụ như xâu

kí tự `a variable!` là một tên biến hợp lệ, và người ta có thể gán cho nó giá trị 10

bằng lệnh `a variable!`:=10.

Một xâu hình tự thường là một tên hợp lệ và được xem là trùng với tên được tạo

bằng cách bao chung quanh xâu này bằng cặp dấu nháy (vì thế mà x và `x` đều chỉ

đến một tên). Tuy nhiên, nếu xâu hình tự mà trùng với từ khóa của Maple thì

không phải là một tên hợp lệ, và muốn cho nó trở thành một tên ta lại phải cho nó

vào trong cặp dấu nháy.

Hai dấu nháy liên tiếp trong một xâu kí tự sẽ được hiểu như là một dấu. Ví dụ

như khi ta viết: print(` I``m a student`); thì kết quả sẽ cho ta xâu: I`m a student.

 

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 1

Trang 1

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 2

Trang 2

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 3

Trang 3

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 4

Trang 4

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 5

Trang 5

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 6

Trang 6

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 7

Trang 7

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 8

Trang 8

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 9

Trang 9

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 43 trang duykhanh 3520
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple

Giáo trình Maple - Chương 3: Các khái niệm và các hàm cơ bản trong lập trình trên Maple
ác số nguyên cho một biểu thức, ta thu đ−ợc một dãy (hay 
nói cách khác, trong tr−ờng hợp này có thể xem dãy nh− là tập giá trị của một 
hàm trên một dải số nguyên nào đó). Xem ví dụ d−ới đây để biết thêm chi 
tiết. 
Minh họa 
Lệnh seq() thực hiện khá giống lệnh sum() trong việc áp dụng mỗi giá trị của chỉ 
mục trong phạm vi cho tr−ớc vào hàm để thu đ−ợc các phần tử của dãy: 
[>seq(2*i,i=1..10); 
, , , , , , , , ,2 4 6 8 10 12 14 16 18 20 
[>tong:=sum(i^2,i=1..n); 
 := tong − + + 13 ( ) + n 1
3 1
2 ( ) + n 1
2 1
6 n
1
6 
[>seq(op(j,tong),j=1..4); 
, , ,13 ( ) + n 1
3 − 12 ( ) + n 1
2 1
6 n
1
6 
seq() tạo ra một dãy bằng cách tác dụng hàm f lên mỗi thành phần của danh sách 
cho tr−ớc x: 
[>x:=[seq(Pi/i,i=1..9)]; 
 := x 

, , , , , , , ,π
1
2 π
1
3 π
1
4 π
1
5 π
1
6 π
1
7 π
1
8 π
1
9 π 
[>y:=seq(sin(i)+a,i=x); 
: , 1= + y a a , 1 . 3 , . 2
2
+ +1 
2
a a , 2. 5 5− +1
4
a , 
, sin
7
π + +  
1
2
a a , 2 2− +1
2
a , sin
9
π  +   a 
119 
3.4.2. Cấu trúc tập hợp và danh sách 
Tập hợp 
• Cấu trúc dữ liệu tập hợp (set) trong Maple đ−ợc dùng để gom các đối t−ợng 
phân biệt vào trong cùng một nhóm gọi là tập hợp. Tập hợp đ−ợc tạo thành 
bằng cách bao quanh một dãy trong cặp dấu ngoặc móc ('{ }'). Giống nh− hầu 
hết các đối t−ợng khác trong Maple, ta có thể gán Tập hợp cho các biến, và có 
thể sử dụng tập hợp nh− là đối số hoặc là kết quả của một số hàm. Tập hợp 
khác danh sách ở chỗ, các phần tử trong một tập hợp phải phân biệt nhau. 
• Các phép toán đ−ợc sử dụng cho kiểu tập hợp: union (hợp của hai tập hợp), 
intersect (giao của hai tập hợp), minus (hiệu của hai tập hợp). Tập hợp 
rỗng đ−ợc kí hiệu là {}. 
• Trật tự của các phần tử trong tập hợp đ−ợc quyết định bởi hệ thống. Giống nh− 
các số hạng trong một tổng, trật tự của một tập hợp thì không thay đổi trong 
mỗi lần tính toán, nh−ng lại thay đổi giữa các phiên (session) tính toán, và 
giữa các máy khác nhau. Vì vậy, một tập hợp có thể đ−ợc in là 
{x,y,z}trong lần tính toán này, trong khi ở lần khác nó có thể xuất hiện 
d−ới dạng {z,y,x}. Nếu bạn muốn có một trật tự rõ ràng cho các phần tử, 
hãy dùng một danh sách để l−u dữ liệu. 
Danh sách 
• Danh sách (list) là một cấu trúc dữ liệu trong Maple dùng để gom các đối 
t−ợng (có thể giống nhau hoặc khác nhau) thành một danh sách. 
• Giống nh− cấu trúc dãy, danh sách l−u giữ dữ liệu theo trật tự nh− khi đ−ợc tạo 
ra. Hai giá trị giống nhau có thể đ−ợc l−u trữ trong cùng một danh sách, trong 
khi đó chúng sẽ bị loại bỏ bớt đi một nếu chúng đ−ợc l−u trữ trong cùng một 
tập hợp. Các toán tử dùng trong cấu trúc tập hợp: union, intersect, minus 
không đ−ợc định nghĩa cho danh sách. 
• Một danh sách có thể đ−ợc tạo ra bằng cách bao quanh một dãy bằng cặp dấu 
ngoặc vuông ([ ]), và khi ấy nó không còn là một dãy. Ng−ời ta th−ờng sử 
dụng danh sách để nhóm các đối t−ợng với nhau khi mỗi nhóm đ−ợc xem nh− 
là một đối số đơn của một hàm nào đó. 
• Để minh hoạ cho sự khác nhau giữa dãy và danh sách trong Maple, ta xét lệnh 
x:=[a,b],[b,c], khi đó a sẽ đ−ợc gán là dãy của hai danh sách 
x:=[a,b],[b,c] , trong khi đó x:=(a,b),(b,c) thì kết quả gán cho x sẽ tự 
động nối lại thành dãy đơn x:=a,b,b,c. 
• Hàm op() đ−ợc dùng để rút ra một thành phần trong một biểu thức, và do đó 
ta có thể sử dụng nó để lấy ra một thành phần trong một danh sách: phần tử 
thứ i do hàm op() cho chính là đối t−ợng thứ i trong danh sách hay tập hợp, 
theo trật tự phụ thuộc việc bạn thấy tập hợp và danh sách đ−ợc in ra nh− thế 
nào. Chẳng hạn khi bạn gán x:=[a,b,d,c] thì lệnh này in ra màn hình là 
x:=[a,b,d,c], khi đó lệnh y:=op(3,x) sẽ cho lại kết quả y:=d. 
120 
• Việc ghép 2 dãy nhỏ thành một dãy to là khá đơn giản (xem phần trên). Nh−ng 
để gộp (involving) hai hay nhiều danh sách (hoặc là tập hợp) với nhau để tạo 
ra một danh sách (hay tập hợp) mới thì không đơn giản nh− vậy. Muốn làm 
điều này ta tiến hành qua 3 b−ớc: tr−ớc hết ta biến đổi chúng thành các dãy 
(bằng lệnh seq()), rồi dùng lệnh ghép các dãy nhỏ thành dãy to, sau đó biến 
đổi dãy thành một danh sách (hoặc tập hợp) bằng cách đ−a chúng vào trong 
cặp dấu ngoặc thích hợp. Để hiểu rõ thêm, xin xem trong phần ví dụ. 
• Toán tử [] dùng để tham chiếu đến một phần tử của một danh sách, tập hợp. Ví 
dụ, ta có ds=[a,b,d,c] là một danh sách, lời gọi y:=ds[2] sẽ cho ta kết quả là 
y=b. Ta cũng có thể dùng toán tử trên để thay đổi giá trị của một phần tử 
trong danh sách nh−ng không thể dùng lệnh này để thay đổi bất cứ phần tử 
nào trong tập hợp. Chẳng hạn đối với danh sách ds=[a,b,d,c] trên, lệnh 
ds[2]:=e sẽ thay giá trị b của phần tử thứ 2 trong danh sách ds thành e, vì 
vậy danh sách trở thành x=[a,e,d,c], trong khi đó đối với tập hợp y:={a,b,d,c} 
thì lệnh y[2]:=e sẽ báo lỗi. 
• Hàm subsop() đ−ợc dùng để tạo ra một danh sách hay tập hợp mới bằng 
cách thay thế một hay nhiều phần tử của một danh sách hay một tập hợp đã 
cho nào đó. Xem cụ thể hơn ở phần sau. 
Lệnh tạo danh sách và tập hợp 
• Ta đã biết cách tạo một dãy bằng lệnh seq() hoặc bằng cách liệt kê các phần 
tử. Một cách thông th−ờng để tạo ra một danh sách (hay là một tập hợp) là 
tạo từ một dãy bằng cách đ−a nó vào trong một cặp dấu ngoặc t−ơng ứng. 
• Một cách khác để tạo một danh sách (tập hợp) là tìm cách biến đổi một hay 
một số phần tử của một danh sách (tập hợp) đã có sẵn. Lệnh supsop đ−ợc 
mô tả sau đây cho phép thay thế một số thành phần của danh sách đã cho 
bằng một số thành phần khác: subsop(index = replacement, 
expression). Trong lệnh này, tham biến expression có thể nhận giá trị 
là một biểu thức, thành phần tại vị trí index trong biểu thức expression 
đ−ợc thay bởi giá trị mới là replacement. Nh− vậy, hàm supsop() tạo ra 
một biểu thức hoàn toàn mới giống biểu thức mẫu, trừ phần tử bị thay thế. 
Lệnh supsop(i=NULL,ds) dùng để xoá thành phần thứ i trong ds. 
• Hàm subsop(index1=repl1,...indexn=repln,expr) cho phép tạo 
ra biểu thức mới bằng cách thay thế n giá trị tại n vị trí trong biểu thức 
expr. 
Minh họa 
[>restart; 
Khai báo tập hợp: 
[>taphop1:={a,b,c}; 
:= taphop1 { }, ,a b c 
[>taphop2:={a,d,e}; 
121 
:= taphop2 { }, ,e a d 
[>taphop3:={e,f}; 
:= taphop3 { },e f 
Thực hiện các phép toán trên tập hợp: 
[>taphop4:=taphop1 union taphop2; 
:= taphop4 { }, , , ,e a b c d 
[>taphop5:=taphop2 intersect taphop3; 
:= taphop5 { }e 
[>taphop6:=taphop1 minus taphop2; 
:= taphop6 { },b c 
[>taphop6[2]; 
c 
Khai báo các danh sách: 
[>list01:=[x,y,z]; 
:= list01 [ ], ,x y z 
[>list02:=[z,t,u,v]; 
:= list02 [ ], , ,z t u v 
Thực hiện các phép toán trên danh sách: 
[>list03:=[list01,list02]; 
:= list03 [ ],[ ], ,x y z [ ], , ,z t u v 
[>list04:=[op(list01),op(list02)]; 
:= list04 [ ], , , , , ,x y z z t u v 
Dùng hàm op() để tham chiếu đến phần tử thứ i của danh sách: 
[>op(3,list04); 
z 
listname[i] là cách khác để tham chiếu đến phần tử thứ i: 
122 
[>list04[3]; 
z 
Tạo danh sách mới với một thành phần đ−ợc thay đổi: 
[>list05:=subsop(5=a,list04); 
:= list05 [ ], , , , , ,x y z z a u v 
Phép gán không thay đổi phần tử của tập hợp, hơn thế, chúng có thể làm mất dữ 
liệu l−u trong tập hợp: 
[>taphop4[4]:=a; 
Error, cannot assign to a set 
3.4.3. Cấu trúc dữ liệu bảng 
Lệnh tạo bảng 
Khai báo: 
table(F,L); 
F: (tuỳ chọn) Hàm chỉ mục. 
L: (tuỳ chọn) Danh sách hay tập hợp các giá trị khởi tạo 
cho bảng. 
• Hàm table() đ−ợc sử dụng để tạo một bảng trong Maple. Nếu đối số chúng 
ta truyền cho hàm table() là một danh sách các đẳng thức thể hiện mối 
quan hệ giữa các chỉ mục và các giá trị của bảng, thì danh sách đó đ−ợc dùng 
để định rõ phần khởi tạo cho các phần tử của bảng. Nếu hàm table không 
nhận đ−ợc đối số nào, thì bảng sẽ đ−ợc khởi tạo rỗng. 
• Bất cứ tên biến ch−ơng trình nào trong Maple cũng có thể nhận giá trị là một 
bảng. Sau khi gán, tên biến đó trở thành tên của bảng. Nội dung của toàn bộ 
bảng thì đ−ợc in ra màn hình bằng cách dùng lệnh print. 
Mô tả 
• Bảng là cấu trúc dữ liệu đ−ợc Maple dùng để l−u trữ dữ liệu theo từng cặp các 
chỉ mục và giá trị. Một bảng là một quan hệ t−ơng ứng một-nhiều giữa hai tập 
dữ liệu rời rạc. Nói cách khác, ta có thể xem nó nh− một ánh xạ đa trị từ tập 
dữ liệu này vào tập dữ liệu kia. Hai tập dữ liệu này đ−ợc gọi t−ơng ứng là 
miền xác định (domain) và miền giá trị (range) của bảng, mỗi một giá trị 
trong miền xác định t−ơng ứng với một hay một số giá trị trong miền giá trị. 
Các phần tử trong miền xác định của bảng đ−ợc gọi là các khoá (key) (hay còn 
gọi là các chỉ mục (index) vì miền xác định đ−ợc xem nh− là một dãy). Hàm 
indices(bang) cho lại kết quả là dãy các khoá này của bảng bang. Còn 
các phần tử trong miền giá trị của bảng đ−ợc gọi là các giá trị (value) của 
bảng hay là các phần tử (entries) của bảng. Hàm entries(bang) trong 
Maple cho lại kết quả là dãy các giá trị của bảng bang. 
123 
• Trật tự của các chỉ mục và các phần tử của một bảng do hàm indices và hàm 
entries cho biết không nhất thiết phải trùng với trật tự khi chúng đ−ợc nhập 
vào bảng. Nguyên nhân là do Maple đã sử dụng một bảng băm (là một kiểu 
cấu trúc dữ liệu đ−ợc dùng nhiều trong tin học) để l−u trữ các chỉ mục và các 
phần tử của bảng. Tuy vậy, giữa dãy các chỉ mục do hàm indices và dãy 
các giá trị do hàm entries cho lại vẫn có sự t−ơng ứng một-một. Với việc sử 
dụng kĩ thuật bảng băm, bảng sẽ trở thành một cấu trúc dữ liệu rất lợi hại cho 
việc tìm kiếm và tra cứu. Việc tìm phần tử bảng t−ơng ứng cho một khoá nào 
đó trong bảng là rất nhanh. Thời gian tìm kiếm gần nh− một hằng số, không 
phụ thuộc vào cỡ lớn của bảng. Nh− vậy, bảng là công cụ rất thích hợp cho 
việc thiết lập các sổ tra cứu, thí dụ: thiết lập từ điển giải nghĩa các lệnh trong 
Maple, và từ điển ng−ợc: tìm các lệnh của Maple thực hiện một chức năng 
nào đó (trong toán học). 
• Dùng hàm assigned() để kiểm tra một phần tử đã đ−ợc gán cho bảng hay 
ch−a. Một phần tử có thể đ−ợc xóa bằng cách gán cho nó chính tên của nó. 
Minh họa 
Ví dụ sau là một bảng t−ơng ứng giữa một từ chỉ một màu trong tiếng Việt với hai 
từ chỉ đến màu t−ơng ứng trong tiếng Anh và tiếng Pháp. 
[>MAUSAC[maudo]:=red,rouge; 
:= MAUSACmaudo ,red rouge 
[>MAUSAC[mauxanh]:=blue,bleu; 
:= MAUSACmauxanh ,blue bleu 
[>MAUSAC[mauvang]:=yellow,jaune; 
:= MAUSACmauvang ,yellow jaune 
Miền xác định (domain) của bảng là tên màu sắc trong tiếng Việt, còn các phần tử 
t−ơng ứng trong miền giá trị (range) là các màu sắc t−ơng ứng trong tiếng Anh và 
tiếng Pháp. Các chỉ mục trong bảng MAUSAC trên là: maudo, mauxanh, mauvang, 
còn các giá trị của bảng t−ơng ứng với các chỉ mục trên là các cặp red,rouge, 
blue,bleu và yellow,jaune. Ta có thể sử dụng các hàm indices và hàm 
entries để liệt kê dãy các chỉ mục và các giá trị của bảng: 
[>indices(MAUSAC); 
, ,[ ]mauxanh [ ]mauvang [ ]maudo 
[>entries(MAUSAC); 
, ,[ ],blue bleu [ ],yellow jaune [ ],red rouge 
Ta có thể đọc dữ liệu trong bảng bằng cách gọi tên bảng với chỉ mục t−ơng ứng: 
[>MAUSAC[maudo]; 
124 
,red rouge 
Xoá một phần tử của bảng bằng cách gán cho chính tên của nó: 
[>MAUSAC[mauxanh]:='MAUSAC[mauxanh]'; 
:= MAUSACmauxanh MAUSACmauxanh 
Ta có thể kiểm tra lại xem phần tử có chỉ mục mauxanh đã đ−ợc xoá hay ch−a: 
[>assigned(MAUSAC[mauxanh]); 
false 
[>assigned(MAUSAC[mauvang]); 
true 
In ra giá trị của bảng: 
[>print(MAUSAC); 
table([ , ]) = mauvang ( ),yellow jaune = maudo ( ),red rouge 
3.4.4. Cấu trúc dữ liệu mảng 
Mô tả 
• Mảng là một kiểu của cấu trúc dữ liệu bảng, trong đó các chỉ số của một mảng 
bất kì đều là các số nguyên và phạm vi của các chỉ số mảng phải đ−ợc định rõ 
khi khai báo mảng thông qua hàm array(). 
• Để tạo ra một mảng, ta phải định rõ phạm vi chỉ số cho mỗi chiều của mảng. 
Thêm vào đó, bạn có thể định tr−ớc mảng là th−a, đối xứng, phản đối xứng 
hay theo một số kiểu định nghĩa riêng của bạn. 
• Việc thay đổi và sao chép mảng làm việc giống nh− trong bảng. Nói chung 
việc sử dụng mảng với bảng là giống nhau, trừ việc giới hạn chỉ mục là số 
nguyên trong mảng và bất cứ sự tham chiếu đến một thành phần của mảng 
đều đ−ợc kiểm tra xem nó có nằm trong phạm vi chỉ số của mảng hay không. 
Minh họa 
Định nghĩa A là một mảng hai dòng hai cột: 
[>A:=array(1..2,1..2); 
:= A ( )array , ,.. 1 2 .. 1 2 [ ] 
Các phần tử của A có thể đ−ợc gán giá trị: 
[>A[1,1]:=1;A[2,1]:=4; 
125 
:= A ,1 1 1 
:= A ,2 1 4 
Giống nh− trong bảng, Maple định giá trị của biến theo tên cuối (last name 
evaluation) thay cho định giá trị hoàn toàn cho biến ( full evaluation). Dùng lệnh 
print để xem nội dung mảng: 
[>A; 
A 
[>print(A); 






1 A ,1 2
4 A ,2 2 
Các chỉ số t−ợng tr−ng tạo nên những tham chiếu đến mảng t−ợng tr−ng. Khi các 
chỉ số đó đ−ợc gán giá trị , thì sự định giá hoàn toàn sẽ sinh ra một tham chiếu đến 
mảng thực sự: 
[>i:='i'; 
:= i i 
[>B:=A[i,1]; 
:= B A ,i 1 
[>i:=2; 
:= i 2 
[>B; 
4 
Một mảng một chiều đ−ợc định nghĩa, với phạm vi chỉ số từ -1 đến 3. Theo nh− 
cách thức đã làm trong cấu trúc bảng, chúng ta cũng sẽ định nghĩa giá trị b[-1] là t 
khi ta định nghĩa mảng: 
[>B:=array(-1..3,[-1=t]); 
B ..-1 3array( , [ :=
 = ( )-1 t
 = ( )0 B0
 = ( )1 B1
 = ( )2 B2 
126 
 = ( )3 B3
]) 
[>B[-1]; 
t 
3.4.5. Sparse, symmetric, những giản đồ chỉ định đặc biệt 
cho mảng và bảng 
Mô tả 
• Các hàm chỉ mục cho phép bạn định rõ rằng các phần tử của mảng và 
bảng sẽ nhận các giá trị mặc định nào đó. Để dùng một trong những 
hàm chỉ định đã có sẵn đ−ợc cho d−ới đây, ta phải truyền tên các hàm 
này cho đối số đầu trong lệnh định nghĩa bảng hoặc mảng: 
9 sparse: Gán giá trị mặc định bằng 0 cho những phần tử của 
mảng hay của bảng 
9 symmetric: Tất cả các phần tử mà chỉ số của chúng bằng nhau 
do sự hoán vị thì bằng nhau. (chẳng hạn dùng trong ma trận đối 
xứng) 
9 antisymmetric: Tính phản đối xứng. 
9 identity: Tất cả các phần tử trên đ−ờng chéo nhận giá trị 1, 
các phần tử khác thì bằng 0. 
• Có thể định nghĩa hàm chỉ định của riêng bạn, ví dụ nh− sắp xếp các 
phần tử của mảng hay bảng hay có thể khởi tạo mọi phần tử từ rỗng,... 
Lệnh 
array(indexing_function,...); Tạo một mảng với một hàm chỉ mục. 
table(indexing_function,...); Tạo một bảng với một hàm chỉ mục. 
Minh họa 
Ta dùng hàm chỉ định sparse trong một bảng để đếm số các đối t−ợng trùng nhau 
trong một danh sách. Ta định nghĩa một bảng các phần tử và tần suất của chúng. 
[>restart; 
[>List:=[a,x,y,y,t,x,b,c,w,b,x,y,y,z,y]; 
 := List [ ], , , , , , , , , , , , , ,a x y y t x b c w b x y y z y 
127 
[>Frequency:=table(sparse); 
:= Frequency table( , [])sparse 
[>for i in List do 
Frequency[i]:=Frequency[i]+1; 
od: 
[>indices(Frequency); 
, , , , , , ,[ ]t [ ]b [ ]c [ ]w [ ]z [ ]a [ ]x [ ]y 
[>entries(Frequency); 
, , , , , , ,[ ]1 [ ]2 [ ]1 [ ]1 [ ]1 [ ]1 [ ]3 [ ]5 

File đính kèm:

  • pdfgiao_trinh_maple_chuong_3_cac_khai_niem_va_cac_ham_co_ban_tr.pdf