Bài giảng 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

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  
3.1. C¸c kh¸i niÖm c¬ b¶n........................................................................... 85  
3.1.1. Tªn (name) vµ x©u kÝ tù...................................................................... 86  
3.1.2. BiÕn trong Maple................................................................................. 87  
3.1.3. Sù ®Þnh gi¸ ........................................................................................... 87  
3.1.4. Ng¨n c¶n ®Þnh gi¸ .............................................................................. 90  
3.1.5. Sù tù ®éng ®¬n gi¶n biÓu thøc........................................................... 91  
3.1.6. C¸c tÝnh to¸n sè trong Maple ............................................................ 92  
3.2. C¸c hµm thêng dïng trong Maple ................................................. 92  
3.2.1. ¦íc lîng gi¸ trÞ .................................................................................. 92  
3.2.2. §¬n gi¶n biÓu thøc: lÖnh simplify .................................................. 94  
3.2.3. T×m gi¸ trÞ lín nhÊt vµ bÐ nhÊt............................................................ 96  
3.2.4. Thay thÕ trong biÓu thøc: lÖnh subs................................................... 97  
3.2.5. Tæ chøc biÓu thøc theo mét sè biÕn chÝnh ....................................... 99  
3.2.6. S¾p xÕp c¸c sè h¹ng........................................................................ 100  
3.2.7. ChuyÓn ®æi d¹ng cÊu tróc d÷ liÖu (lÖnh convert) ......................... 102  
3.2.8. Thùc hiÖn mét phÐp to¸n trªn nhiÒu thµnh phÇn........................... 104  
3.2.9. Xem cÊu tróc vµ thµnh phÇn cña mét biÓu thøc .......................... 105  
3.2.10. KiÓm tra mét phÇn tö cã thuéc mét d÷ liÖu cã cÊu tróc nµo ®ã 108  
85  
3.2.11. KiÓm tra mét tªn ®· ®îc g¸n hay cha ..................................... 109  
3.3. C¸ch t¹o lËp hµm trong Maple.........................................................111  
3.3.1.ThiÕt lËp c¸c hµm kÐp (hµm hîp, hµm lång nhau) ....................... 111  
3.3.2. §Þnh nghÜa hµm b»ng to¸n tö mòi tªn (->)..................................... 112  
3.3.3. §Þnh nghÜa hµm b»ng to¸n tö hîp thµnh @.................................... 113  
3.3.4. Dïng chu tr×nh proc()...end ®Ó t¹o hµm.................................... 114  
3.4. C¸c cÊu tróc d÷ liÖu c¬ b¶n ..............................................................117  
3.4.1. CÊu tróc d÷ liÖu d·y ......................................................................... 117  
3.4.2. CÊu tróc tËp hîp vµ danh s¸ch....................................................... 119  
TËp hîp...................................................................................................................... 119  
Danh s¸ch.................................................................................................................. 119  
LÖnh t¹o danh s¸ch vµ tËp hîp.................................................................................. 120  
3.4.3. CÊu tróc d÷ liÖu b¶ng....................................................................... 122  
LÖnh t¹o b¶ng............................................................................................................ 122  
3.4.4. CÊu tróc d÷ liÖu m¶ng...................................................................... 124  
3.4.5. Sparse, symmetric, nh÷ng gi¶n ®å chØ ®Þnh ®Æc biÖt cho m¶ng vµ  
b¶ng............................................................................................................. 126  
3.1. C¸c kh¸i niÖm c¬ b¶n  
3.1.1. Tªn (name) vµ x©u kÝ tù  
Tªn lµ mét x©u h×nh tù (string of letters) ®îc dïng nhmé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 (nhbiÕ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«ng  
86  
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ô nhx©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 nhlµ mét dÊu. VÝ dô  
nhkhi ta viÕt: print(` I``m a student`); th× kÕt qu¶ sÏ cho ta x©u: I`m a student.  
3.1.2. BiÕn trong Maple  
BiÕn trong Maple lµ nh÷ng tªn ®îc dïng ®Ó thay thÕ cho mét ®èi tîng nµo  
®ã, th«ng thêng lµ c¸c gi¸ trÞ cÇn thay ®æi, hoÆc c¸c biÓu thøc tÝnh to¸n cÇn cho  
gi¸ trÞ,... Cã hai lo¹i biÕn trong Maple: BiÕn lËp tr×nh biÕn to¸n häc.  
BiÕn lËp tr×nh lµ nh÷ng biÕn cã thÓ g¸n bëi mét gi¸ trÞ nµo ®ã vµ gi¸ trÞ ®ã ®îc  
lu tr÷ cho ®Õn tËn lóc nã thùc sù bÞ thay ®æi.  
Mét biÕn to¸n häc thÓ hiÖn cho Èn sè trong to¸n häc, kh«ng thÓ ®îc g¸n gi¸  
trÞ vµ tÊt nhiªn ta kh«ng thÓ dïng nã nhlµ mét biÕn lËp tr×nh. NÕu b¹n kh«ng  
muèn ph©n biÖt biÕn ®îc g¸n (biÕn lËp tr×nh) vµ biÕn kh«ng ®îc g¸n (biÕn to¸n  
häc) trong Maple th× b¹n cã thÓ nghÜ r»ng biÕn to¸n häc trong Maple lµ biÕn ®îc  
g¸n mµ gi¸ trÞ lu«n b»ng chÝnh tªn biÕn.  
BiÕn còng gièng nhmét n, b¾t ®Çu bëi mét h×nh tù, theo sau lµ c¸c ch÷ c¸i  
kh¸c, c¸c ch÷ sè, vµ dÊu g¹ch díi.  
3.1.3. Sù ®Þnh gi¸  
Mét tªn mµ ®îc g¸n mét gi¸ trÞ (kh¸c tªn nã) th× sÏ trë thµnh biÕn ch¬ng  
tr×nh, cßn nÕu cha tõng ®îc g¸n mét gi¸ trÞ nµo th× nã nhËn chÝnh tªn nã lµm gi¸  
trÞ vµ ®îc xem nhlµ mét kÝ hiÖu biÓu thÞ cho Èn sè trong to¸n häc (ch¼ng h¹n  
trong ph¬ng tr×nh, biÕn trong ®a thøc,...). NhvËy, viÖc ph©n biÖt mét tªn lµ mét  
biÕn ch¬ng tr×nh hay lµ mét biÕn to¸n häc (mang ý nghÜa lµ Èn sè) lµ rÊt quan  
träng ®èi víi Maple trong lóc thùc hiÖn c¸c lÖnh cã chøa tham sè. Ta xem xÐt chi  
tiÕt b»ng c¸ch ph©n tÝch mét vÝ dô cô thÓ.  
XÐt d·y c¸c phÐp g¸n:  
[>restart;  
[>z:=y;  
y:=t;  
t:=x^2+5*x-12;  
87  
x;  
z := y  
y := t  
t := x2 + 5 x 12  
Trªn ®©y c¸c tªn x, y, z ®Òu ®îc g¸n gi¸ trÞ (hoÆc lµ tªn biÕn, hoÆc lµ mét biÓu  
thøc,...) cßn x th× kh«ng ®îc g¸n gi¸ trÞ, do ®ã x lµ mét biÕn to¸n häc vµ tÊt nhiªn  
x kh«ng chøa gi¸ trÞ nµo (hay nãi ®óng h¬n lµ gi¸ trÞ cña x chÝnh lµ kÝ hiÖu x).  
Sau c¸c phÐp g¸n, gi¸ trÞ cña  
z, y,t ®Òu tham chiÕu ®Õn biÓu thøc  
x2 + 5x 12 , chóng ®îc xem nhlµ biÕn cã thÓ lËp tr×nh ®îc, gièng nhkh¸i  
niÖm biÕn trong c¸c ng«n ng÷ lËp tr×nh truyÒn thèng nhC, Pascal,... Cßn x th× chØ  
®îc xem lµ biÕn theo ý nghÜa to¸n häc, tøc lµ mét kÝ hiÖu thÓ hiÖn cho mét Èn sè :  
[>z;  
x2 + 5 x 12  
[>y;  
x2 + 5 x 12  
[>t;  
x2 + 5 x 12  
BiÕn y cã thÓ ®îc g¸n bëi c¸c gi¸ trÞ kh¸c, do ®ã néi dung cña nã hoµn toµn thay  
®æi, vµ tÊt nhiªn gi¸ trÞ cña z còng b»ng gi¸ trÞ cña y:  
[>y:=10;  
y := 10  
[>z;  
10  
Ta cã thÓ hiÓu ®iÒu nµy nhsau: BÊt cø khi nµo Maple thùc hiÖn viÖc tÝnh to¸n, c¸c  
tªn trong biÓu thøc ®Òu ®îc kiÓm tra xem cã ph¶i chóng ®îc dïng nhlµ biÕn  
ch¬ng tr×nh (tøc lµ cã ph¶i chóng ®· ®îc g¸n gi¸ trÞ) hay kh«ng. NÕu ®óng nh−  
vËy, Maple thay thÕ tªn b»ng néi dung cña nã (cã thÓ lµ mét tªn kh¸c, biÕn, h»ng,  
hay biÓu thøc,...) vµo trong biÓu thøc ®ang tÝnh, råi sau ®ã nã tiÕp tôc kiÓm tra xem  
liÖu cã cßn gi¸ trÞ hay biÕn ch¬ng tr×nh nµo cã thÓ ®îc thay thÕ n÷a kh«ng, cßn  
nÕu néi dung cña tªn ®Êy chÝnh lµ tªn cña nã th× Maple xem tªn nµy lµ mét biÕn  
to¸n häc vµ ®îc gi÷ nguyªn. Qu¸ tr×nh cø tiÕp tôc nhvËy cho ®Õn khi kh«ng cßn  
tªn nµo ®îc g¸n n÷a. KÕt qu¶ thu ®îc, sau khi kh«ng cßn cã thÓ g¸n thªm ®îc  
n÷a, th× ®îc gäi lµ biÓu thøc ®îc ®Þnh gi¸ hoµn toµn vµ Maple thùc hiÖn c¸c phÐp  
to¸n trªn ®Êy. NhvËy, trong vÝ dô trªn, khi ®äc ®Õn z ®Ó in gi¸ trÞ cña nã, Maple  
thay thÕ nã bëi y, sau ®ã thay thÕ y bëi 10 råi míi in gi¸ trÞ 10 ra nhlµ gi¸ trÞ cña  
z. Cßn biÕn t vÉn kh«ng thay ®æi néi dung cña nã:  
88  
[>t;  
x2 + 5 x 12  
BiÕn to¸n häc ch¼ng qua lµ biÕn ch¬ng tr×nh ®îc g¸n gi¸ trÞ chÝnh lµ tªn cña  
nã. Khi ta g¸n cho nã mét gi¸ trÞ kh¸c (so víi tªn cña nã) th× nã trë l¹i thµnh biÕn  
ch¬ng tr×nh, thÝ dô:  
[>x:=10;  
x := 10  
Khi x ®îc g¸n mét gi¸ trÞ sè (nhtrªn), th× néi dung cña t ®îc tÝnh to¸n nhthÕ  
nµo:  
[>t;  
138  
NhvËy, t ®îc íc lîng theo gi¸ trÞ x=10 vµ do ®ã t ®îc tÝnh to¸n thµnh  
t:=10^2+5*10-12=138.  
DÜ nhiªn, ta cã thÓ g¸n cho x gi¸ trÞ lµ tªn cña nã (lµ 'x') ®Ó x l¹i trë thµnh biÕn  
to¸n häc nhcò:  
[>x:='x';  
[>t;  
x
:=
x  
x2 + 5 x 12  
Chó ý Mét lçi mµ nhiÒu ngêi sö dông Maple thêng m¾c ph¶i lµ: dïng biÕn i  
lµm biÕn ch¬ng tr×nh, råi sau ®ã th× l¹i dïng inhchØ sè cña tæng trong lÖnh tÝnh  
to¸n tæng sum. VÝ dô díi ®©y minh ho¹ cho vÊn ®Ò nµy.  
[>x:=3;  
x := 3  
[>i:=4;  
i := 4  
[>x^i!;  
282429536481  
B©y giê xem i nhlµ kÝ hiÖu to¸n häc vµ thùc hiÖn lÖnh sum() trong ®ã i lµ chØ sè  
tÝnh tæng:  
89  
[>sum(i^2,i=1..n);  
Error, (in sum) summation variable previously  
assigned, second argument evaluates to, 4 = 1 .. n  
Trong th«ng b¸o lçi nµy chØ râ i tríc ®ã ®· ®îc dïng nhlµ mét biÕn ch¬ng  
tr×nh (v× ®· ®îc g¸n gi¸ trÞ lµ 4). Khi lÖnh sum ®îc thùc hiÖn, Maple tríc tiªn  
thùc hiÖn viÖc ®Þnh gi¸ hoµn toµn cho c¸c ®èi sè cña lÖnh sum. V× thÕ, (i^2,i=1..n)  
®îc biÕn ®æi trë thµnh (16,4=1..n) tríc khi lÖnh sum ®îc gäi ®Õn. Th«ng ®iÖp lçi  
®îc ph¸t sinh bëi v× "4" kh«ng lµ tªn chØ sè tÝnh tæng hîp lÖ.  
3.1.4. Ng¨n c¶n ®Þnh gi¸  
Sù ®Þnh gi¸ biÓu thøc ®îc Maple dïng ®Ó tÝnh to¸n c¸c c«ng thøc còng nh−  
biÓu diÔn c¸c c«ng thøc to¸n häc h×nh thøc (nhc¸c ph¬ng tr×nh, Èn sè,..). Tuy  
nhiªn viÖc ®Þnh gi¸ c¸c tªn trong biÓu thøc tríc khi ®îc tÝnh to¸n ®«i khi lµm cho  
biÓu thøc bÞ thay ®æi ngoµi mong muèn lµm cho phÐp tÝnh sai hay lÖnh sinh ra lçi  
(ch¼ng h¹n trong vÝ dô ë phÇn tríc). Do ®ã Maple cung cÊp cho ngêi dïng kh¶  
n¨ng ng¨n c¶n viÖc ®Þnh gi¸ víi møc ®é nµo ®ã phï hîp víi ®iÒu kiÖn cña phÐp tÝnh  
mµ ngêi ®ã cÇn thùc hiÖn.  
ViÖc ®Æt c¸c biÕn trong cÆp dÊu nh¸y ®øng ( ' ) lµ mét c¸ch ®Ó chØ râ cho  
Maple biÕt ®ã lµ tªn cña biÕn ch¬ng tr×nh, mµ kh«ng ph¶i lµ gi¸ trÞ cña chóng, vµ  
do ®ã ng¨n c¶n viÖc ®Þnh gi¸ c¸c biÕn ®îc ®ãng trong cÆp dÊu nµy. Tuy nhiªn,  
viÖc nµy kh«ng ng¨n c¶n c¸c phÐp to¸n sè häc ®¬n gi¶n (nhcéng, trõ, nh©n, chia,  
lÊy tæng sum(), lÊy tÝch product(),...) hay hÇu hÕt c¸c thao t¸c tù ®éng ®¬n gi¶n biÓu  
thøc kh¸c (nhc¸c hµm subs, simplify,..). KÕt qu¶ cña viÖc ®Þnh gi¸ hoµn toµn mét  
biÓu thøc ®· ®îc ®Æt trong cÆp dÊu nh¸y ®øng ph¶i lµ biÓu thøc ®· ®îc lét bá líp  
dÊu nh¸y nµy.  
Ta sö dông x nhlµ mét biÕn ch¬ng tr×nh:  
[>x:=100;  
x := 100  
[>'x'+1;  
x + 1  
Mçi lÇn ®Þnh gi¸ mét biÓu thøc trong c¸c cÆp dÊu nh¸y lµ lét bá mét líp dÊu:  
[>''x'+1';  
'x' + 1  
[>%;  
x + 1  
[>%;  
101  
90  
[>'(x+15)mod 20';  
[>%;  
(x + 15) mod 20  
15  
Trong trêng hîp b¹n muèn lo¹i bá gi¸ trÞ ®· g¸n cho biÕn ch¬ng tr×nh, kh«i phôc  
l¹i nã nhlµ mét kÝ hiÖu to¸n häc, th× b¹n h·y g¸n tªn cña biÕn cho chÝnh nã:  
BiÕn x ®îc g¸n lµ biÕn ch¬ng tr×nh:  
[>x:=3;  
x := 3  
Kh«i phôc biÕn x trë thµnh kÝ hiÖu to¸n häc:  
[>x:='x';  
x := x  
[>x+1;  
x + 1  
3.1.5. Sù tù ®éng ®¬n gi¶n biÓu thøc  
HÇu hÕt c¸c biÓu thøc ®îc Maple lu tr÷ díi d¹ng mµ b¹n ®· gâ vµo, hoÆc  
theo c¸ch mµ chóng t¹o ra trong qu¸ tr×nh tÝnh to¸n. Tuy nhiªn vÉn cã nh÷ng ngo¹i  
lÖ ®èi víi c¸ch lµm nµy ë chç: nh÷ng ngêi thiÕt kÕ Maple tin r»ng hÇu hÕt nh÷ng  
ngêi sö dông ®Òu muèn mét vµi phÐp biÕn ®æi ®îc tù ®éng thùc hiÖn (vÝ dô nh:  
viÖc chuyÓn ®æi 0*x thµnh 0, x*2 thµnh 2*x, x+x thµnh 2*x,...). Sù biÕn ®æi c¸c  
biÓu thøc nµy ®îc gäi lµ sù ®¬n gi¶n hãa.  
Sau ®©y lµ nh÷ng nÐt ®Æc trng ®¸ng chó ý cña sù tù ®éng ®¬n gi¶n trong  
Maple:  
PhÐp tÝnh sè häc trªn tæng, tÝch, vµ luü thõa cña c¸c sè tù nhiªn vµ c¸c sè h÷u  
tû ®îc Maple tù ®éng thùc hiÖn.  
¦íc sè chung lín nhÊt cña tö sè vµ mÉu sè trong sè h÷u tØ ®îc rót gän.  
C¸c thõa sè chung trong tö sè vµ mÉu sè cña mét ph©n thøc còng ®îc rót  
gän.  
TÝch cña c¸c sè h¹ng th× ®îc s¾p l¹i sao cho sè h¹ng lµ h»ng sè lµ phÇn tö  
®øng tríc trong biÓu thøc tÝnh tÝch ®ã.  
C¸c phÇn tö gièng nhau trong tæng hoÆc tÝch th× ®îc gép l¹i, ch¼ng h¹n x+x  
®îc gép l¹i thµnh 2*x, x*y+x*z ®îc gép l¹i thµnh x*(y+z).  
91  
NÕu biÓu thøc lµ tÝch cña mét sè víi mét tæng c¸c ®¬n thøc th× Maple thùc  
hiÖn ph©n phèi phÐp nh©n víi phÐp céng. VÝ dô nh1/2*(x+y) sÏ cho  
x/2+y/y trong biÓu thøc kÕt qu¶.  
3.1.6. C¸c tÝnh to¸n sè trong Maple  
Maple tÝnh to¸n sè mét c¸ch chÝnh x¸c. C¸c sè v« tû cha cã ký hiÖu biÓu diÔn  
®îc Maple g¸n tªn mét c¸ch thÝch hîp, vµ Maple cã thÓ cho gi¸ trÞ xÊp xØ cña c¸c  
sè nµy (còng nhbÊt kú sè v« tû nµo nh: π,e ,.. ) víi ®é chÝnh x¸c "tuú thÝch"  
(nghÜa lµ ®ñ lín!). Trong tÝnh to¸n, chóng ta thêng lµm viÖc víi c¸c sè thËp ph©n  
víi dÊu chÊm ®éng (lµ nh÷ng sè cã chøa dÊu chÊm ng¨n c¸ch phÇn nguyªn víi  
phÇn thËp ph©n). Sè lîng c¸c ch÷ sè trong phÇn thËp ph©n cµng nhiÒu th× ®é chÝnh  
x¸c cña sè ®ã cµng cao. C¸c ng«n ng÷ truyÒn thèng nhC,Pascal,.. còng sö dông  
c¸c sè cã dÊu chÊm ®éng trong viÖc biÓu diÔn vµ tÝnh to¸n c¸c sè thùc. Sè lîng c¸c  
ch÷ sè trong phÇn thËp ph©n cña c¸c sè ®îc biÓu diÔn trong c¸c ng«n ng÷ quy íc  
trªn lµ cè ®Þnh, do ®ã ®é chÝnh x¸c cña c¸c sè nµy bÞ giíi h¹n trong mét kho¶ng  
nhÊt ®Þnh. DÜ nhiªn, chóng chiÕm Ýt bé nhí h¬n c¸c sè chÝnh x¸c ®îc biÓu diÔn  
b»ng Maple vµ ®ång thêi c¸c phÐp to¸n thùc hiÖn trªn c¸c sè nµy còng nhanh h¬n.  
KÕt qu¶ tÝnh to¸n cña Maple víi c¸c sè chÝnh x¸c th× ®éc lËp víi sai sè lµm trßn,  
®iÒu mµ ta kh«ng thÓ cã ®îc nÕu sö dông c¸c sè thËp ph©n cã dÊu chÊm ®éng cè  
®Þnh.  
§«i khi ta nhËn thÊy viÖc sö dông c¸c phÐp to¸n cho kÕt qu¶ gÇn ®óng lµ cÇn  
thiÕt, ch¼ng h¹n nhkhi b¹n chØ muèn íc lîng nhanh gi¸ trÞ cña mét sè vµ biÕt  
ch¾c r»ng sai sè do viÖc lµm trßn sè kh«ng lµm ¶nh hëng xÊu ®Õn chÊt lîng tÝnh  
to¸n. Maple cung cÊp c¸c hµm dïng ®Ó íc lîng c¸c sè theo dÊu chÊm ®éng.  
Chóng ta cã thÓ yªu cÇu Maple íc lîng c¸c sè víi ®é chÝnh x¸c cÇn thiÕt, ch¼ng  
h¹n b¹n cã thÓ yªu cÇu Maple íc lîng c¸c sè víi 10, 20, hay hµng tr¨m ch÷ sè  
thËp ph©n sau dÊu chÊm. MÆc ®Þnh, Maple thêng thùc hiÖn phÐp tÝnh c¸c sè cã dÊu  
chÊm ®éng chÝnh x¸c ®Õn 10 ch÷ sè. Xem thªm vÒ hµm evalf ®Ó biÕt thªm chi  
tiÕt.  
3.2. C¸c hµm thêng dïng trong Maple  
3.2.1. ¦íc lîng gi¸ trÞ  
M« t¶  
Hµm evalf(expression,n) cho xÊp xØ cña sè cã trong biÓu thøc  
expression díi d¹ng sè thËp ph©n cã dÊu chÊm ®éng víi ®é chÝnh x¸c  
tíi n ch÷ sè thËp ph©n (n lµ sè tù nhiªn). Tham sè expression cã thÓ  
nhËn bÊt cø to¸n tö, biÓu thøc hay lµ c¸c hµm tÝnh to¸n kh¸c mµ nh÷ng hµm  
nµy ph¶i cho gi¸ trÞ lµ c¸c sè còng nhc¸c h»ng sè.  
Hµm evalf(expression) mÆc ®Þnh sÏ cho kÕt qu¶ lµ c¸c sè cã 10 ch÷  
sè thËp ph©n sau dÊu chÊm ®éng. NÕu muèn thay ®æi ®é chÝnh x¸c tÝnh  
92  
to¸n, ta cã thÓ dïng lÖnh trªn, hoÆc thay ®æi gi¸ trÞ mÆc ®Þnh nµy b»ng lÖnh  
thay ®æi biÕn Digits.  
LÖnh  
Có ph¸p:  
evalf(expression);  
evalf(expression,[Digits]);  
C¸c tham sè:  
expression: BiÓu thøc cÇn íc lîng.  
[Digits]: Lµ tham sè tuú chän, nhËn gi¸ trÞ lµ sè tù nhiªn (sè  
lîng c¸c sè sau dÊu chÊm thËp ph©n).  
VÝ dô minh ho¹  
NhiÒu biÓu thøc cho kÕt qu¶ cha ®îc ®Þnh gi¸ trÞ sè mµ ®Ó díi d¹ng lµ c¸c  
sè chÝnh x¸c:  
[>bt1:=ln(2)+sqrt(3);  
bt1 := ln(2) + 3  
[>bt2:=1423/23546;  
1423  
bt2 :=  
23546  
Hµm evalf(expression) íc lîng c¸c sè víi sè c¸c ch÷ sè thËp ph©n mÆc  
®Þnh trong biÕn Digits:  
[>evalf(bt1);  
2.425197989  
§Ó biÕt sè ch÷ sè thËp ph©n mÆc ®Þnh lµ bao nhiªu ta dïng lÖnh  
[>Digits;  
10  
vµ ®Ó ®Æt l¹i chÕ ®é mÆc ®Þnh (víi sè lîng c¸c ch÷ sè thËp ph©n lµ 40 ch¼ng h¹n)  
ta dïng lÖnh  
[>Digits:=40;  
Digits := 40  
.
Khi Êy  
[>evalf(bt1);  
93  
2.425197988128822602944678462964048935019  
Hµm evalf(expression,digits)íc lîng c¸c sè víi sè c¸c ch÷ sè thËp ph©n  
x¸c ®Þnh b»ng tham sè digits:  
[>evalf(bt2,5);  
.060435  
[>evalf(bt2,70);  
.06043489340015289221099125116792661173872419943939522636541238426909029  
3.2.2. §¬n gi¶n biÓu thøc: lÖnh simplify  
M« t¶  
MÆc dï Maple tù ®éng thùc hiÖn ®¬n gi¶n biÓu thøc nhng kh«ng ph¶i lóc  
nµo nã còng ®a mét biÓu thøc vÒ ®îc d¹ng theo ý ta muèn. Ch¼ng h¹n,  
Maple kh«ng tù ®éng ph©n tÝch biÓu thøc thµnh nh©n tö hoÆc khai triÓn mét  
®a thøc, còng nhkh«ng rót gän íc sè chung lín nhÊt trong c¸c hµm ph©n  
thøc (tØ sè gi÷a hai ®a thøc). NhiÒu phÐp biÕn ®æi trong Maple chiÕm nhiÒu  
thêi gian còng nhbé nhí cÇn thiÕt ®Ó lu tr÷, vµ th«ng thêng th× c¸c tÝnh  
to¸n cßn phô thuéc vµo møc ®é íc lîng cña ngêi sö dông trong nh÷ng  
trêng hîp nhÊt ®Þnh. ChÝnh v× vËy mµ Maple ®· ®Ó c¸c phÐp biÕn ®æi nµy  
cho ngêi dïng tù ¸p dông tuú theo chän lùa cña riªng m×nh.  
Hµm simplifylµ mét hµm ®¬n gi¶n biÓu thøc dïng chung cho nhiÒu d¹ng  
íc lîng kh¸c nhau. Nã thùc hiÖn chÝnh x¸c trong hÇu hÕt, tuy r»ng kh«ng  
ph¶i lµ tÊt c¶, c¸c trêng hîp. Ch¼ng h¹n nhnã lu«n ®îc dïng ®Ó ®¬n gi¶n  
c¸c biÓu thøc ph©n thøc, còng nh®îc ¸p dông cho tÊt c¶ c¸c lo¹i ®¬n gi¶n  
biÓu thøc chuÈn mµ ta sÏ liÖt kª díi ®©y. B»ng c¸ch sö dông simplify, ta cã  
thÓ biÕn ®æi x^2-y^2-(x-y)*(x+y) thµnh 0, ®¬n gi¶n ho¸  
sin(x)^2+cos(x)^2 b»ng 1, hoÆc biÕn ®æi log(x^2) thµnh 2*log(x).  
Chóng ta còng cã thÓ thùc hiÖn viÖc ®¬n gi¶n mét phÇn biÓu thøc b»ng c¸ch  
dïng tham sè chän lùa c¸c ph¬ng thøc ®¬n gi¶n biÓu thøc díi ®©y.  
C¸c ph¬ng thøc ®¬n gi¶n biÓu thøc:  
atsign: to¸n tö hµm. vÝ dô: sin@arcsin cho ta x-> x.  
GAMMA: theo hµm gamma. vÝ dô: GAMMA(n+1)/GAMMA(n) cho ta n.  
hypergeom : theo c¸c hµm hypergeometric. VÝ dô: hypergeom([1],[1],z)  
th× cho ta exp(z).  
power : §¬n gi¶n liªn quan ®Õn luü thõa, hµm mò, logarithm. vÝ dô:  
ln(x*y) cho ta ln(x)+ln(y).  
radical : BiÓu thøc liªn quan ®Õn luü thõa h÷u tØ. VÝ dô: (x^2-  
4*x+4)^(1/4) cho ta (x-2)^(1/2).  
94  
RootOf: BiÓu thøc cã chøa hµm RootOf (tøc lµ nghiÖm cña mét ph¬ng  
tr×nh nµo ®ã).  
sqrt: BiÓu thøc gåm c¨n bËc hai hoÆc luü thõa cña c¨n bËc hai. VÝ dô :  
16^(3/2) cho ta 64.  
trig : §¬n gi¶n liªn quan ®Õn c¸c hµm lîng gi¸c. VÝ dô:  
cos(x)^2+sin(x)^2 cho ta 1.  
LÖnh  
simplify(expression);  
simplify(expression,rule);  
Tham sè:  
Minh häa  
expression: BiÓu thøc cÇn ®¬n gi¶n.  
rule: C¸c ph¬ng thøc cô thÓ ®Ó ®¬n gi¶n biÓu thøc nh®· liÖt kª ë trªn.  
Maple kh«ng tù ®éng ®¬n gi¶n biÓu thøc mµ ®Ó l¹i cho ngêi dïng tù chän lùa  
ph¬ng thøc (keyword) thÝch hîp:  
[>restart;  
[>bt:=2*(cos(2*y))^2+3*(sin(2*y))^2+exp(x)^(5/2)*(1+  
2*x+x^2)^(1/2)+2^(5/2);  
bt := 2 cos(2 y)2 + 3 sin(2 y)2 + (ex )(5/2) 1 + 2 x + x2 + 4 2  
Sö dông lÖnh ®¬n gi¶n th«ng thêng:  
[>simplify(bt);  
cos(2 y)2 + 3 + (ex )(5/2) csgn(1 + x) + (ex )(5/2) csgn(1 + x) x + 4 2  
§¬n gi¶n biÓu thøc theo hµm mò:  
[>simplify(bt,power);  
2cos(2y)2 +3sin(2y)2 +(ex )(5/2) csgn(1 +x) +(ex )(5/2) csgn(1 +x) x +4 2  
§¬n gi¶n theo c¸c hµm lîng gi¸c trong biÓu thøc:  
[>simplify(bt,trig);  
cos(2 y)2 + 3 + (ex )(5/2) (1 + x)2 + 4 2  
95  
3.2.3. T×m gi¸ trÞ lín nhÊt vµ bÐ nhÊt  
LÖnh:  
max- X¸c ®Þnh phÇn tö lín nhÊt cña mét d·y c¸c biÓu thøc.  
min- X¸c ®Þnh phÇn tö nhá nhÊt cña mét d·y c¸c biÓu thøc.  
Lêi gäi:  
max(x1, x2, ...)  
min(x1, x2, ...)  
§èi sè:  
x1,x2,... - c¸c biÓu thøc.  
M« t¶  
C¸c hµm max, mincho gi¸ trÞ lín nhÊt vµ gi¸ trÞ bÐ nhÊt cña mét hay nhiÒu ®èi  
tîng ®îc cho díi d¹ng ®èi sè cña hµm.  
Th«ng thêng c¸c ®èi sè cã d¹ng sè: sè nguyªn, ph©n sè, hoÆc sè thËp ph©n.  
Tuy nhiªn, c¸c hµm tæng qu¸t cho phÐp nhËn bÊt cø ®èi sè nµo vµ khi ®ã hµm  
max()hoÆc min()cho mét hµm kh«ng ®Þnh gi¸ trÞ.  
Gi¸ trÞ lín nhÊt hay nhá nhÊt cña mét hä c¸c ®a thøc cã thÓ ®îc biÕn ®æi  
thµnh mét hµm tõng khóc (piecewise).  
VÝ dô minh ho¹  
Hµm maxcho l¹i sè lín nhÊt:  
[>max(3/2, 1.49,-34,1.49999);  
3
2
Hµm max, minvíi ®èi sè kh«ng ®Þnh ®îc gi¸ trÞ th× cho mét hµm kh«ng ®Þnh gi¸  
trÞ:  
[>min(3/2, 1.49, f(x));  
min(1.49, f(x))  
[>max(3/5, ln(2), 9/13, -infinity);  
ln(2)  
[>max(x+1, x+2, y);  
max(y, x + 2)  
[>min();  
96  
Gi¸ trÞ lín nhÊt cña mét hä c¸c ®a thøc cã thÓ chuyÓn ®æi ®îc sang d¹ng mét hµm  
tõng khóc:  
[>convert(max(x*x-2,x+3),piecewise);  
1
2
1
2
1
2
1
2
1
2
x2 2  
x + 3  
x <  
x ≤  
+
21  
21  
1
+
2
2
x 2  
21 < x  
3.2.4. Thay thÕ trong biÓu thøc: lÖnh subs  
LÖnh  
subs(var=repl,expr);  
subs(var1=repl1,var2=repl2,expr);  
subs(var1=repl1,...,varn=repln,expr);  
C¸c ®èi sè:  
var,var1,var2,...,varn: c¸c kÝ hiÖu cÇn ®îc thay thÕ trong biÓu thøc.  
repl,repl1,..., repln: c¸c biÓu thøc sÏ thay thÕ chç cña var,  
var1,...,varntrong biÓu thøc expr.  
M« t¶  
Trong c¸c phÐp tÝnh nhiÒu bíc, mét ®ång nhÊt thøc nhsin(x)^2+cos(x)^2=1  
thêng ph¶i ¸p dông trong mét biÓu thøc nµo ®ã ch¼ng h¹n  
exp(x^2+sin(x)^2+cos(x)^2). Chóng ta cã thÓ thùc hiÖn viÖc nµy b»ng c¸ch  
thay mçi biÓu thøc sin(x)^2+cos(x)^2 trong biÓu thøc ®ã bëi gi¸ trÞ 1 trong vÕ  
ph¶i cña ®ång nhÊt thøc. PhÐp thay thÕ nµy nhanh h¬n viÖc ®Þnh gi¸ cña  
Maple, do ®ã gi¶m ®îc thêi gian tÝnh to¸n. Sö dông lÖnh  
subs(var=replacement, expression) ®Ó thay thÕ biÓu thøc var  
b»ng biÓu thøc replecement trong biÓu thøc expression (trong vÝ dô  
nµy khi thay sin(x)^2+cos(x)^2 bëi 1 ta thu ®îc biÓu thøc: exp(x^2+1)).  
Ta cã thÓ sö dông c¸ch ph¸t biÓu thø hai trong phÇn khai b¸o có ph¸p lÖnh ®Ó  
thay thÕ mét cÆp biÓu thøc: subs(v1=r1, v2=r2, expression). Trong  
®ã, mäi vÞ trÝ trong expressionv1®Òu ®îc thay thÕ bëi r1, vµ vÞ trÝ  
cña v2 ®îc thay thÕ bëi r2. T¬ng tù nhvËy, chóng ta cã thÓ thay thÕ  
nhiÒu vÞ trÝ b»ng c¸ch ¸p dông hµm subs víi ®èi sè bao gåm mét d·y c¸c  
®¼ng thøc var=replacement vµ biÓu thøc expression cÇn ®îc thay  
thÕ.  
97  
VÝ dô minh ho¹  
LÖnh thay thÕ ®¬n gi¶n:  
[>bt1:=a*x^2+b*x+c;  
bt1 := a x2 + b x + c  
[>bt11:=subs(a=3,b=-1,c=4,bt1);  
bt11 := 3
x
2
x
+ 4  
LÖnh subscã thÓ ¸p dông cho nhiÒu kÝ hiÖu, vµ khi Êy thø tù thay thÕ sÏ ®îc thùc  
hiÖn tõ tr¸i qua ph¶i. Trong vÝ dô sau ®©y, ta thùc hiÖn phÐp tÝnh khèi lîng m  
th«ng qua n¨ng lîng e vµ vËn tèc ¸nh s¸ng c theo c«ng thøc Einstein:  
[>msol:=solve(e=m*c^2,m);  
e
msol :=  
c2  
ta cã thÓ tÝnh lùc hÊp dÉn th«ng qua khèi lîng msol võa tÝnh ®îc:  
[>subs(m=msol,g=9.8,c=300000,f=m*g);  
f = .108888888910-9 e  
§Ó thÊy râ ý nghÜa cña thø tù thùc hiÖn trong lÖnh thay thÕ (nhiÒu ký hiÖu), ta so  
s¸nh 2 c¸ch thay thÕ c¸c gi¸ trÞ vµo c«ng thøc f=m*g.  
Khi cho c=300000 ®øng tríc trong trËt tù ®îc thay thÕ th× lÖnh tiÕn hµnh ngay  
®èi víi nã. Nhng do biÓu thøc f=m*gkh«ng cã kÝ hiÖu c®Ó mµ thay, cho nªn nã  
bá qua sù thay thÕ nµy vµ chØ thùc hiÖn thay thÕ 2 ký hiÖu tiÕp theo lµ m=msol,  
g=9.8vµ do ®ã kÕt qu¶ cña lÖnh lµ mét sù thay thÕ kh«ng ®Çy ®ñ:  
[>subs(c=300000,m=msol,g=9.8,f=m*g);  
e
f = 9.8  
c2  
NÕu cho m=msol lªn tríc th× ngay sau bíc ®Çu tiªn biÓu thøc trë thµnh:  
f=g*e/c^2, vµ c¸c biÕn g, cl¹i ®îc thay thÕ tiÕp. KÕt qu¶ lµ ta cã sù thay thÕ  
®Çy ®ñ h¬n:  
[>subs(m=msol,c=300000,g=9.8,f=m*g);  
f = .108888888910-9 e  
Hµm subsrÊt cã Ých trong viÖc tÝnh to¸n nhanh chãng c¸c hµm b»ng c¸ch thay thÕ  
c¸c biÓu thøc phøc t¹p bëi c¸c gi¸ trÞ ®ång nhÊt cña chóng (nhÊt lµ trong c¸c biÓu  
thøc lÆp ®i lÆp l¹i). VÝ dô cos(n*Pi)cã thÓ ®îc thay thÕ bëi (-1)^n nhê chu  
tr×nh sau ®©y  
[>restart;  
98  
[>reduit:=proc()  
if n<>0 then  
simplify(subs(cos(n*Pi)=(-1)^n,sin(n*Pi)=0,  
expand(args,trig)));  
fi;  
end:  
Vµ khi Êy c¸c biÓu thøc chøa cos(n*Pi) cã thÓ ®îc tÝnh mét c¸ch rÊt dÔ dµng,  
thÝ dô:  
[>bt:=sin(2*n*Pi)+2*(-1)^n*cos(n*Pi);  
bt := sin(2 n π) + 2 (-1)n cos(n π)  
[>reduit(bt);  
2 (-1)(2 n)  
3.2.5. Tæ chøc biÓu thøc theo mét sè biÕn chÝnh  
LÖnh  
collect(expression,variable);  
collect(expression,adding_exp);  
collect(expression,varlist,form,coefficient_simplifier);  
M« t¶  
collect() lµ mét lÖnh ®îc sö dông khi b¹n muèn tæ chøc mét biÓu thøc  
theo mét biÕn sè chÝnh hay víi c¸c biÕn ®îc viÕt díi d¹ng tæng cña c¸c sè  
h¹ng, trong ®ã mçi sè h¹ng lµ mét luü thõa cña mét biÕn chÝnh hay mét biÓu  
thøc nh©n víi mét hÖ sè liªn hîp (associated coefficient). Cã hai d¹ng kÕt qu¶  
cã kh¶ n¨ng thu ®îc: hoÆc lµ biÓu thøc ®Ö quy hoÆc lµ biÓu thøc ph©n phèi.  
Víi d¹ng ®Ö quy, kÕt qu¶ ®îc cÊu tróc ph©n cÊp. Nã ®îc Ðp thµnh d¹ng ®a  
thøc theo biÕn ®Çu tiªn trong danh s¸ch biÕn cho trong lÖnh gäi ( vÝ dô nh−  
collect(x*y^2 + x^2*z + y*z + y,[x,y]); th× x lµ biÕn ®Çu  
trong danh s¸ch biÕn [x,y]), hÖ sè cña biÕn ®Çu nµy l¹i lµ ®a thøc cña biÕn  
thø hai trong danh s¸ch biÕn ,vµ tiÕp tôc nhthÕ cho ®Õn biÕn cuèi cïng trong  
danh s¸ch.  
Víi d¹ng ph©n phèi, kÕt qu¶ ®îc viÕt díi d¹ng ®a thøc khai triÓn tæng cña  
c¸c sè h¹ng. Mçi sè h¹ng lµ tÝch cña c¸c luü thõa cña c¸c biÕn trong danh  
s¸ch víi c¸c hÖ sè ( c¸c hÖ sè nµy kh«ng phô thuéc vµo c¸c biÕn trong danh  
s¸ch biÕn ). D¹ng nµy rÊt h÷u Ých khi b¹n muèn xem nhiÒu biÕn nhlµ "biÕn  
chÝnh" mµ kh«ng cho tríc mét sù u tiªn ®èi víi bÊt cø biÕn nµo.  
§èi sè tuú chän thø t"coefficient simplifier" lµ tªn cña chu tr×nh ®¬n gi¶n sÏ  
®îc ¸p dông cho hÖ sè cña c¸c sè h¹ng cña kÕt qu¶.VÝ dô nh, nÕu expand lµ  
®èi sè thø t, th× c¸c hÖ sè sÏ ®îc khai triÓn. V× thÕ, cã thÓ thiÕt lËp c¸c hÖ sè  
kh¸c víi d¹ng ph©n cÊp vµ d¹ng ®Ö quy mµ collect tr¸o ®æi c¸c phÇn cña biÓu  
thøc cã chøa c¸c biÕn trong danh s¸ch.  
99  
Minh häa  
Gom c¸c sè h¹ng cña biÓu thøc theo biÕn x, råi theo y, cuèi cïng theo z.  
[>expr:=r^2*x^2-2*x^2*r+x^2+8*z*y*r^2-2*y*z*r*s-  
6*z*y*s^2+t^2*z^2+3*r^2*x*y*s*t-r*s*x*y+s^2*y^2+r^3*z*x-  
r*z*x*t^2;  
expr:=r2 x2 2x2 r +x2 +8zyr2 2yzrs 6zys2 +t2 z2 +3r2 xyst rsxy+s2 y2 +r3 zx  
rzxt2  
[>collect(expr,[x,y,z]);  
(r2 2r +1)x2 +((rs +3r2 st)y +(r3 rt2)z)x +s2 y2 +(2rs 6s2 +8r2)zy +t2 z2  
Sö dông d¹ng distributed, ta thÊy kÕt qu¶ ®îc khai triÓn:  
[>collect(expr,[x,y,z],distributed);  
(r2 2r +1)x2 +t2 z2 +s2 y2 +(2rs 6s2 +8r2)zy +(rs +3r2 st)yx +(r3 rt2)xz  
3.2.6. S¾p xÕp c¸c sè h¹ng  
C¸c lÖnh:  
sort(expression);  
Dïng ®Ó s¾p xÕp c¸c sè h¹ng theo thø tù abc hoÆc theo sè mò.  
sort(expression,variablelist,plex);  
Dïng ®Ó s¾p xÕp mét biÓu thøc theo thø tù tõ ®iÓn.  
sort(expression,variablelist,tdeg);  
Dïng ®Ó s¾p xÕp mét biÓu thøc theo thø tù tæng bËc.  
sort(list);  
S¾p xÕp danh s¸ch c¸c biÓu thøc theo thø tù t¨ng dÇn.  
sort(list,ordering);  
S¾p xÕp mét danh s¸ch theo c¸c trËt tù cho bëi ordering:  
string: s¾p xÕp danh s¸ch theo trËt tù cña c¸c x©u kÝ tù.  
numeric: s¾p xÕp danh s¸ch theo trËt tù sè.  
address: s¾p xÕp theo ®Þa chØ ®îc Maple lu tr÷.  
mét hµm cho kiÓu booleangåm hai ®èi sè f(a,b)trong ®ã a®øng tríc b  
nÕu fcho gi¸ trÞ true, ngîc l¹i nÕu f cho gi¸ trÞ false.  
M« t¶  
Maple s¾p xÕp c¸c to¸n h¹ng theo mét trËt tù cè ®Þnh. NÕu mét biÓu thøc ®îc  
in ra y+x+z trong lÇn lµm viÖc ®Çu, th× nã còng sÏ tiÕp tôc nhvËy trong  
nh÷ng lÇn tiÕp theo. Tuy nhiªn, trËt tù thuËn lîi ®Ó cho Maple lµm viÖc cã  
100  
hiÖu qu¶ th× cã thÓ kh«ng phï hîp víi trËt tù mµ chóng ta muèn quan s¸t thÊy  
trong kÕt qu¶. VÝ dô, Maple kh«ng s¾p xÕp c¸c sè h¹ng cña mét ®a thøc mét  
biÕn theo trËt tù gi¶m dÇn cña bËc hoÆc theo trËt tù abc. §Ó cã biÓu thøc ®îc  
s¾p xÕp nhmong muèn, chóng ta ph¶i sö dông hµm sort(expression)  
®Ó thay ®æi trËt tù c¸c to¸n h¹ng trong c¸c tæng hoÆc c¸c tÝch cã trong biÓu  
thøc theo mét trËt tù nµo ®ã.  
§èi víi c¸c biÓu thøc cã chøa luü thõa cña nhiÒu biÕn (hoÆc nhiÒu biÓu thøc  
con), sort nhËn ba ®èi sè. Khi chóng ta cã mét biÓu thøc gåm nhiÒu biÕn  
trong ®ã cã mét biÕn ®îc xem lµ biÕn chÝnh, vµ chóng ta muèn s¾p xÕp c¸c  
sè h¹ng cña biÓu thøc theo sù u tiªn ®èi víi sè h¹ng nµo cã luü thõa cao nhÊt  
cña biÕn chÝnh, Hµm sort(expression,variablelist,plex) sÏ s¾p  
xÕp c¸c sè h¹ng theo c¸ch Êy. variablelistcã thÓ lµ danh s¸ch biÕn víi  
biÕn chÝnh ®øng ë ®Çu danh s¸ch. §Ó s¾p xÕp c¸c sè h¹ng cã cïng luü thõa  
theo biÕn chÝnh, luü thõa cña biÕn tiÕp theo trong danh s¸ch variablelist  
sÏ ®îc dïng ®Õn. NÕu ®iÒu nµy l¹i tiÕp tôc x¶y ra ®èi víi biÕn thø hai th×  
biÕn tiÕp theo ®îc ¸p dông vµ cø tiÕp tôc nhvËy. C¸ch lµm nµy ®îc gäi lµ  
sù s¾p xÕp theo tõ ®iÓn v× nã gièng nhquy t¾c s¾p xÕp c¸c tõ theo thø tù tõ  
®iÓn.  
C¸ch kh¸c ®Ó tæ chøc c¸c sè h¹ng cña mét biÓu thøc lµ theo tæng bËc (total  
degree order). Tæng bËc cña mét tÝch c¸c luü thõa cña c¸c biÕn lµ tæng cña tÊt  
c¶ c¸c sè mò. Hµm sort(expression,variable list,tdeg) sÏ s¾p  
xÕp c¸c sè h¹ng cña biÓu thøc theo c¸ch nµy. §Ó s¾p xÕp hai sè h¹ng cã cïng  
tæng bËc, hµm sÏ s¾p xÕp theo thø tù tõ ®iÓn dùa trªn c¸c biÕn s¾p xÕp tríc  
trong danh s¸ch biÕn.  
NÕu danh s¸ch (list) ®îc cho vµo nhmét ®èi sè cña lÖnh sort, th× c¸c phÇn  
tö cña danh s¸ch ®îc s¾p xÕp theo thø tù t¨ng dÇn. Mét ®èi sè tuú chän cã  
thÓ ®îc dïng ®Ó ®Þnh râ kiÓu s¾p xÕp sÏ ®îc sö dông. §èi sè nµy cã thÓ lµ  
tõ kho¸ mµ Maple cã thÓ nhËn ra hoÆc cã thÓ lµ hµm so s¸nh do ngêi dïng  
®Þnh nghÜa.  
Minh häa  
Maple lu c¸c ®a thøc kh«ng theo trËt tù t¨ng hay gi¶m cña bËc c¸c ®¬n thøc  
mµ nã lu tr÷ mét c¸ch lén xén thÝch hîp cho viÖc lu tr÷ vµ tÝnh to¸n cña nã. §Ó  
thu ®îc biÓu thøc ®îc s¾p xÕp, chóng ta sö dông hµm sort():  
[>bt:=expand( (x^2-x-1)^4 );  
bt := x8 4 x7 + 8 x5 8 x3 + 2 x2 + 2 x6 5 x4 + 4 x + 1  
[>sort(bt);  
x8 4 x7 + 2 x6 + 8 x5 5 x4 8 x3 + 2 x2 + 4 x + 1  
S¾p xÕp c¸c biÓu thøc cã nhiÒu biÕn sè theo thø tù tõ ®iÓn:  
[>bt:=x^5*y^2*z+x^4*y^3*z^2+x^3*y^3*z^5+2*x^2+1;  
bt := x5 y2 z + x4 y3 z2 + x3 y3 z5 + 2 x2 + 1  
101  
[>sort(bt,[x,y,z],plex);  
x5 y2 z + x4 y3 z2 + x3 y3 z5 + 2 x2 + 1  
[>sort(bt,[y,x,z],plex);  
y3 x4 z2 + y3 x3 z5 + y2 x5 z + 2 x2 + 1  
S¾p xÕp theo tæng bËc:  
[>sort(bt,[x,y,z],tdeg);  
x3 y3 z5 + x4 y3 z2 + x5 y2 z + 2 x2 + 1  
S¾p xÕp danh s¸ch theo alphabet:  
[>sort([a,x,z,t,e,d,v,m,b,u]);  
[a, b, d, e, m, t, u, v, x, z]  
[>sort(c+b+a);  
[>sort(z*y*x);  
a + b + c  
x y z  
S¾p xÕp danh s¸ch theo trËt tù x©u kÝ tù:  
[>sort([`Xuan`,`Cuong`,Xuyen,`Vinh`,`Duong`],string);  
[Cuong, Duong, Vinh, Xuan, Xuyen]  
S¾p xÕp theo trËt tù do ngêi dïng ®Þnh nghÜa th«ng qua hµm so s¸nh:  
[>ord:=proc(a,b)  
if a<b*2 then true else false fi;  
end:  
[>sort([1,8,13,5,221,211],ord);  
[1, 8, 5, 13, 221, 211]  
3.2.7. ChuyÓn ®æi d¹ng cÊu tróc d÷ liÖu (lÖnh convert)  
LÖnh:  
convert(expression,resulttype);  
expression: biÓu thøc cÇn ®îc chuyÓn ®æi.  
102  
resulttype: d¹ng d÷ liÖu biÓu thøc cña ta cÇn chuyÓn sang.  
M« t¶  
C¸c cÊu tróc d÷ liÖu biÓu diÔn tæng, tÝch, tËp hîp, danh s¸ch, m¶ng nãi chung  
lµ t¬ng tù nhau. Mçi cÊu tróc d÷ liÖu ®ã cã thÓ ®îc xem nhmét nhãm c¸c  
phÇn tö ®îc viÕt theo mét kiÓu nµo ®ã. Ch¼ng h¹n nhmét danh s¸ch vµ mét  
tËp hîp ®îc viÕt ra trªn mµn h×nh chØ kh¸c nhau ë chç dÊu ®ãng bao hai ®Çu  
cña chuçi d÷ liÖu lµ ngoÆc vu«ng vµ ngoÆc xo¾n. VÒ h×nh thøc ta cã thÓ thÊy  
hoµn toµn cã thÓ chuyÓn ®æi mét tæng (sum) thµnh mét danh s¸ch (list) b»ng  
c¸ch thay dÊu céng b»ng dÊu phÈy, råi ®Æt dÊu ngoÆc vu«ng bao toµn bé biÓu  
thøc.  
Trong mét sè ch¬ng tr×nh ®«i khi rÊt cÇn thiÕt ph¶i thùc hiÖn viÖc chuyÓn ®æi  
nhvËy. Ch¼ng h¹n khi ta muèn tÝnh tæng c¸c phÇn tö cña mét danh s¸ch c¸c  
sè, c¸ch tèt nhÊt lµ ta biÕn ®æi cÊu tróc danh s¸ch nµy thµnh cÊu tróc tæng.  
Trong Maple chóng ta cã thÓ lµm ®îc ®iÒu nµy mét c¸ch kh¸ dÔ dµng b»ng  
c¸ch sö dông lÖnh chuyÓn ®æi cÊu tróc convert().  
Minh häa  
Khai b¸o mét danh s¸ch c¸c sè nguyªn:  
[>ds:=[12,23,53,2,11,34,12,2,3,11];  
ds := [12, 23, 53, 2, 11, 34, 12, 2, 3, 11]  
ChuyÓn d÷ liÖu tõ kiÓu danh s¸ch (list) thµnh kiÓu tæng (sum), tõ ®ã ta thu ®îc  
tæng c¸c phÇn tö cña danh s¸ch:  
[>convert(ds,`+`);  
163  
Ta cã thÓ chuyÓn kiÓu danh s¸ch nµy sang c¸c kiÓu m¶ng hay b¶ng, ch¼ng h¹n:  
[>convert(ds,table);  
table([10= 11, 1 = 12, 2 = 23, 3 = 53, 4 = 2, 5 = 11, 6 = 34, 7 = 12, 8 = 2, 9 = 3])  
HoÆc chuyÓn sang kiÓu tËp hîp, lu ý c¸c phÇn tö trïng nhau th× bÞ lo¹i bá bít:  
[>taphop:=convert(ds,set);  
taphop := {2, 3, 11, 12, 23, 34, 53}  
§Õm sè phÇn tö cña tËp hîp  
[>nops(taphop);  
7
§Õm sè phÇn tö cña danh s¸ch  
[>nops(ds);  
103  
10  
3.2.8. Thùc hiÖn mét phÐp to¸n trªn nhiÒu thµnh phÇn  
LÖnh  
map(f,expression);  
Dïng ®Ó tÝnh gi¸ trÞ cña hµm víi ®èi sè lµ mçi thµnh phÇn cña mét biÓu thøc.  
map(f,expression,arg2,arg3,...argn);  
Dïng ®Ó tÝnh gi¸ trÞ cña hµm cã n®èi sè trong ®ã ®èi sè thø nhÊt lµ mét thµnh  
phÇn cña biÓu thøc expression, cßn c¸c ®èi sè kh¸c nhËn gi¸ trÞ arg2,  
arg3,...argn.  
M« t¶  
C¸c phÐp to¸n trong Maple nhevalf, normal,... th«ng thêng nhËn c¸c ®èi  
sè lµ mét sè hoÆc mét biÓu thøc vµ chóng tÝnh to¸n trªn sè hoÆc biÓu thøc ®ã.  
Tuy nhiªn, khi c¸c hµm nµy ®îc truyÒn ®èi sè lµ mét danh s¸ch c¸c sè hay  
biÓu thøc, th× chóng vÉn thùc hiÖn mét c¸ch b×nh thêng b»ng c¸ch tÝnh to¸n  
víi tõng phÇn tö cña danh s¸ch, sau khi tÝnh to¸n chóng cho mét danh s¸ch  
c¸c kÕt qu¶. Khi muèn x©y dùng mét hµm cã thÓ thùc hiÖn mét tÝnh to¸n  
gièng nhau trªn tÊt c¶ c¸c phÇn tö cña mét danh s¸ch, ta sö dông hµm map().  
Hµm map(f,expression) thùc hiÖn tÝnh to¸n hµm f víi c¸c ®èi sè lÇn  
lît lµ c¸c phÇn tö cña cÊu tróc d÷ liÖu expression. Hµm map() t¹o ra  
mét cÊu tróc míi trong ®ã to¸n h¹ng thø i cña cÊu tróc nµy lµ kÕt qu¶ cña viÖc  
¸p dông hµm f cho to¸n h¹ng thø icña cÊu tróc d÷ liÖu ban ®Çu. KiÓu cña  
cÊu tróc míi ®îc t¹o ra cïng kiÓu cÊu tróc d÷ liÖu ban ®Çu, ngo¹i trõ khi sù  
®¬n gi¶n ho¸ tù ®éng thùc hiÖn sau ®ã lµm thay ®æi chóng. V× vËy, hµm map  
lµm viÖc kh«ng chØ trªn danh s¸ch, tËp hîp, mµ cßn trªn tæng, tÝch, ph¬ng  
tr×nh, m¶ng, b¶ng,...  
D¹ng thø hai cña lÖnh maptrong khai b¸o trªn ®îc sö dông trong trêng hîp  
chóng ta muèn ¸p dông mét hµm gåm nhiÒu ®èi sè trong ®ã tham sè ®Çu tiªn  
cña hµm f lÇn lît ®îc tÝnh to¸n b»ng c¸c gi¸ trÞ lµ c¸c phÇn tö cña cÊu tróc  
d÷ liÖu trong expression, c¸c tham sè thø hai trë ®i nhËn gi¸ trÞ  
arg2,...,argn. Nã t¹o ra mét cÊu tróc d÷ liÖu míi cïng kiÓu víi biÓu  
thøc ®· cho ban ®Çu víi f(op(i,expression), arg2,...argn)®îc  
g¸n cho phÇn tö thø i cña cÊu tróc míi.  
Minh häa  
XÐt danh s¸ch:  
[>ds:=[Pi/3,3/5,-sin(Pi/7)];  
1
3
1
7
  
  
ds := π, , sin  
π
  
  
3
5
Mét sè hµm trong Maple cã kh¶ n¨ng tù ®éng tÝnh gi¸ trÞ víi ®èi sè lµ tõng phÇn tö  
cña c¸c cÊu tróc nhdanh s¸ch, tËp hîp, tæng, tÝch,... Ch¼ng h¹n hµm evalf cã thÓ  
tÝnh to¸n trªn mçi phÇn tö cña danh s¸ch trªn:  
104  
Tải về để xem bản đầy đủ
pdf 43 trang yennguyen 13/04/2022 3900
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng 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

File đính kèm:

  • pdfbai_giang_maple_chuong_3_cac_khai_niem_va_cac_ham_co_ban_tro.pdf