You are on page 1of 53

Lp trnh ton hc vi Mathematica - NTTH 2016

Lm quen vi Mathematica......................................................................................................... 3
Lm vic vi ma trn .................................................................................................................. 3
Lm vic vi List ......................................................................................................................... 4
Hm s ....................................................................................................................................... 6
V th v im ........................................................................................................................ 8
V th tham s ...................................................................................................................... 10
V th trong khng gian 3 chiu ............................................................................................ 11
V th hm s dng f(x,y) = 0 v f(x,y,z) = 0 ......................................................................... 12
V min ng ca bt ng thc .............................................................................................. 15
Cc vng lp dng Do, For, While ............................................................................................ 17
Nhng k hiu c bit .............................................................................................................. 19
Tch Kronecker vi lnh KroneckerProduct ............................................................................... 20
Phn tch s t nhin thnh tha s nguyn t......................................................................... 21
Gii phng trnh v h phng trnh ...................................................................................... 22
Tch phn, o hm, chui v gii hn. .................................................................................... 24
Tnh ton nhiu bin ................................................................................................................. 25
Gii phng trnh vi phn: DSolve v NDSolve ........................................................................ 26
Chuyn t s thc sang s hu t v ngc li. Chuyn c s. ............................................... 26
Lnh Roots v lnh Solve ......................................................................................................... 27
Lnh kh bin v mt s cch th gi tr vo biu thc ............................................................ 27
Lnh Chop ................................................................................................................................ 28
Thread, Inner, Outer, Transpose, v Distribute ......................................................................... 29
Lnh Root v lnh FindRoot ..................................................................................................... 33
Lnh Quiet ................................................................................................................................ 34
Lnh Off .................................................................................................................................... 35
Lnh On .................................................................................................................................... 35
Lnh Check .............................................................................................................................. 36
Gii phng trnh vi phn thng - Lnh NDSolve ................................................................... 36
Lnh String ............................................................................................................................... 36
Ghi ch trn th..................................................................................................................... 37
V th ng vi lnh Manipulate ........................................................................................... 38
Cc n v o lng trong thng k m t ................................................................................ 39
S sai khc khi tnh ton vi s phc ....................................................................................... 40
Php i bin trong tch phn ................................................................................................... 41

Lp trnh ton hc vi Mathematica - NTTH 2016


Th li tnh ng n nghim ca phng trnh ....................................................................... 42
Ghi ch khi v th im ......................................................................................................... 43
Tam gic Pascal ....................................................................................................................... 44
V ng h treo tng .............................................................................................................. 46
Thao tc cc biu thc i s ................................................................................................... 47
Mi th l mt biu thc ........................................................................................................... 50
Mt phng trnh vi nghim chnh xc khng c tm thy .................................................. 53

Lp trnh ton hc vi Mathematica - NTTH 2016


Lm quen vi Mathematica
1. Mathematica phn bit ch hoa ch thng, cc hm ca n u bt u bng ch hoa.
2. Cc bin i theo hm u c t trong ngoc vung, c php hnh thc nh sau:
Hm[expr]. C th ly v d nh Cos[x], Sin[x].
3. thc hin mt cu lnh, ta dng t hp phm "Shift + Enter".
4. kt thc mt cu lnh ta t du chm phy (;), nu khng c du (;) th kt qu s
c hin th bn di.
5. Cn phn bit cc du [], [[]], {}, ().
6. Lnh N[expr] dng hin th kt qu thnh s thp phn. V d: nu bn g Cos[1] th
kt qu hin th ch l Cos[1], nu bn g N[Cos[1],6] th kt qu s l 0.540302.
7. Khng c chy nhiu chng trnh cng mt lc v cc bin vn cn lu gi tr ca n,
khi kt qu ca bn s b sai, khc phc, chnh li nh sau Evaluation/Quit
Kernel/Local.
8. Cch t bin bnh thng nh a, b, c, x, y, z, ... , khng c tXY_a, XY-a, khng
c dng cc ch ci sau t tn bin I, E, C, D, N.
9. T hp Ctrl + K tm cc hm c tn ging nhau phn u.
10. Lnh ?Int* tm tt c cc hm bt u bng "Int", tng t vi ?*Q hay ?*Int*.
11. Cn phn bit List v Matrix trong Mathematica. Nu vit {1,2,3,4} th y l mt List
gm 4 phn t, cn nu vit {{1},{2},{3},{4}} th y l mt matrix 4 dng 1 ct, i vi 1
List th khng th dng hm chuyn v Transpose c, tuy nhin bn c th s dng cc
php ton ma trn gia Matrix v List, kt qu vn ng nh khi tnh ton gia cc ma
trn.
Lm vic vi ma trn
1. Cch cho mt ma trn
Cch 1: Insert->Table/Matrix->New

Cch 3: Dng hm Table[].

Cch 2: S dng mc nhn {}.

V d: Table[i*j,{i,1,10},{j,1,10}] s cho mt ma trn


10 dng 10 ct

V d: {{1,2,3},{a,b,c},{x,y,z}} s cho
mt ma trn c 3 dng 3 ct

2. Cc php ton vi ma trn


Cng 2 ma trn, s dng du cng (+)
Tr 2 ma trn, s dng du tr (-)

Lp trnh ton hc vi Mathematica - NTTH 2016


Nhn 2 ma trn, s dng du chm (.)
3. Cc hm vi ma trn
Tr[A]: tng cc phn t trn ng cho ca ma trn vung A
Det[A]: nh thc ca ma trn A
Transpose[A]: ma trn chuyn v ca ma trn A
Inverse[A]: ma trn nghch o ca ma trn A
Eigenvalues[A]: gi tr ring ca ma trn A
Eigenvectors[A]: vec t ring ca ma trn A
MatrixPower[A,n]: ly tha n ca ma trn A
MatrixExp[A]: ma trn m ca ma trn A
Drop[A,{i},{}]: xa dng th i t ma trn A
Drop[A,{},{j}]: xa ct th j t ma trn A
Union[A,B]: hp 2 ma trn A v B
4. To mt ma trn vi tnh cht cho trc:
To ma trn n v cp n: IdentityMatrix[n]
To ma trn ng cho: DiagonalMatrix[v], v l vec t ng cho c dng v = {a,b,c,d,...}
Ngoi ra c thm hm: SparseArray[], bn c t tm hiu thm qua th Help (hoc nhn F1)
Lm vic vi List
1. Cch cho mt list
Cch 1: {} cho mt list rng; {a,1,b,2,c,3} cho mt list gm 6 phn t
Cch 2: Table[expr,{i,n}] cho 1 list cc gi tr ca expr t 1 n n
Cch 3: Array[f,n] cho 1 list c n phn t ln lt l f[1], f[2], ... , f[n]
Cch 4: Range[n] cho 1 list {1, 2, ... , n}
Cch 5: NestList[f,x,n] cho 1 list n+1 phn t c dng {x, f[x], f[f[x]], ...}
2. Cch gi phn t ca list
First[list]: gi phn t u tin ca list
4

Lp trnh ton hc vi Mathematica - NTTH 2016


