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 ch−a ..................................... 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 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«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ô 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.
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 vµ 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
l−u 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ã nh− lµ 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 nh− mét 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 ch−a 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 nh− lµ 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,...). Nh− vË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 nh− lµ biÕn cã thÓ lËp tr×nh ®−îc, gièng nh− kh¸i
niÖm biÕn trong c¸c ng«n ng÷ lËp tr×nh truyÒn thèng nh− C, 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 nh− sau: 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 nh− lµ 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 nh− vË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. Nh− vË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 nh− lµ 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è (nh− trªn), th× néi dung cña t ®−îc tÝnh to¸n nh− thÕ
nµo:
[>t;
138
Nh− vË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 nh− cò:
[>x:='x';
[>t;
:=
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 inh− chØ 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 nh− lµ 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 nh− lµ 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 (nh− c¸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 (nh− cé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 (nh− c¸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 nh− lµ 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ã nh− lµ 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 l−u 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 tr−ng ®¸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ô nh− 1/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û ch−a 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 nh− bÊ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 nh− C,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 nh− khi 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 nh− c¸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¶ ch−a ®−î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 nh−ng 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 nh− kh«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 nh− bé nhí cÇn thiÕt ®Ó l−u 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 nh− nã 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 nh− sin(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 expressioncã v1®Òu ®−îc thay thÕ bëi r1, vµ vÞ trÝ
cña v2 ®−îc thay thÕ bëi r2. T−¬ng tù nh− vË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 2 − + 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ã. Nh−ng 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 nh− thÕ 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 nh− lµ "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 l−u 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 nh− vË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 nh− mong 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 nh− vËy. C¸ch lµm nµy ®−îc gäi lµ
sù s¾p xÕp theo tõ ®iÓn v× nã gièng nh− quy 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 nh− mé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 l−u 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ã l−u tr÷ mét c¸ch lén xén thÝch hîp cho viÖc l−u 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 nh− mét nhãm c¸c
phÇn tö ®−îc viÕt theo mét kiÓu nµo ®ã. Ch¼ng h¹n nh− mé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
nh− vË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, l−u ý 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 nh− evalf, 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 nh− danh 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 đủ
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:
- bai_giang_maple_chuong_3_cac_khai_niem_va_cac_ham_co_ban_tro.pdf