Professional Documents
Culture Documents
Lập trình tính toán hình thức SYSBOLIC
Lập trình tính toán hình thức SYSBOLIC
Tiu lun : M PHNG THUT TON HEAP SORT & QUICK SORT TRN MAPLE
Ging vin hng dn : PGS.TS Vn Nhn Hc vin thc hin : on V Ngc Duy MSSV : CH1101010 TP.HCM 01/01/2013
GII THIU............................................................................................. 3 C
IM
............................................................................................................... 4
NHNG
NG DNG CH YU.......................................................................................5
(HELP)
TRONG
MAPLE.........................................................7
GII THIU
Lp trnh symbolic l lp trnh trn c s ton hc logic, c thit k gii quyt cc vn lin quan n tr tu nhn to. Chng trnh l tp hp cc m t logic , lp trnh dng ny cn c gi l ngn ng lp trnh k hiu (symbolic programming) tng t cc ngn ng lp trnh hm (functional programming), hay lp trnh phi s (non-numerical programming). Lp trnh symbolic rt thch hp gii quyt cc bi ton lin quan n cc i tng (object) v mi quan h (relation) gia chng Vi cc tnh nng c bn ca mnh, Maple c th thc hin c hu ht cc php ton c bn trong chng trnh ton i hc v ph thng. Maple l chng trnh tnh ton vn nng rt s, khng th no nm bt cho ht (d ch trn phng din tnh ton v biu din) y em xin trnh by cc bc c bn v s hc v cc vn lin quan, gii thiu cc cu lnh, cc hm thng s dng, cch vit cc th tc. T c th xy dng nhiu chng trnh khc phc v cho vic hc tp v nghin cu. Maple l sn phm ca Waterloo Maple Inc. (http://www.maplesoft.com). Ra i vo nhng nm 1980 ti i hc Waterloo (Canada), v cho n thi im hin nay (nhng ngy u nm 2008) pht trin n phin bn 11. Ci t n gin, khng i hi cu hnh my mnh (nh Matlab), chy trn tt c cc h iu hnh, khng qu kh khn t hc cch s dng vi mt trnh tr gip (Help) rt tin li. Maple l mt chng trnh tnh ton mnh m. Hy th lm mt php so snh nh vi mt cng c tnh ton tht quen thuc vi chng ta: Chic my tnh b ti (mt php so snh rt khp khing). My tnh b ti th ch c th tnh ton vi s c th (nu bn ngh n c th phn tch a thc thnh nhn t chng 3
hn ?) nhng Maple th khc. N c kh nng lm vic vi c nhng biu thc ton hc v cc php tnh hnh thc. Cho php tnh ton ra cc gi tr chnh xc (ch khng phi l gn ng nh mt s ngn ng lp trnh khc v d : C# hay C++ khng h tr tnh chnh xc tuyt i) T rt gn, khai trin biu thc, tnh gii hn, o hm, nguyn hm (ch khng phi ch l tnh tch phn) bc ph thng. n khai trin Taylor, tm nghim phng trnh vi phn, tnh nh thc, gii h phng trnh tuyn tnh c tham s Maple x l trong tch tc. Khng ch nh vy, Maple cn c th minh ho xut sc th hai chiu ln mt cong trong khng gian ba chiu, th to cc, tham s, hm n.
c im
L mt h thng tnh ton trn cc k hiu v biu thc ton hc. C th thc hin hu ht cc php ton c bn ca chng trnh ton i hc v sau i hc.Tnh ton c nghim chnh xc v gn ng ca mt lp rng cc bi ton l thuyt v ng dng. Cung cp cc cng c minh ha hnh hc thun tin bao gm: th, hnh v tnh v ng ca cc ng v mt c cho bi cc hm ty trong nhiu h ta khc nhau. Mt ngn ng lp trnh n gin v mnh m c kh nng chuyn i sang cc ngn ng lp trnh khc. Cho php trch xut d liu ra cc nh dng khc nhau nh Latex, Word, HTML... Mt cng c bin son gio trnh in t v trnh din bi ging thun tin.
Nhng ng dng ch yu
Maple nh mt cng c h tr vic dy v hc ton. ng dng ny qu tht l quan trng vi nhng sinh vin s phm ton cng nh nhng ngi lm cng tc nghin cu ton hc Ngoi ta Maple cn l mt cng c h tr cho tin hc v lp trnh. Hin nay khi Pascal thiu nhiu cng c v khng cn ph hp lm vi kin thc tin hc hin nay dy v hc cch lp trnh. Vi nhng phn mm tnh ton khoa hc ang c pht trin rt mnh m hin nay nh Maple, Mathematica, Matlab Ta c th khai thc ngn ng lp trnh ca n hc tin hc, nht l th hin cc thut ton v cc kin thc tin hc c lin quan. Vi vic th hin cc thut ton trn cc ngn ng thng thng nh C#, C++ hay Java cng c nhiu hn ch trong lp trnh cng nh tnh ton chnh xc, maple l mt cng v rt mnh m phng cc thut ton trong tr tu nhn to hay cc thut gii m ha d liu cho n vic m phng my hc.
1. Lm quen vi maple
Lnh c g vo trang lm vic (worksheet) ti du nhc lnh ">" v theo ngm nh c hin th bng font Courier mu . Mt lnh c kt thc bi du " :" hoc du ";" v c ra lnh thc hin bng vic nhn Enter khi con tr ang trn dng lnh. > factor(2*x^102+x^100-2*x^3-x+60*x^2+30): Kt qu ca lnh c hin th ngay bn di dng lnh nu dng du " ;". C th d dng dng chut v bn phm thc hin cc chc nng bi en, copy, paste, cut, delete...i vi d liu trn dng lnh hay kt qu thc hin.
Trang lm vic (worksheet) : l trang cha ni c th t cc lnh , cc chng trnh , cc ch thch ...Trang lm vic s c lu li thnh file c phn m rng *.mws . Cm x l (Execution Group): [> l ni c th t 1 lnh , hay mt nhm lnh ca Maple. Sau khi nh Enter tan b cc lnh trong cm x l s c thc thi. Cm vn bn (Text) : [ l ni c th t vn bn vi mc ch minh ha, ch thch. Phn (Section) : c th thu gn/ni rng , c th bao gm cm x l v cm vn bn. Trong mt cm x l c th gm nhiu lnh. Cc lnh kt thc bng ; hoc :
Cc lnh kt thc bng ; s c thc thi v kt qu hin ra mn hnh. Cc lnh kt thc bng : s c thc thi ngm v kt qu khng hin ra mn hnh. Mun thm mt lnh sau lnh hin ti g Shift Enter thay v Enter.
C th click vo nt lnh Help trn Menu Bar ca Maple m phn ti liu tr gip , tm kim mc thch hp , nhn Ctrl + F1 copy tan b v d , dn ngc li vo trang thc thi 6
Cm x l (Execution Group) Lnh v kt qu tnh ton ca Maple Mc (Section) th (Graph) Siu lin kt (Hyperlink) Vn bn v on vn bn (Text v paragraph) u tin hy m mt trang (worksheet) mi bng cch chn File/New. Mt trang trng vi du [> s hin ra: > Du trn gi l prompt, sau du cc bn c th g cc php tnh v yu cu Maple thc hin. Kt thc mi dng lnh l du chm phy hai hai chm, sau l Enter. Hy th: > 247*3756;
Nu bn kt thc bng du hai chm, Maple s vn tnh nhng khng hin th kt qu. Cc php tnh cng, tr, nhn, chia, lu tha, ln lt c k hiu: +, -, *, / , ^ (**). Ch mt iu l Maple dng cch tnh chnh xc, cho nn khi thc hin : > 25/27+3/51;
> evalf(%);
Maple phn bit ch hoa vi ch thng, cho nn Pi khc vi pi. Pi l hng s = 3.141592654, trong khi pi l ch ci Hi Lp tm hiu thm mt lnh no cha bit, bn c th c phn Help hoc n gin hn l nhn F1 sao khi t con tr vo v vi 1 ln Click. Bin v hm: php gn (mt hm s hay mt gi tr no cho mt bin) c thc hin bng cch dng k hiu := > alpha:=5;
nh ngha hm (ci ny quan trng!) c hai cch: Cch 1: gn cho n mt bin s. > f:=x^2;
> f;
Lc ny ta c th tnh gi tr ca hm ti bin x bng k hiu quen thuc f(x).Hy xem xt kh nng ca Maple trong vic bin i tnh ton cc biu thc i s: Lnh simplify thu gn mt biu thc > f:=(1+x)/x+(1-x)/x;
> simplify(f);
> f:=(x^2-4)*(x+1)*(x-2)*(x^2+x+1);
> expand(f);
Gii h phng trnh dng lnh Solve, tuy nhin trc khi gii phi Restart tr t do cho tt c cc bin. > restart; > sol:=solve({2*x-5*y=12,12*x+4*y=17},{x,y});
> df:=diff(f,x);
11
> evalf(%);
Tch phn th lun tnh c, tuy nhin nguyn hm th khng phi lc no Maple cng tnh ra. Chng hn trng hp sau: > h:=sin(x)/g(x);
> int(h,x);#khong phai bao gio Maple cung tim ra nguyen ham
> evalf(int(h,x=0..1));
13
th 3 chiu: Ta xt mt minh ho hnh nh t nhin ca cc ng conic nh giao tuyn ca mt nn v mt mt phng ct n. > with(plots): >animate(plot3d,[y/3-10,x= 20..t,y=20..t,color=red,style=PATCHNOGRID],t=18..17,ax es=framed,background=plot3d([z*cos(t),z*sin(t),z],z=20 ..0,t=-Pi..Pi)); Kt qu l mt hnh 3 chiu m c bit l bn c th xoay n v quan st theo mi gc .
Bng cch thay i thch hp phng trnh mt phng ct n, chng ta c th thu c thit din l mt trong cc ng conic.
14
BI TP VN DNG
1. Thut ton heap sort
M phng bi ton Mi mng a[1..n] c th xem nh mt cy nh phn gn y (c trng s l cc gi tr ca mng), vi gc phn t th nht, con bn tri ca nh a[i] l a[2*i] con bn phi l a[2*i+1] (nu mng bt u t 1 cn nu mng bt u t 0 th 2 con l a[2*i+1] v a[2*i+2] ) (nu 2*i<=n hoc 2*i+1<=n, khi cc phn t c
ch s ln hn
V d mng (45,23,35,13,15,12,15,7,9) l mt ng Mt cy nh phn, c gi l ng cc i nu kha ca mi nt khng nh hn kha cc con ca n. Khi biu din mt mng a[] bi mt cy nhi phn theo th t t nhin iu ngha l a[i]>=a[2*i] v a[i]>=a[2*i+1] vi mi i =1..int(n/2). 15
Ta cng s gi mng nh vy l ng. Nh vy trong ng a[1] (ng vi gc ca cy) l phn t ln nht. Mng bt k ch c mt phn t lun lun l mt ng. Mt ng cc tiu c nh ngha theo cc bt ng thc ngc li: a[i]<=a[2*i] v a[i]<=a[2*i+1]. Phn t ng gc cy cc tiu l phn t nh nht. Vun ng Vic sp xp li cc phn t ca mt mng ban u sao cho n tr thnh ng c gi l vun ng. Vun ng th i Nu hai cy con gc 2 * i v 2 * i + 1 l ng th cy con gc i tr thnh ng ch vic so snh gi tr a[i] vi gi tr ln hn trong hai gi tr a[2 * i] v a[2 * i + 1], nu a[i] nh hn th i ch chng cho nhau. Nu i ch cho a[2 * i], tip tc so snh vi con ln hn trong hai con ca n cho n khi hoc gp nh l. (Th tc DownHeap trong gi m di y) Vun mt mng thnh ng vun mng a[1..n] thnh ng ta vun t di ln, bt u t phn t a[j]vi j =Int(n/2) ngc ln ti a[1]. (Th tc MakeHeap trong gi m di y) kho qua Sp xp bng vun ng i ch (Swap): Sau khi mng a[1..n] l ng, ly phn t a[1] trn nh ca ng ra khi ng t vo v tr cui cng n, v chuyn phn t th cui cng a[n] ln nh ng th phn t a[n] c ng ng v tr. Vun li Phn cn li ca mng a[1..n-1] ch khc cu trc ng phn t a[1]. Vun li mng ny thnh ng vi n-1 phn t. 16
Lp Tip tc vi mng a[1..n-1]. Qu trnh dng li khi ng ch cn li mt phn t M phng heap sort bng Maple
> parent:=i->floor(i/2); > >
>
17
>
>
18
> >
>
> >
19
> >
20
y ta thy xut hin 3 danh sch con, trong : Danh sch th 2 c sp xp. Nu danh sch 1 v 3 ch c mt phn t th dy a[in] c sp xp xong. Nu danh sch 1 v 3 c hn mt phn t th dy ban u ch c th t khi cc dy con 1, 3 c sp. sp xp dy con 1 v 3, ta ln lt tin hnh vic phn hoch tng dy con theo cng phng php phn hoch dy ban u va trnh by. Gii thut: Gii thut phn hoch dy a[1n] thnh hai dy con gm 3 bc: Bc 1: chn ty 1 phn t a[k] trong dy lm gi tr mc. L k R : a[k] =X; i = L; j = R; Gi cc cch chn phn t mc Chn phn t ng u hoc ng cui lm phn t cht. Chn phn t ng gia danh sch lm phn t cht. Chn phn t trung v trong 3 phn t ng u, ng gia v ng cui lm phn t cht. Chn phn t ngu nhin lm phn t cht. (Cch ny c th dn n kh nng ri vo cc trng hp c bit) Bc 2: Pht hin v hiu chnh cp phn t a, a[j] nm sai ch: Bc 2a: Trong khi (a < X) i++; Bc 2b: Trong khi (a[j] > X) j++; Bc 2c: Nu i < j // a X a[j] m a[j] ng sau a Hon v ( a, a[j]); Bc 3: Nu i < j; Lp li Bc 2 // cha xt ht mng Nu I > j; Dngcho chin lc chia tr. 21
>
22
>
23
>
> >
24
> >
>
>
25