Last[list]: gi phn t cui cng ca list t[[i]] hoc Part[t,i]: ly phn t th i ca list t
t[[i;;j]] hoc Part[t,i;;j]: ly cc phn t ca list t t v tr i n v tr j
t[[{i1,i2,...}]] hoc Part[t,{i1,i2,...}]: ly cc phn t t list t ng vi cc v tr i1, i2, ...
t[[i,j,...]] hoc Part[i,j,...]: ly phn t t list t c dng t[[i]][[j]]...
Take[list,n]: ly ra n phn t u tin ca list
Take[list,-n]: ly ra n phn t cui cng ca list
Take[list,{m,n}]: ly ra cc phn t ca list t v tr m n v tr n
Min[list]: ly ra phn t b nht ca list Max[list]: ly ra phn t ln nht ca list
3. Cc hm x l i vi list
Kt qu nhn c sau khi s dng cc hm ny a phn l List
Table[expr,{i,list}]: cho cc gi tr ca expr vi i ly gi tr t list
Map[f,list]: thc hin hm f vi tng gi tr ca list
Select[list,text]: chn ra cc gi tr t list vi iu kin text[elem] ng
TakeWhile[list,text]: ging vi hm Select[]
Length[list]: m s phn t ca list
Column[list]: in gi tr ca list theo dng ct
Position[list,form]: tm v tr cc phn t ca list c cng form
Count[list,form]: m s phn t ca list c cng form
MemberQ[list,form]: kim tra xem form c trong list hay khng (cho gi tr logic)
Prepend[list,elem]: thm elem vo v tr u tin ca list
PrependTo[list,elem]: ging vi Prepend[] Append[list,elem]: thm elem vo v tr cui cng
ca list
AppendTo[list,elem]: ging vi Append[] Insert[list,elem,i]: thm elem vo v tr th i ca list
Insert[list,elem,-i]: thm elem vo v tr th i (tnh t cui n u list) ca list
Riffle[list,elem]: chn elem vo cc v tr xen k gia cc phn t ca list
Delete[list,i]: xa elem nm v tr th i ca list
ReplacePart[list,i->new]: thay gi tr cho phn t th i ca list bi new
5

Lp trnh ton hc vi Mathematica - NTTH 2016


Rest[list]: tr li gi tr cho list sau khi xa phn t u tin
Most[list]: tr li gi tr cho list sau khi xa phn t cui cng
Drop[list,n]: tr li gi tr cho list sau khi xa n phn t u tin
Drop[list,-n]: tr li gi tr cho list sau khi xa n phn t cui cng
Drop[list,{m,n}]: tr li gi tr cho list sau khi xa cc phn t t v tr m n n
4. Sp xp th t mt list
Sort[list]: sp xp list theo trt t chun
Union[list]: sp xp list v xa cc phn t trng nhau
Ordering[list]: cho bit v tr ban u ca cc phn t list sau khi c sp xp bi Union[]
Hm s
1. nh ngha hm s trn Mathematica
Cch 1: Mun nh ngha hm parabol ta vit f[x_] = x^2+3x+1
nh ngha hm 2 bin: ta vit g[x_,y_] = x^2+y^2
Tng t i vi hm nhiu bin.
Cch 2: Function[x,body]: khai bo hm mt bin
Function[{x1,x2,},body]: khai bo hm nhiu bin
Ly v d trn, ta c th khai bo nh sau: Function[x, x^2+3x+1]
Function[{x,y}, x^2+y^2]
Cch 3: Dng du #& Ly v d trn, ta c th khai bo nh sau: (#^2+3#+1)& (#1^2+#2^2)&
2. Tnh gi tr hm s
V d 1

Lp trnh ton hc vi Mathematica - NTTH 2016


f[x_] = x^2+3x+1
g[x_]=x^2+2
h[x_]=f[x]+g[x]
Map[h,{a,b,c}]
Map[f[#]+g[#]&,{a,b,c}]

V d 2
f[x_] = x^2+3x+1
f[2] f[x]/.x->2
f[x]/.x->{1,2,3}
f@{2}
f@{1,2,3}
f/@{2}
f/@{1,2,3}

V d 3
Map[Function[x,x^2+3x+1],a+b+c]
Function[{x,y},x^2+y^2][a,b]
Map[#^2&,a+b+c]
Map[Take[#,2]&,{{2,1,7},{4,1,5},{3,1,2}}]

Lp trnh ton hc vi Mathematica - NTTH 2016


V d 4
h[x_] = Nest[Function[q,1/(1+q)],x,3]
Kt qu ca s l

3. Hm c sn trong Mathematica

Hm logarit: Log[a,x] (c s a)
Hm lng gic: Sin, Cos, Tan, Cot, Sinh, Cosh, Tanh, Coth, ArcCos, ArcSin, ArcTan,
ArcCot
Hm c bit: Gamma, Beta, Zeta, BesselJ, BesselY
C th tm qua th Help vi t kha tutorial/SpecialFunctions.
V th v im
1. Lnh Plot
Lnh v th ca mt hm s l Plot[]. C php hnh thc c th vit nh sau:
Plot[f, {x, xmin, xmax}]: v th hm f trn on [xmin,xmax].
Plot[{f1, f2,...}, {x, xmin, xmax}]: v trn cng mt h trc ta cc hm f1, f2, trn on
[xmin,xmax].
V d 1:
Plot[Sin[x]/x,{x,0,20}]

bit c danh sch cc tham s c dng km vi hm Plot, ta g cu lnh Options[Plot].


Cc tham s ny c khai bo dng: namevalue.
Cc gi tr hay dng nht ca tham s l:
-

Automatic: s chn la s c t ng
8

Lp trnh ton hc vi Mathematica - NTTH 2016


-

None: tham s khng c s dng


All: c s dng trong trng hp bt k
True: c s dng
False: khng c s dng

V d 2:
Plot[Sin[x]/x,{x,0,20}, PlotRange{-0.25,1.2}]
Gii thch: Tham s PlotRange{-0.25,1.2} c dng gii hn th hm s theo trc dc
t -0.25 n 1.2

Mt s tham s hay dng:


- Axes->None: khng hin th h trc ta
- AxesLabel: ghi ch tn ca trc ta
- PlotStyle: chnh cc thng s v mu sc, cch hin th m nht
9

Lp trnh ton hc vi Mathematica - NTTH 2016


2. Lnh ListPlot
C php hnh thc:
-

ListPlot[{yl, 2,...}] hin th cc gi tr y1, y2, ln h trc ta , gi tr ca x tng


ng l 1, 2,
ListPlot[{{x1, y1},{2, 2 },...}] hin th cc im c ta {xi,yi} ln h trc ta .

Ch :
- i vi lnh ListPlot cng c cc tham s nh lnh Plot.
- Nu cc im khng c hin th y , bn b sung thm tham s PlotRangeAll.
- Mun hin th nhiu th trn cng mt h trc ta ta dng lnh Show[].
V th tham s
v mt hm s c biu din di dng tham s x = fx(t), y = fy(t), t thuc on [a,b] ta
dng cc cu trc lnh sau:
ParametricPlot[{fx,fy},{t,tmin,tmax}] xy dng th tham s vi cc ta {fx,fy} nhn
c nh mt hm theo t.
ParametricPlot[{{fx,fy},{gx,gy},},{t,tmin,tmax}] xy dng mt vi ng tham s trn
cng mt h trc ta .
V d 1: ParametricPlot[{Cos[5*t], Sin[3*t]}, {t,0,20}, AspectRatio->Automatic]
V d 2:
ParametricPlot[{{2Cos[t], 2Sin[t]}, {2Cos[t], Sin[t]}, {Cos[t], 2Sin[t]}, {Cos[t], Sin[t]}},
{t,0,2Pi}]

10

Lp trnh ton hc vi Mathematica - NTTH 2016

V th trong khng gian 3 chiu


1. Lnh Plot3D
Chc nng: v hnh dng ca hm 2 bin z = f(x,y) trong h trc ta Oxyz.
C php hnh thc:
Plot3D[f,{x, xmin, xmax), {, ymin, ymax}] xy dng th 3 chiu ca hm 2 bin x, y.
Plot3D[{f1,f2,}, {x,xmin,xmax}, {y,ymin,ymax}] xy dng th 3 chiu ca cc hm f1, f2,
trong cng mt h trc ta .
V d 1: Plot3D[Sin[x y], {x,0,4}, {y,0,4}]
V d 2: Plot3D[{x^2+y^2, -x^2-y^2}, {x,-2,2}, {y,-2,2}]

11

Lp trnh ton hc vi Mathematica - NTTH 2016

2. Lnh ListPlot3D ListPlot3D[{{x1,y1,z1},{x2,y2,z2},}] hin th cc im c ta


{xi,yi,zi}
V d 3: ListPlot3D[{{0,0,1},{1,0,0},{0,1,0}},Mesh->All]

V th hm s dng f(x,y) = 0 v f(x,y,z) = 0


1. Mc ch

12

Lp trnh ton hc vi Mathematica - NTTH 2016


Nh chng ta bit, v th ca mt hm s trong h trc ta ecac vung gc ta thng
dng lnh Plot[], tuy nhin i vi trng hp ny hm s phi c dng chun l y = f(x).
Trong nhiu trng hp khc, chng ta li cn v th ca hm s c dng f(x,y) = 0, v d nh
v hnh elip chng hn, gii php ti u nht l dng lnh ContourPlot[].
Tng t i vi hm s dng f(x,y,z) = 0 ta dng lnh ContourPlot3D[].
2. C php hnh thc
ContourPlot[f == 0, {x,xmin,xmax}, {,ymin,ymax}] xy dng th hm s f(x,y) = 0 trong min
[xmin, xmax][ymin,ymax].
ContourPlot[{f == 0, g == 0, }, {x,xmin,xmax}, {,ymin,ymax}] xy dng nhiu th trn cng
mt h trc ta .
Tng t ta c: ContourPlot3D[f == 0, {x,xmin,xmax}, {,ymin,ymax},{z,zmin,zmax}]
ContourPlot3D[{f == 0, g == 0, }, {x,xmin,xmax}, {,ymin,ymax},{z,zmin,zmax}]
3. Mt s v d p dng
V d 1: ContourPlot[x^2-y == 0, {x,-2,2}, {y,-0.15,4}, Axes->True, Frame->False]
V d 2: ContourPlot[x^2/9+y^2/4 == 1, {x,-3.5,3.5}, {y,-2.5,2.5}, Axes->True, Frame->False,
AspectRatio->Automatic]

V d 3:

13

Lp trnh ton hc vi Mathematica - NTTH 2016


ContourPlot[{Abs[Sin[x] Sin[y]] == 0.5, Abs[Cos[x] Cos[y]] == 0.5}, {x,-3,3}, {y,-3,3}]
V d 4: ContourPlot3D[x^3+y^2-z^2 == 0, {x,-2,2}, {y,-2,2}, {z,-2,2}]

4. Mt s im lu
- Du bng phi c vit 2 ln (==).
- C php dng ContourPlot[f == g, {x,xmin,xmax}, {,ymin,ymax}] hoc ContourPlot[f == g,
{x,xmin,xmax}, {,ymin,ymax}, {z,zmin,zmax}] vn c thc hin.
- Nu khng thm cc tham s th Mathematica s mc nh th nm trong khung t l, nu
mun h trc ta hin th th ta thm cc tham s nh trong v d trn Axes->True, Frame>False.
- C php dng ContourPlot[f, {x,xmin,xmax}, {,ymin,ymax}] v th min l cc gi tr ca f
tng ng vi x v y trong min [xmin, xmax][ymin,ymax].
Tng t i vi hm ContourPlot3D (xem V d 5 v V d 6).
V d 5:
ContourPlot[x^2/9+y^2/4,{x,-3.5,3.5},{y,-2.5,2.5},Axes->True,Frame->False,AspectRatio>Automatic]
14

Lp trnh ton hc vi Mathematica - NTTH 2016


V d 6: ContourPlot3D[x^3+y^2-z^2,{x,-2,2},{y,-2,2}, {z,-2,2}]

V min ng ca bt ng thc
1. Mc ch
Trong nhiu trng hp chng ta cn phi xc nh min no l min tha mn ca bt ng thc
cho trc, tc l bt ng thc ng. Mt trong s cc gii php l dng lnh RegionPlot[],
tng t, trong khng gian 3 chiu ta cng c lnh RegionPlot3D[].
2. C php hnh thc
RegionPlot[pred,{x,xmin,xmax},{,ymin,ymax}] xy dng min th sao cho pred nhn gi
tr True.
RegionPlot3D[pred,{x,xmin,xmax},{,ymin,ymax},{z,zmin,zmax}] i vi trng hp 3
bin.
3. Mt s v d p dng
V d 1:
RegionPlot[x^2+y^3<2,{x,-2,2},{y,-2,2}]
V d 2:
15

Lp trnh ton hc vi Mathematica - NTTH 2016


RegionPlot[x^2+y^3<2&&x+y<1,{x,-2,2},{y,-2,2},BoundaryStyle->Dashed,PlotStyle>Yellow]

V d 3: RegionPlot3D[x^2+y^3-z^2>0,{x,-2,2},{y,-2,2},{z,-2,2}]
V d 4: RegionPlot3D[x^2+y^2+z^2<1
PlotPoints->35, PlotRange->All]

&&

x^2+y^2<z^2,{x,-1,1},{y,-1,1},{z,-1,1},

16

Lp trnh ton hc vi Mathematica - NTTH 2016

Cc vng lp dng Do, For, While


1. Vng lp dng Do
Do [expr, {imax}] thc hin expr imax ln.
Do [expr, {i, imax}] tnh expr vi bin i nhn gi tr ln lt t 1 n imax (bc nhy bng 1)
Do [expr, {i, imin, imax}] tnh expr vi bin i nhn gi tr ln lt t imin n imax (bc nhy
bng 1).
Do [expr, {i, imin, imax, di}] tnh expr vi bin i nhn gi tr ln lt t imin n imax (bc nhy
bng di).
Do [expr, {i, imin, imax}, {j, jmin, jmax},...] tnh expr vi cc vng lp lng nhau theo cc bin j, i,

2. Vng lp dng For


17

Lp trnh ton hc vi Mathematica - NTTH 2016


For[start, test, incr, body] bt u vi gi tr start, sau thc hin ln lt incr v body cho
n khi test nhn gi tr logic False.
3. Vng lp dng While
While [test, expr] thc hin expr cho n khi no test nhn gi tr logic False.
4. Cc v d
Do[Print["hello"], {3}]
For[i=0,i<4,i++,Print[i=,i]]
n=1;
While[n<4,Print[n=,n];n++]

Lnh IF
If [condition, t, f] : t s c thc hin nu condition c gi tr True, ngc li, f s c thc hin
If [condition, t, f, u ] tng t nh trn, nhng nu gi tr ca condition khng ng khng
sai th u s c thc hin
V d 1: nh ngha hm gi tr tuyt
i
abs[x_]:=If[x<0,-x,x]; abs/@{-1,0,1}
V d 2: t={} ; Do[If[PrimeQ[2^n-1],
AppendTo[t,n]],{n,100}]; t

V d 3:

18

Lp trnh ton hc vi Mathematica - NTTH 2016


S dng hm If lng vo vng
lp Do, trong c s dng
hm lm gin on Abort[ ]
a := 1; Print["i a"];
Do[{If [i == 5,Abort[],None],
i += 1; a += 2*i; Print[i, " ",
N[a]]}, {i, 1, 100}]

Nhng k hiu c bit


Trong bt k ngn ng lp trnh no cng c nhng k hiu c bit gip cho ngi s dng thc
hin nhanh hn trong thao tc lp trnh ca mnh. Chng tm c trong th Help hoc nhn F1.
-

Cc php tnh ton hc +, , *, /, ^ c gi nguyn khng c g thay i. Ch rng


php nhn 2 ma trn vi nhau c k hiu du chm A.B

Cc k hiu logic cng cn ch n, n rt c ch cho chng ta khi dng vng lp While hay If:
-

And thay bng &&, Or thay bng ||, Not thay bng !.
Cu lnh Nu A bng B th c vit trong Mathematica nh sau: If[A==B,].
Ch k hiu 2 du bng ==, nu ch vit 1 du bng th cu lnh s b sai.
Cu lnh Nu A khc B th c vit trong Mathematica nh sau: If[A!=B,].

Mt k hiu c bit trong Mathematica l === , 3 du bng, tng ng vi lnh SameQ[]. N


c dng so snh s ging nhau ca 2 i tng. Ngc li vi n s c lnh UnsameQ[], k
hiu tt l =!=.
Mt trong nhng k hiu hay dng khi vit mt chng trnh l @. K hiu ny s gip cho
chng trnh ca bn bt rm r hn.
V d:
Lnh Panel[Grid[Table[{i,j},{i,3},{j,3}]]]
vit li:
Panel@Grid@Table[{i,j},{i,3},{j,3}]

S du mc vung s gim bt gip ta qun l cc li ca chng trnh mt cch d dng.

19

Lp trnh ton hc vi Mathematica - NTTH 2016


Tng t ta c k hiu //. Cu lnh trn c th vit li: Table[{i,j},{i,3},{j,3}]//Grid//Panel
K hiu 2 con @@. K hiu ny tng ng vi lnh Apply[].
V d:
FactorInteger[20!]
Kt qu l: {{2,18},{3,8},{5,4},{7,2},{11,1},{13,1},{17,1},{19,1}}
Thc hin hai lnh sau lin tip:
FactorInteger[20!]
CenterDot@@(Superscript@@@%)
K hiu % thay cho danh sch list:{{2,18},{3,8},{5,4},{7,2},{11,1},{13,1},{17,1},{19,1}}
Kt qu l:
Cc cu lnh trn nhm mc ch phn tch s 20! thnh tch cc tha s nguyn t.
C th gii thch qu trnh tnh ton nh sau:
-

u tin lnh FactorInteger[] lit k mt list cc cp s dng {tha s nguyn t, s m


tng ng},
Sau lnh Superscript@@@% c p dng thc hin php ly tha cho tng
phn t [cp s] ca list, k hiu % tng ng vi kt qu trc , k hiu @@@ tng
ng vi Apply mc 1 [level 1] [s hiu su hn khi tm hiu lnh Apply].
Cui cng lnh CenterDot[]thc hin php nhn cc phn t ca list kt qu.

Mt v d khc dng k hiu @ v @@:


f[x_]=Sin[x]
f@3
f@@{3}
C hai u cho kt qu l Sin[3].
Tch Kronecker vi lnh KroneckerProduct
Cho hai ma trn Tch Kronecker ca 2 ma trn A v B l mt ma trn c k hiu:
V d 1:
A={{1,2},{3,4}}; KroneckerProduct[IdentityMatrix[3],A]//MatrixForm

20

Lp trnh ton hc vi Mathematica - NTTH 2016

V d 2:
A={{a,b},{c,d}}; B={{x,y},{z,u}}; KroneckerProduct[A,B]//MatrixForm

V d 3: C th kim tra tnh cht ca tch Kronecker:


{a,b,c,d} = RandomReal[1,{4,3,3}]; Chop[KroneckerProduct[a,b].KroneckerProduct[c,d] KroneckerProduct[a.c, b.d]] //MatrixForm

Phn tch s t nhin thnh tha s nguyn t


Cc s t nhin c th c phn tch ra cc tha s nguyn t mt cch nhanh chng nu chng
khng qu di (khng qu di c ngha l khng qu 30 k t)
FactorInteger[2434500]
Kt qu l: 2434500 = {{2,2},{3,2},{5,3},{541,1}}
Lnh FactorInteger[] vit cc tha s nguyn t ca mt s t nhin theo dng mt list ca tng
cp. Thnh phn u tin ca mi cp l tha s nguyn t, v thnh phn th hai l s m ca
tha s trong php nhn t ha.
Chng ta c th kim tra tha s cui cng trong dy phn tch trn c phi l mt s nguyn t
hay khng bng lnh PrimeQ[].
PrimeQ[541]

21

Lp trnh ton hc vi Mathematica - NTTH 2016


Kt qu l True
Gii phng trnh v h phng trnh
u tin chng ta lm quen vi lnh Solve: c php v cch ly gi tr nghim. Hy ch n
trng hp c nghim bi nh trong v d di y:
Solve[a*x^2+b*x+2,x]
Solve[x^4-3x^3+2x^2==0,x]
Solve[a*x^2+b*x+2,a]
Solve[a*x^2+b*x+2,b]

Theo trn th ta nhn thy rng, c php gii mt phng trnh n mt bin l:
Solve[equation, variable]
C php tng qut i vi cc i s ca lnh Solve bao gm mt list cc phng trnh ph thuc
vo mt list cc bin. C ngha l:
Solve[equation_list, variable_list]

22

Lp trnh ton hc vi Mathematica - NTTH 2016


th minh ha

Ch rng, khng phi tt cc phng trnh a thc u c nghim chnh xc. Theo l thuyt
phng trnh th cc phng trnh bc 4 tr xung u c cng thc nghim chnh xc c xy
dng t cc h s.
Tuy nhin, theo Galois, i vi cc phng trnh bc 5 tr ln, chng ta li khng c nhng cng
thc nghim nh th. V Mathematica s khng nh gi cc phng trnh bc 5 tr ln (cc
phng trnh khng th phn tch thnh nhn t), tt nhin c th tm tt c cc nghim ca mt
phng trnh a thc bng phng php s thng qua lnh N[].

N[%]

23

Lp trnh ton hc vi Mathematica - NTTH 2016

Tch phn, o hm, chui v gii hn.


Cc Option c th tham kho trong th Help.
Lnh tm tch phn khng xc nh ca hm f(x) l Integrate[f[x], x].
Ch rng trong kt qu tm c khng c cc hng s i km.
tm tch phn xc nh ca hm f(x) trn on t a n b ta s dng c php:
Integrate[f[x], {x, a, b}].
Tng t, lnh NIntegrate tm gi tr s biu din thp phn ca tch phn xc nh ca hm f(x).
o hm l php ton ngc vi tch phn. C php:
D[f[x], x] c ngha l tm o hm ca hm f(x) theo bin x.
Tt nhin c th tm o hm bc n ca hm f(x) bng lnh D[f[x], {x, n}].
Lnh Series[f(x), {x, a, n}] s cho ra n thnh phn u tin trong khai trin chui Taylor ca hm
f(x) ti im a.
Lnh Limit[f(x), x -> a] s tm gii hn ca hm f(x) khi x tin ti a.
Sau y l cc v d:

24

Lp trnh ton hc vi Mathematica - NTTH 2016

Tnh ton nhiu bin


Vi Mathematica, o hm hn hp c tnh mt cch d dng.
D[f[x, y], x, y] o hm theo c bin x v y
D[f[x, y], {x, n}, {y, m}] o hm theo bin x n ln v theo bin y m ln
D[f, {{x1, x2, }}] tm o hm ring
i vi tch phn cng vy, ta c cc c php sau:
Integrate[f[x, y], {x, a, b}, {y, c, d}] tnh tch phn theo c 2 bin x v y

25

Lp trnh ton hc vi Mathematica - NTTH 2016


Gii phng trnh vi phn: DSolve v NDSolve
DSolve[equation, y, x] gii phng trnh vi phn vi bin c lp x
DSolve[equation_list, y_list, x] gii mt list cc phng trnh vi phn
DSolve[equation, y, {x1, x2, }] gii phng trnh o hm ring
Chuyn t s thc sang s hu t v ngc li. Chuyn c s.
Mt s lnh rt n gin nhng s gy kh khn cho ngi mi hc. Sau y l mt s v d c
bn:

26

Lp trnh ton hc vi Mathematica - NTTH 2016


Lnh Roots v lnh Solve
V c bn th 2 lnh ny c chc nng nh nhau, l gii phng trnh. Tuy nhin s khc nhau
ca chng l cch th hin kt qu tm c: i vi Solve kt qu c lit k theo kiu list,
i vi Roots kt qu biu din theo kiu logic (xem v d). Tuy nhin, kt qu ca chng s
hin th ging nhau nu ta dng lnhToRules.

Lnh kh bin v mt s cch th gi tr vo biu thc


Eliminate[eqns, vars] kh cc bin vars nm trong cc phng trnh cng mt lc.

Gi s ta c mt biu thc vi cc bin x, y, z Mun tnh gi tr biu thc ti nhng gi tr c


th ca bin, c th lm nh trong v d sau:

27

Lp trnh ton hc vi Mathematica - NTTH 2016

V d ch mang tnh minh ha gi , khng tng qut.


Lnh Chop
Lnh Chop s kh cc gi tr rt nh (gn bng 0) trong khi tnh ton. Xt cc v d sau y:
(1)

(2)

28

Lp trnh ton hc vi Mathematica - NTTH 2016


(3)

Thread, Inner, Outer, Transpose, v Distribute


1. Thread
Listable l mt thuc tnh c th n nh cho mt k hiu f rng hm f s t ng thc hin
xuyn qua cc list v xut hin vi cc i s ca n.
Cc hm listable (c hiu l hm c thuc tnh ny) s c thc hin mt cch ring r i
vi mi phn t ca list, hoc vi cc phn t tng ng trn mi list nu trong trng hp c
nhiu hn mt list.
Hu ht cc hm c xy dng trong Mathematica l listable.
Tt cc cc i s (cc list) trong hm listable cn phi c cng chiu di.
Cc i s m khng phi l list s c copy nhiu ln vo cc phn t ca cc list khc.
Log[{a,b,c}] KQ : {Log[a],Log[b],Log[c]}
Attributes[Log] {Listable,NumericFunction,Protected}
Hm listable s kt hp cc phn t tng ng ca lists : {a,b,c}+{x,y,z} KQ: {a+x,b+y,c+z}
Cc i s ko phi l lists th s c lp li {a,b,c}+x KQ : {a+x,b+x,c+x}
{{a,b},{c,d}}+x KQ : {{a+x,b+x},{c+x,d+x}}
Chng ta c th nh ngha mt hm c thuc tnh listable bng lnh: SetAttributes
f[x_]:=If[x>0,Sqrt[x],Sqrt[-x]]; SetAttributes[f,Listable]; f[{3,0,-2}]//N
KQ : {1.73205,0.,1.41421}
Mt hm thc hin bng mt php ton listable th c th khng cn thuc tnh Listable:
g[x_]:=x^2
g[{1,2,3}] {1,4,9}
Hm Thread thc hin cc cng vic tng t nh trn i vi mt dng ty , mc d n khng
phi l mt listable.
29

Lp trnh ton hc vi Mathematica - NTTH 2016


Sau y l mt s c php quan trng:
Thread[f[args]] xu hm f qua mt vi list xut hin trong args.
Thread[f[args], h] xu f qua mt vi i tng xut hin trong args vi dng h.
Thread[f[args], h, n] xu f qua mt vi i tng vi dng h xut hin trong n args u tin.
Thread[f[{a,b,c}]] - {f[a],f[b],f[c]}
Thread[f[{a,b,c},x]] - {f[a,x],f[b,x],f[c,x]}
Thread[f[{a,b,c},{x,y,z}]] - {f[a,x],f[b,y],f[c,z]}
Thread s chuyn phng trnh ca mt list thnh list ca cc phng trnh
Thread[{a,b,c}=={x,y,z}] - {a==x,b==y,c==z}
-

Thc hin mt hm vi 2 v ca mt phng trnh hoc vi cc s hng ca mt tng

Thread[Log[x==y],Equal] - Log[x]==Log[y]
Thread[Log[x+y],Plus] - Log[x]+Log[y]
-

Theo bnh thng th khng th xu cc dng ton (head) qua list

Thread[f[{a+b,c+d}],Plus] - f[{a+b,c+d}]
-

Theo bnh thng, khng th xu qua cc head ngoi tr list

Thread[f[a+b,c+d]] - f[a+b,c+d]
-

Mt v d Thread vi Plus

Thread[f[a+b,c+d],Plus] f[a,c]+f[b,d]
-

Thread ch vi 2 i s u tin

Thread[f[{a,b},{r,s},{u,v},{x,y}],List,2] - {f[a,r,{u,v},{x,y}],f[b,s,{u,v},{x,y}]}
-

Thread ch vi 2 i s cui cng

Thread[f[{a,b},{r,s},{u,v},{x,y}],List,-2] - {f[{a,b},{r,s},u,x],f[{a,b},{r,s},v,y]}
-

Thread ch vi i s th 2

Thread[f[{a,b},{r,s},{u,v},{x,y}],List,{2}] - {f[{a,b},r,{u,v},{x,y}],f[{a,b},s,{u,v},{x,y}]}
-

Thread cc i s t 2 n 4

Thread[f[{a,b},{r,s},{u,v},{x,y}],List,{2,4}] - {f[{a,b},r,u,x],f[{a,b},s,v,y]}

30

Lp trnh ton hc vi Mathematica - NTTH 2016


-

Thread cc i s vi bc nhy bng 2

Thread[f[{a,b},{r,s},{u,v},{x,y}],List,{1,-1,2}] - {f[a,{r,s},u,{x,y}],f[b,{r,s},v,{x,y}]}
-

Thread c th c s dng to mt list cc quy tc v tnh gi tr biu thc

exp=x^2+y^2; vars={x,y};points={1,2}; exp/.Thread[vars->points] KQ: 5


2. Inner
Inner[f, list1, list2, g] l s tng qut ha ca Dot, trong f ng vai tr ca php tnh nhn
v g ng vai tr ca php tnh cng.
a.b.c hoc Dot[a, b, c] s cho chng ta tch ca cc vecto, matrix hay tensor.
C php trn ca lnh Inner c vai tr ging nh c php ca cu lnh
Apply[g, Thread[f[list1, list2]]]. {a,b,c}.{x,y,z} KQ : ax+by+cz
Inner[Times,{a,b,c},{x,y,z},Plus] KQ : ax+by+cz
Inner[f,{a,b},{x,y},g] KQ: g[f[a,x],f[b,y]]
Apply[g,Thread[f[{a,b},{x,y}]]] KQ : g[f[a,x],f[b,y]]
3. Outer, Transpose, v Distribute
Outer[f,{a,b},{x,y,z}]
{{f[a,x],f[a,y],f[a,z]},{f[b,x],f[b,y],f[b,z]}}
Outer[Times,{1,2,3,4},{a,b,c}]
{{a,b,c},{2 a,2 b,2 c},{3 a,3 b,3 c},{4 a,4 b,4 c}}
Outer[Times,{{1,2},{3,4}},{{a,b},{c,d}}]
{{{{a,b},{c,d}},{{2 a,2 b},{2 c,2 d}}},{{{3 a,3 b},{3 c,3 d}},{{4 a,4 b},{4 c,4 d}}}}
Outer[g,f[a,b],f[x,y,z]] KQ : f[f[g[a,x],g[a,y],g[a,z]],f[g[b,x],g[b,y],g[b,z]]]
Transpose[list] chuyn v 2 level u tin ca list.
Transpose[list, {n1, n2, }] chuyn v list level th k trong list l level th nk trong kt qu.
Transpose[{{a,b,c},{x,y,z}}] KQ : {{a,x},{b,y},{c,z}}
m=Array[a,{2,3,2}]; m//MatrixForm
m//TreeForm
Transpose[m,{1,3,2}]//MatrixForm
31

Lp trnh ton hc vi Mathematica - NTTH 2016


Transpose[m,{1,3,2}]//TreeForm

Phn phi ch vi tch ca cc tng


Distribute[(a+b+c)(u+v),Plus,Times] KQ : au+bu+cu+av+bv+cv

32

Lp trnh ton hc vi Mathematica - NTTH 2016


Distribute[(a+b+c)^(u+v),Plus,Times] KQ : (a+b+c)^(u+v)
Phn phi cc quy tc i vi php ton logic
Distribute[And[Or[a,b,c],Or[u,v]],Or,And]

Lnh Root v lnh FindRoot


Root[f, k] tm nghim th k ca phng trnh a thc f[x] == 0
Root[poly, x, k] tm nghim th k ca a thc poly theo bin x

FindRoot[f, {x, x0}] tm nghim s ca a thc f bt u t im x0


FindRoot[lhs==rhs, {x, x0}] tm nghim s ca phng trnh lhs==rhs
FindRoot[{f1, f2, }, {{x, x0}, {y, y0}, }] tm nghim s ng thi ca tt c cc a thc fi
FindRoot[{eqn1, eqn2, }, {{x, x0}, {y, y0}, }] tm nghim s ng thi ca tt c cc
phng trnh eqni

33

Lp trnh ton hc vi Mathematica - NTTH 2016


Cc lnh lin quan n thng bo khi tnh ton: Quiet, Off, On, Check
Lnh Quiet
Quiet[expr]- thc hin nh gi expr b qua cc thng bo nu c.
Quiet[expr, {s1::t1, s2::t2, }]- ch b qua cc thng bo c bit trong khi nh gi expr.
Gii phng trnh vi phn thng - Lnh DSolve
DSolve[eqn,y,x] - gii mt phng trnh vi phn i vi hm s y vi x l bin c lp.
DSolve[{eqn1,eqn2,},{y1,y2,},x] - gii mt list cc phng trnh vi phn.
DSolve[eqn,y,{x1,x2,}] - gii phng trnh o hm ring.

C th kim tra tnh ng n ca nghim bng nhiu cch:

34

Lp trnh ton hc vi Mathematica - NTTH 2016

Lnh Off
Off[symbol::tag] - tt mt thng bo hn ch vic in cc kt qu mt cch di dng.

Lnh On
On[symbol::tag] - M thng bo n c th in ra mn hnh.

35

Lp trnh ton hc vi Mathematica - NTTH 2016


Lnh Check
Check[expr, failexpr] - nh gi expr v tr v kt qu nu khng c cc thng bo xut hin,
trong trng hp c thng bo cu lnh s tr v failexpr.
Check[expr, failexpr, {s1::t1, s2::t2, }] - ch kim tra mt vi thng bo c bit.
Gii phng trnh vi phn thng - Lnh NDSolve
NDSolve[eqns, y, {x, xmin, xmax}] - tm nghim s ca phng trnh vi phn thng eqns tng
ng vi hm s y vi bin c lp x nhn gi tr trong on xmin n xmax.
NDSolve[eqns, y, {x, xmin, xmax}, {t, tmin, tmax}] - tm nghim s ca phng trnh o hm ring.
NDSolve[eqns, {y1, y2, }, {x, xmin, xmax}] - tm nghim s i vi cc hm yi.
Xt v d sau y: tm qu o ca mt khi lng trong trng hp dn c tc ng bi mt
khi lng rt ln ti gc ta . N c biu din bi mt cp phng trnh vi phn:

Lnh String
generalString="The quick brown fox";
StringDrop[generalString,{5,10}] The brown fox
StringTake[generalString,{11,15}] Brown
36

Lp trnh ton hc vi Mathematica - NTTH 2016


StringInsert[generalString," stupid",4] The stupid quick brown fox
StringReplace[generalString,{"b"->"g","x"->"e"}] The quick grown foe
StringJoin[generalString,StringReverse[generalString]] The quick brown foxxof nworb kciuq
ehT
Ghi ch trn th
Khi chng ta v nhiu th cng mt lc trn cng h trc ta th chng ta cn phi nh du
phn bit d dng, chng ta c th lm c vic ny nh gi lnh c sn trong Mathematica
Plot Legends Package.

Ngoi ra cn c thm mt s tnh cht na gip ngi s dng trang tr thm cho th ca
mnh thm sinh ng.
LegendLabel hiu chnh nhn cho khung ghi ch
LegendLabelSpace hiu chnh khng gian cho nhn
LegendBorder hiu chnh mu sc, dy ca khung ghi ch
LegendBorderSpace hiu chnh khng gian ca khung
LegendBackground hiu chnh mu nn
LegendPosition hiu chnh v tr ca khung ghi ch trn ton b th
LegendSize hiu chnh kch thc ca khung
LegendShadow hiu chnh khung ghi ch ni hay chm trn th

37

Lp trnh ton hc vi Mathematica - NTTH 2016


V th ng vi lnh Manipulate
Cho trc cc gi tr t v j. V th hm e[T_] l mt hm ph thuc voT, t v j. a th
ny vo mt khung, trong khung c mnh c th thay i cc gi tr ca t v j, lu l t phi
nhn gi tr thc, cn j th nhn gi tr nguyn.
Tham kho:

38

Lp trnh ton hc vi Mathematica - NTTH 2016

Cc n v o lng trong thng k m t


Trong Mathematica cho php xc nh cc n v o trong Thng k m t, chng hn nh gi tr
trung bnh, im gia, phn t xut hin ph bin nht, Sau y l mt s cu lnh uc s
dng ph bin trong phn ny.
Mean[list] cho ra gi tr trung bnh ca mt dy s;
Mean[dist] cho ra gi tr trung bnh ca mt phn phi cho trc.
Median[list] - cho ra phn t gia ca list
Median[dist] - cho ra phn t gia ca phn phi dist
Commonest[list] - cho ra cc phn t xut hin nhiu ln nht trong list
Commonest[list,n] - cho ra mt dy gm n phn t xut hin nhiu ln nht trong list
RootMeanSquare[list] tnh gi tr trung bnh cn ca list
HarmonicMean[list] - tnh gi tr trung bnh iu ha ca list
GeometricMean[list] - tnh gi tr trung bnh hnh hc ca list
ContraharmonicMean[list] tnh gi tr trung bnh phi iu ha ca list
39

Lp trnh ton hc vi Mathematica - NTTH 2016


Variance[list] - phng sai ca list
Variance[dist] - phng sai ca phn phi dist
V d:
Mean[{1.12,2.04,1.01,4.2,5.27}]
Mean[UniformDistribution[{min,max}]]
Median[{1,2,3,4,5,6,7}] 4
Median[ExponentialDistribution[lamda]]
Commonest[{1,2,3,1,2,4}]
Commonest[{1,2,3,1,2,4,4,2,5},3]
RootMeanSquare[ {a,b,c,d}]
HarmonicMean[{a,b,c,d}]
GeometricMean[{a,b,c,d}]
ContraharmonicMean[{a,b,c,d}]

S sai khc khi tnh ton vi s phc


Khi tnh ton trn Mathematica chng ta thy c s sai khc:
gii thch iu .

. Hy

40

Lp trnh ton hc vi Mathematica - NTTH 2016

Nhn xt: num^(1/12) l 12 nghim ban u ca num, v 2+5I l mt trong s chng.


Php i bin trong tch phn
Tnh tch phn khng xc nh bng phng php i bin, sau th li bng lnh Integrate.

41

Lp trnh ton hc vi Mathematica - NTTH 2016

Ch : phng n trn, ta chn php i bin thng thng u=2x^3. Sau y cng l mt
phng n i bin.

Th li tnh ng n nghim ca phng trnh


Khi thay nghim tm thy vo phng trnh ban u th Mathematica khng t rt gn c, v
vy cn dng mt th thut nh rt gn v bn tri ca phng trnh, kt qu s cho gi tr
{True, True}
42

Lp trnh ton hc vi Mathematica - NTTH 2016

Ghi ch khi v th im
Khi ta v cc th im trn cng mt h trc ta th chng ta d dng phn bit chng nh
on code sau:

43

Lp trnh ton hc vi Mathematica - NTTH 2016

Tam gic Pascal


Hm pascalTriangleRow[n_] cho ra dng th n ca tam gic Pascal, s dng hm ny vit
mt mt hm khc pascalTriangle[n_] in ra n dng u tin ca tam gic Pascal theo form
tam gic.
Tm c chung ln nht ca dng th n trong tam gic Pascal, khng tnh dng u tin. Lm
nhng cng vic sau y:
-

nh ngha hm pascal(n) cho ra cc thnh phn ca dng th n tr i phn t 1.


nh ngha hm gcd(n) cho ra c chung ln nht ca cc thnh phn trong pascal(n).
Kim tra tnh cht: nu p l mt s nguyn t th GCD(p) = p.

Hng dn: Mt s hm c xy dng sn trong Mathematica, xem chi tit th Help: - Hm


Binomial: tnh nh thc - Hm GCD: cho gi tr c chung ln nht - Hm Prime: cho s
nguyn t
44

Lp trnh ton hc vi Mathematica - NTTH 2016


C th tham kho cch lm sau:

45

Lp trnh ton hc vi Mathematica - NTTH 2016

V ng h treo tng
on code sau y v mt ci ng h treo tng c 3 kim: giy, gi v pht, trn mt ng
h c chia 12 vch vi s tng ng, v tr ca 3 kim phi lun chy ng vi gi ca h thng
my tnh.

46

Lp trnh ton hc vi Mathematica - NTTH 2016

Thao tc cc biu thc i s


V d 1:

47

Lp trnh ton hc vi Mathematica - NTTH 2016


Gii thch v d 1:
u tin ta a vo mt biu thc i s,
Mathematica t ng thay i v tr 2 s hng
theo cch ring ca n.
Lnh Expand khai trin biu thc mi nhp
vo, hay ni ng hn l ph ngoc.
Chng ta c th m s hng ca mt biu thc
bng lnh Length, v mt ln na chng ta li
bt gp k hiu % - tng ng vi kt qu k
ngay trc n.
Nu mun phn tch thnh nhn t ca mt
biu thc ta dng lnh Factor, k hiu %% tng ng vi kt qu nm trc kt qu k n.
T v d trn ta nhn thy rng Expand khng
phn phi cc ly tha hu t trn tch, thay
vo chng ta c lnh PowerExpand.
V d 2:

Gii thch v d 2:

48

Lp trnh ton hc vi Mathematica - NTTH 2016


Nhp vo mt biu thc dng phn s exp, lnh Expand ch thc hin ph ngoc i vi t s,
cn mu s th ngoc vn cn nguyn.
Mun ph ht ngoc trong biu thc ta dng lnh ExpandAll, n c th khai trin tt c cc biu
thc ngay c trong Cn bc hai hay trong cc hm lng gic Sin, Cos
Lnh Together thc hin php cng cc phn s theo mt mu s chung.
Lnh Apart vit li biu thc ban u v dng tng ca cc phn s vi mu s ti tiu.
Vic phn tch a thc thnh nhn t s c thc hin bng lnh Factor.
Lnh Simplify, n tm tt c cc phng n c th vit exp v n tr v mt phng n c
cho l n gin nht trong s chng.
Ring lnh FullSimplify, n c gng bin i trong phm vi rng bao gm c cc hm c bn v
hm c bit.
Nu mun a ra biu thc trn t hay di mu mt cch ring bit, ta dng lnh Numerator v
Denominator nh trong v d.
V d 3:

Trong v d cui cng ny, chng ta nhp vo mt biu thc mi vi tn l newexp.


Lnh Collect[exp, var] th vit exp nh l mt a thc theo bin var m cc h s ca n l
nhng biu thc ca mt vi bin khc.

49

Lp trnh ton hc vi Mathematica - NTTH 2016


Vic sp xp kt qu Out[2] khng c p mt lm, v kt qu khng c sp xp theo chiu
tng ly tha ca bin x, mc d s m ca y trong cc h s li c sp xp tng dn.
C bn l, biu thc newexp ban u khng c sp xp theo ly tha ca x. Tuy nhin, nu
chng ta tp hp cc h s theo bin y th vic sp xp s c thc hin nh chng ta mong
mun, theo kt qu Out[3].
Lnh Collect cng c th s dng tp hp 2 bin mt lc, nhng trong trng hp ny, khng
c iu g khc xy ra.
C th a ra cc h s mt cc ring l bng lnh Coefficient v tm ly tha cao nht ca mt
bin bng lnh Exponent.
Mi th l mt biu thc
Nguyn t Cc biu thc s c biu din mt cch quy v s quy phi bt u t mt
ni no . Ni bt u chnh l cc nguyn t. Trong Mathematica, cc nguyn t l mi k
hiu, s hoc chui.
K hiu l mt dy cc k t v s t nhin (c th l $), khng bt u vi mt s t nhin. V d
nh a2Dd l mt k hiu.
Mt s y c ngha l mt s t nhin hoc l mt s thc.
Bn dng khc l s hu t, s nguyn Gauss, s hu t Gauss v s phc th khng phi l
nhng nguyn t.
Cui cng, chui l dy cc k t ASCII c t gia 2 du ngoc kp (A book ).
ngha ca biu thc
C mt vi cch ngh v biu thc gip chng ta s dng chng c hiu qu.
Function[argument]....................................................v d: Sin[x]
Command[argument].........................................v d: Expand[(x+y)^10]
Operator[Operands]...................................................v d: Plus[x,y]
Type[parts]..............................................................v d: List[a, b, c, d]
Dng (form) ca biu thc
Chng ta c th truy sut form bng lnh FullForm. Xem v d sau:
Biu thc
Abc
27

Head
Symbol
Integer
Rational

FullForm
abc
27
Rational[3,4]

50

Lp trnh ton hc vi Mathematica - NTTH 2016


Mt vi biu thc phc tp hn
Biu thc
x+y+z
xyz
x/y
{x, y, z}

FullForm
Plus[x, y, z]
Times[x,y,z]
Times[x, Power[y, -1]]
List[x, y, z]

Cc k hiu c bit :
Biu thc FullForm
%
Out[]
%%
Out[-2]
%5
Out[5]
_
Blank[]
x_
Pattern[x, Blank[]]
x_Integer Pattern[x, Blank[Integer]]
#
Slot
#&
Function[Slot[1]]

Cc phn ca biu thc


Xem v d sau:
exp=f[x1, x2, x3, x4];
{exp[[0]],
exp[[4]]}

exp[[1]],

exp[[2]],

exp[[3]],

{exp[[-4]], exp[[-3]], exp[[-2]], exp[[-1]]}


KQ: {f, x1, x2, x3, x4} {x1, x2, x3, x4}
Nh vy, s dng trong cp ngoc vung
tng ng vi vic m t tri sang phi, cn
s m th ngc li.

Cu trc cy ca biu thc


Chng ta th mt vi v d ly cc phn
ca biu thc exp1
exp1[[0]] .......................KQ: Plus
exp1[[1]]........................ KQ: x3
exp1[[1]][[2]] hoc exp1[[1, 2]] ..........
........... KQ: 3
exp1[[1, 2, 1]] .........................KQ: bo li
v thnh phn khng tn ti
exp1[[2, 1, 2]] .................................KQ: z

Nu biu thc qu di th chng ta s rt kh thy c dng cu trc cy ca n. Chng ta c


hai phng php xem xt c biu thc: Short v Shallow.

51

Lp trnh ton hc vi Mathematica - NTTH 2016

Short[exp, n] in biu thc ra vi chiu di l n hng.


Cc mc (level) ca biu thc, chiu su (depth) ca biu thc
C th hiu ngha t mc nh sau: theo cy cu trc trn, nh trn cng ca cy cu trc l
mc 0, hng tip theo l mc 1, v.v Cc mc c miu t bi cc s nguyn n hoc n nm
trong ngoc nhn {n}, {-n}, hoc {n1, n2} hoc Infinity.
Chng ta gi li biu thc exp1 = x^3 + (1+z)^2 trn v phn tch mt vi v d:
Level[exp1, {2}]................... KQ: {x, 3, 1+z, 2}
Kt qu cho thy rng, cc cy con c gc mc 2 cng c lit k di dng biu thc.
thy cc phn (k c cy con) ti mc 2 v cao hn (ngha l tnh lun mc 1), chng ta b i du
ngoc nhn:
Level[exp1, 2]....................... KQ: {x, 3, x^3, 1+z, 2, (1+z)^2}
Nu vit dng {n1, n2} s cho cc cy con m
gc ca chng nm gia n1 v n2.
Level[f0[f1[f2[f3[f4[f5]]]]], {2, 4}]
Chiu su ca mt biu thc l s nt ln nht
dc theo ng i t gc n l trn biu thc.
Depth[exp1]
Cng c cc mc m c s dng m t di ln. Thc cht ci c m chnh l
chiu su (depth) ca cc biu thc con.

52

Lp trnh ton hc vi Mathematica - NTTH 2016


Chng hn nh {-1} s cho cc biu thc con c
depth ng bng 1 (tc l nhng ci l ca cy cu
trc), cn -1 (khng c ngoc nhn) s cho ra tt c
cc biu thc con vi depth ti thiu l 1 (tc l, lit
k tt c cc biu thc con ng ngha).
Level[exp1, {-1}]
Level[exp1, -1]
Nu vit {-2} s cho tt c cc cy con depth bng 2,
cn -2 s cho tt c cc cy con vi depth ti thiu
bng 2.
Level[exp1, {-2}]
Level[exp1, -2]
Level[exp1, Infinity]
Mt phng trnh vi nghim chnh xc khng c tm thy

53

You might also like