You are on page 1of 46

NGÔN NGỮ LẬP TRÌNH MATHEMATICA

Chương 2. Các tính toán với các biến bằng số


2.1. Các phép toán số học
- Các phép toán số học được thực hiện đơn giản giống như đối với một máy tính bấm tay. Có
những phép toán số học cơ bản sau: “+”, “-“, “*”, “/”, “^”.
- Các công thức chứa nhiều phép toán có cấu trúc trật tự cần phải thêm các ngoặc đơn “( )”.
- Cách viết và thứ tự ưu tiên của các phép toán giống như một biểu thức số học chuẩn.
2.2 Các hằng số toán học
- Các hằng số toán học được Math đưa ra có độ chính xác tuyệt đối, có thể lấy gần đúng tuỳ ý.
Tên toán học Hằng số
Số Pi 
Số E e
Vô cùng (infinity) 
Số I ( − 1 ) I

-1-
2.3. Các hàm số cơ bản
Hàm Biểu thức toán Hàm Biểu thức toán
Sqrt[x] x Exp[x] ex
Log[x] ln(x) Log[b,x] log b x
Sin[x] sin(x) Arsin[x] arsin(x)
Factorial[n] n! Random[] Cho 1 số ngẫu nhiên giữa
Mod[n,m] phần nguyên của n/m 0,1
FactorInteger[n] Khai triển thừa số Round[x] Cho số nguyên gần x nhất
nguyên tố của n

2.4. Cách hiểu giá trị chính xác và gần đúng


- Khác với các máy tính cầm tay, thực hiện với độ chính xác hữu hạn Math coi các kết quả số
nguyên và hữu tỷ là hoàn toàn chính xác.
- Hàm N[] (Hoặc viết dạng toán tử của hàm này là Biểu thức //N) cho giá trị số gần đúng

-2-
2.5. Độ lớn và độ chính xác tuỳ chọn
Khác với tính toán số khác, Math không giới hạn ở độ lớn và chính xác của máy tính. Nó
cho phép xác định độ chính xác tuỳ chọn bằng hàm N[biểu thức, n], trong đó n là số chữ số.

2.6. Các hàm đặc biệt


Các hàm đặc biệt thông dụng của phương pháp toán lý đều được xây dựng sẵn trong Math:
LegendreP[n,x] Hàm đa thức Legendre Pn (x)
LegendreP[n,m,x] Hàm đa thức kết hợp Legendre Pnm (x)
SphericaHarmonicY[l,m,theta,phi] Hàm điều hoà cầu Yl m ( ,  )
HermiteH[n,x] Hàm đa thức Hermite H n (x)
LaguerreL[n,x] Hàm đa thức Laguerre
LaguerreL[n,a,x] Hàm đa thức Laguerre tổng quát
BesselJ[n,z] và BesselY[n,z] Hàm Bessel J n (z) và Yn (z )
Tra cứu các hàm này tại thước lệnh Help, chọn built-infunction đánh tên vào mục Goto.

-3-
2.7. Các ma trận
- Các phép toán và hàm cho vectơ:
cv : Nhân một đại lượng vô hướng c với một vectơ v.
u. v hay Dot[u,v] : Tích vô hướng của hai vectơ u và v.
u  v hay Cross[u,v] : Tích hữu hướng của hai vectơ u và v.
- Các phép toán và hàm cho ma trận:
c m : Nhân một đại lượng vô hướng c với một ma trận m.
n.m : Nhân hai ma trận n và m.
Inverse[m] : Cho ma trận nghịch đảo của ma trận m.
MatrixPower[m,k]: Cho luỹ thừa k của ma trận m.
Det[m]: Cho định thức của ma trận m
Transpose[m] : Cho ma trận chuyển vị của m.
Eigenvalues[m] : Cho trị riêng của ma trận m.
Eigenvectors[m] : Cho các vectơ riêng của ma trận m.
- Cho các phần tử của một dãy:
List[[i]] : Cho phần tử thứ i của dãy (Dãy một chiều)
-4-
List[[i,j]] : Cho phần tử thứ j của dãy con thứ i

2.8. Phương pháp đánh giá gần đúng: Bình phương tối thiểu
Một trong các ứng dụng nổi bật của Math là xử lí các số liệu thực nghiệm. Thí dụ như
trong vật lý thường phải lấy các số liệu vẽ bản đồ và đánh giá quan hệ hàm số của các đại lượng
vừa vẽ. Ở Math đã xây dựng sẵn cho ta thuật toán đánh giá gần đúng quan hệ hàm số của các
đại lượng thực nghiệm – gọi là thuật toán bình phương tối thiểu.
Hàm Fit[data,funs,vars]: Cho phép tìm quan hệ gần đúng xấp xỉ đều nhất của dãy dữ liệu số
data bằng tổ hợp tuyến tính của các hàm trong dãy funs với các biến số trong dãy var.
2.9. Số phức
Abs[z] : Cho mô đun của số phức z
Arg[z] : Cho argument của số phức z
Re[z] : Cho phần thực của số phức z
Im[z] : Cho phần ảo của số phức z
Conjugate[z] : Cho phần tử liên hợp của z

-5-
2.10. Giải gần đúng phương trình, bất phương trình và hệ phương trình
- Các phương trình dạng đa thức bậc cao (lớn hơn 3) không có lời giải giải tích tổng quát, đối
với các phương trình loại này ta phải tìm lời giải gần đúng (lời giải bằng số). Lệnh giải bằng số:
NSolve[vế trái= = vế phải, var]. Còn giải một hệ phương trình dạng đa thức tính bởi : NSolve[
 (vế trái) 1 = = (vế phải) 1 ,…  ,  var  ]
- Tìm nghiệm của phương trình hay hệ phương trình ở lân cận điểm x0
FindRoot[equs, x, x0 ] hay FindRoot[  (equs)1,…  , x, x0 1,…]
- Đối với bất phương trình ta sử dụng gói
<<Algebra`InequalitySolve`
rồi thực hiện lệnh
InequalitySolve[expr, x]
(VD: InequalitySolve[x^3-5x+1>0, x]
2.11. Tính gần đúng các tích phân, các chuỗi và các tích.
- Lệnh tính tích phân bằng số có dạng:
NIntegrate[f(x,y,…), x, xmin , xmax ]
NIntegrate[f, x, xmin , xmax , y, y min , y max  ,…]

-6-
- Lệnh tính tổng bằng số: NSum[f, imin , imax , d i  ]
- Các tích : NProduct[f, imin , imax , d i  ]
2.12. Giải gần đúng các phương trình vi phân và hệ phương trình vi phân.
- Lệnh giải phương trình vi phân bằng số: NDSolve[equs,y, x, xmin , xmax ]
- Lệnh giải hệ phương trình vi phân bằng số: NDSolve[  (equs)1,…  ,y1…, x, xmin , xmax ]
2.13. Cách tìm các cực trị của hàm số.
- Lệnh Min[x1, x2, …]: cho phần tử có giá trị nhỏ nhất trong dãy đã đưa ra. Và lệnh
Min[ x1 , x2 ,..., y1 , y 2 ,...,…]: Cho phần tử có giá trị nhỏ nhất trong các dãy đã đưa ra.
- Tương tự : Max[x1, x2, …] và Max[ x1 , x2 ,..., y1 , y 2 ,...,…]: Cho phần tử lớn nhất.
- Lệnh FindMinimum[f, x, x0 , y, y 0 ,…]: Cho giá trị cực tiểu cục bộ của f ở lân cận điểm
x0 , y0 . Ngoài ra lệnh FindMinimum[f, x, xstart, x min, x max ] Tìm giá trị cực tiểu bắt đầu từ giá
trị xstart và dừng lại khi x vượt ra ngoài khoảng giá trị xmin , xmax .
- Lệnh ConstrainedMin[f,ineqs , x, y,... ] : Tìm cực tiểu cưỡng bức- Cực tiểu toàn bộ của hàm f
với các biến x, y,... nằm trong miền giá trị cưỡng bức được mô tả bởi các bất đẳng thức ineqs
,tất cả các biến x,y,… được coi là dương.
- Tương tự ConstrainedMax[f,ineqs , x, y,... ] : Cho các cực đại cưỡng bức.

-7-
2.14. Các cấu trúc lặp
- Cấu trúc lặp Do: Do[expr, i, imin , imax , d i  .Lặp lại với i chạy từ i min đến imax với bước đi di.
- Cấu trúc lặp Table: Table[expr, i, imin , imax , d i  .Lặp lại với i chạy từ i min đến imax với bước đi di.

-8-
Chương 3. Các tính toán với các biến chữ

3.1. Biến đổi các biểu thức đại số


- Math chứa một số lớn các lệnh để biến đổi các biểu thức đại số như sau:
Apart[expr,var]: Khai triển một biểu thức dạng phân số hữu tỷ thành tổng các mẫu thức đơn
giản.
Cancel[expr]: Tối giản một phân số thành các phân số đơn giản nhất.
Collect[expr,var]: Nhóm các số hạng thành một số hạng có chung bậc của biến var.
Factor[expr]: Nhóm biểu thức expr lại thành dạng tích các thừa số nhân đơn giản nhất.
FactorTerms[expr,var]: Nhóm riêng các số hạng tự do và phụ thuộc vào biến var.
Expand[expr]: Khai triển thành dạng tổng của các số hạng.
ExpandAll[expr]: Khai triển tất cả các biểu thức con.
ExpanDenominator[expr]: Khai triển tác dụng lên mẫu số của một phân số.
ExpanNumerator[expr]: Lệnh khai triển tác dụng lên phần tử số của một phân số.
Simplify[expr]: Đơn giản hoá biểu thức.
Together[expr]: Nhóm mẫu số chung (Phép ngược của Simplify với phân số).
-9-
ComlexExpand[expr]: Khai triển expr với điều kiện là mọi biểu thức chữ đều là số thực.
PowerExpand[expr]: Khai triển các số mũ kép, loga của số mũ hay loga của tích…
FullSimplify[expr]: Cho biểu thức đơn giản nhất bằng cách áp dụng tất cả các thuật toán đơn
giản hoá và rút gọn của Math.
- Math cũng có các lệnh lấy ra một phần tử của một biểu thức đại số sau:
Coefficient[expr,form]: Cho hệ số của thừa số form trong expr.
Exponent[expr,form]: Cho số mũ lớn nhất của thừa số form trong expr.
Part[expr,n] Hoặc Expr[[n]]: Cho số hạng thứ n của expr.
Numerator[expr]: Cho tử số của một biểu thức expr (Dạng chưa biến đổi thành hữu tỷ).
Denominator[expr]: Cho mẫu số của một biểu thức expr (Dạng chưa biến đổi thành hữu tỷ).
3.2. Biến đổi các biểu thức lượng giác.
- Math có những lệnh dành riêng cho các phép biến đổi lượng giác sau:
TrigExpand[expr]: Khai triển biểu thức lượng giác thành các thừa số lượng giác (Nhưng không
làm thay đổi các hàm lượng giác).
TrigFactor[expr]: Nhóm lại thành tích các thừa.
TriReduce[expr]: Áp dụng biểu thức lượng giác của các góc bội.

- 10 -
TrigToExp[expr]: Biến đổi một biểu thức lượng giác thành dạng e mũ.
ExpToTrig[expr]: Phép biến đổi ngược của phép toán trên.

3.3. Các đơn vị đo, chuyển đổi đơn vị và các hằng số vật lý.
- Các đơn vị vật lý có thể được nối vào đuôi của các dữ liệu số trong các tính toán (Vì Math
cho phép làm việc với các biến chữ).
Ví dụ: 1.2 mét
- Trong Math có riêng một package (Gói chương trình) mô tả tất cả các đơn vị đo trong vật lý:
Miscellaneous’Units’.
Tên một vài đơn vị cơ bản: Đơn vị điện (Amp, Coulomb, Farah, Henry, Ohm, Statampere,
Statcoulomb, Stafarad, Stadhenry, StatOhm, StatVolt, Volt); Đơn vị đo khối lượng
(AtomaticMassUnit, Gram, Kilogram, MetricTon, Slug, TroyOunce); Đơn vị từ
(BohrMagneton, Gauss,Oersted, Tesla, Weber); Đơn vị đo năng lượng (BTU, Calorie,
ElectronVolt, Erg, Joule, Ryberg, Therm)….
Chuyển đổi qua lại giữa các đơn vị bằng lệnh: Convert[đvcũ, đvmới] hoặc lệnh chuyển đổi các
đơn vị đo nhiệt độ: ConvertTemperature[nhiệt độ, đvcũ, đvmới] hoặc lệnh SI[expr] chuyển đổi
expr về dạng đơn vị tương ứng trong hệ SI.
- 11 -
- Math còn có riêng một gói chương trình khác mô tả tất cả các hằng số đã có trong vật lý:
Miscellaneous’PhysicalConstant’
Ví dụ như: AccelerationDueToGravity (Gia tốc trọng trường), AgeOfUniverse (Tuổi thọ vũ
trụ), AvogadroConstant (Hằng số Avôgađrô), BorhRadius (Bán kính nguyên tử Bo), Boltzmann
Constant (Hằng số Bonxman), EarthMass (Khối lượng trái đất), EarthRadius (Bán kính trái
đất), ElectronCharge (Điện tích của electron), ElectronMass (Khối lượng electron),
GravitationalConstant (Hằng số hấp dẫn), PlankConstant (Hằng số Plank), ProtonMass (Khối
lượng proton), SpeedOfLight (Vận tốc ánh sáng), …
3.4. Gán các biến và các quy tắc biến đổi
- Math cho phép gán các giá trị tượng trưng (ký tự chữ) hay một giá trị số cho các biến bằng
cấu trúc lệnh: var = value (biến = giá trị).
Khi một giá trị mới được gán, giá trị cũ bị thay thế. Giá trị được gán này được lưu lại cho đến
khi nó được thay đổi (Bằng phép gán khác) hoặc được xoá bỏ bằng lệnh var = . hoặc hàm
Clear[var] hoặc Clear[Global].
- Một cách đơn giản khác để tránh nhầm với các biến đã được gán trước đó là việc giảm thiểu
các phép gán biến. Math có thêm một cách nữa cho phép gán giá trị cho một biến số - đó là quy

- 12 -
tắc biến đổi. Nó có cấu trúc: var -> value. Quy tắc biến đổi được áp dụng cho một biểu thức khi
đi cùng với toán tử /. Vậy cấu trúc đầy đủ: expr /. var -> value.
Ví dụ: x2+3/. -> 2
3.5. Giải phương trình.
- Khác với lệnh NSolve - giải gần đúng (Cho nghiệm bằng số-cho nghiệm dạng gần đúng),
lệnh Solve[equs,var] cho lời giải chính xác (Nghiệm số ở dạng chính xác hay dạng hàm giải
tích với các biến chữ)
- Math có một vài phụ trợ cho việc giải tích các phương trình đại số như lệnh:
Eliminate[equs,var] cho thao tác loại bớt ẩn số từ một hệ phương trình đa ẩn; Hoặc lệnh:
Reduce[equs,var] cho tất cả các nghiệm cũng như biện luận các điều kiện cho các hằng số.
3.6. Đạo hàm và tích phân
- Đạo hàm của hàm số được thực hiện bằng lệnh: D[f,x] cho đạo hàm riêng phần của hàm f theo
x. Còn lệnh: D[f, x, n ] cho đạo hàm riêng bậc n của hàm f theo x.
Lệnh: D[f,x1,x2, …] Cho đạo hàm riêng của hàm f lần lượt theo x1, x2,…
Lệnh: Dt[f,x] Cho đạo hàm toàn phần của hàm f theo x. Còn Dt[f] cho vi phân toàn phần
của hàm f.

- 13 -
- Tích phân bất định của hàm f theo x(  fdx ) cho bởi lệnh: Integrate[f,x]. Lưu ý: Tích phân bất
định trong Math không đi kèm với hằng số bất định.
x max

- Tích phân xác định của hàm f trong khoảng từ xmin đến xmax (  fdx ) cho bởi
x min
lệnh: Integrate[f, x, xmin , xmax ] và tích phân đa biến được cho bởi lệnh:
Integrate[f, x, xmin , xmax , y, y min , y max  ]
3.7. Các tổng và tích.
- Tổng trong Math cho bởi lệnh: Sum[f, i, imin , imax ] hoặc NSum[f, i, imin , imax ]
- Tổng với bước lặp di có dạng: Sum[f, i, imin , imax , d i  ] hoặc NSum[f, i, imin , imax , d i  ] .
- Tổng lồng cho bởi lệnh: Sum[f, i, imin , imax ,  j, jmin , jmax ] hoặc NSum[f, i, imin , imax ,  j, jmin , jmax ]
- Tích chuỗi cho bởi lệnh: Product[f, i, imin , imax ] hoặc NProduct[f, i, imin , imax ]
- Tích chuỗi với bước lặp di: Product[f, i, imin , imax , d i  ] hoặc NProduct[f, i, imin , imax , d i  ]
Và lệnh tích lồng: Product[f, i, imin , imax ,  j, jmin , jmax ]
hoặc NProduct[f, i, imin , imax ,  j, jmin , jmax ]

- 14 -
3.8. Khai triển chuỗi.
Lệnh : Series[f, x, x0 , n] cho khai triển của hàm f thành một chuỗi của các thành phần số mũ
của (x-x0) cho đến số mũ thứ n. Chuỗi kép cho bởi lệnh: Series[f, x, x0 , n, y, y0 , m ].
Các thành phần bậc cao có thể loại bỏ bằng lệnh Normal[] để có dạng chính tắc toán học của
biểu thức.
3.9. Các giới hạn
- Lệnh : Limit[expr, x->x0] cho giới hạn của hàm f khi x tiến dần tới x0.
- Lệnh: Limit[expr, x->x0, Direction->1] Cho giới hạn của hàm f khi x tiến dần tới x0từ phía
trái.
- Lệnh: Limit[expr, x->x0, Direction->-1] Cho giới hạn của hàm f khi x tiến dần tới x0 từ phía
phải.
3.10. Giải các phương trình vi phân.
- Lệnh: DSolve[equ, y, x] giải phương trình vi phân equ với y là hàm của x.
- Lệnh: DSolve[  equ1, equ2,…  , y1 , y 2 ,... , x] giải hệ phương trình vi phân  equi  với yi là
hàm của x.

- 15 -
- Lệnh: DSolve[equ, y[x1,x2,…], x1 , x2 ,...] giải phương trình đạo hàm riêng equ với y là hàm
của xi 

3.11. Gán tức thời hay trì hoãn các biến và các quy tắc biến đổi
- Lệnh: var = value gọi là gán tức thời giá trị value cho biến var.
- Lệnh: var: = value gọi là gán trì hoãn giá trị value cho biến var (biến var được gán giá trị
value chỉ khi nó được gọi trong quá trình tính toán, chứ không phải ngay sau câu lệnh gán được
thực hiện).
Tương tự: expr/.vế trái-> vế phải và expr/.vế trái :> vế phải
3.12. Định nghĩa hàm số
- Xác định hàm số: Từ việc định nghĩa các phép toán có trì hoãn Math đưa ra cách định nghĩa
hàm số bằng cấu trúc: Tênhàm[biến1,biến2,…]:= expr
Ví dụ: f[x]:= x3 +1
Nếu ta gọi hàm f(x) bằng cách :
f[x]
x3+1

- 16 -
tuy nhiên nếu ta gọi hàm f[y] hay f[z] lại không cho kết quả mong muốn. Để có được điều này
ta có thể thay x bằng x_. Tức là: Tênhàm[biến1_,biến2_,…]:= expr

3.13. Các toán tử và quan hệ logíc


- Các toán tử trong Math so sánh hai biểu thức logic và trả về kết quả True (đúng) hay False
(sai).
Toán tử Tác dụng (Dạng hàm số)
vế trái = = vế phải Cho True nếu vế trái và vế phải bằng nhau
vế trái ! = vế phải Cho false nếu vế trái và vế phải bằng nhau
vế trái > vế phải Cho True nếu vế trái lớn hơn vế phải
vế trái >= vế phải True nếu vế trái lớn hơn hoặc bằng vế phải
vế trái < vế phải Cho True nếu vế trái nhỏ hơn vế phải
vế trái <= vế phải True nếu vế trái nhỏ hơn hoặc bằng vế phải
x= =y = =z Cho True nếu tất cả đều bằng nhau
x!=y!=z Cho true nếu tất cả đều không bằng nhau
x >y >z Cho true nếu giảm dần đều
- 17 -
- Math có các toán tử lôgic như Not, And,Or, Xor.
Toán tử Tác dụng (Dạng hàm số)
!expr Cho True nếu expr-False
expr1&&expr2&&… Cho False nếu có một expr bất kỳ nào False
expr1||expr2||… Cho true nếu có bất kỳ một expr nào True
Xor[expr1,expr2,…] Cho True nếu có một số lẻ các expr -True
If[expr,then,else] Cho biểu thức then nếu expr-True và else nếu expr-False
LogicalExpand[expr] Khai triển biểu thức lôgic expr

3.14. Các phép biến đổi Fourie


Phép biến đổi Fourie được sử dụng trong nhiều lĩnh vực khác nhau như các hệ tuyến tính,
cơ học lượng tử, quang học, trong xử lý ảnh, các quá trình ngẫu nhiên, lý thuyết xác suất và các
bài toán giá trị biên. Sau đây là sơ lược phép biến đổi Fourie.
Phép biển đổi Fourier của một hàm số f(x) là một hàm số theo biến số u:
1
+
 a 2
g(  ) =    f (t )e −ia .t dt
 2  −
- 18 -
1
+
và biến đổi ngược của hàm g(  ): f(t) =    g ( )e −ia .t d
a 2
 2  −
- Các lệnh biến đổi Fourier trong Math:
+ FourierTransform[f[t], t,  ]: Biến đổi Fourier thuận.
+ InverseFourierTransform[g[  ],  , t]: Biến đổi Fourier thuận.
- Ngoài dạng biến đổi Fourier tổng quát Math còn hỗ trợ cả dạng biến đổi Fourier theo hệ hàm
Sin và Cos:
+ FourierSinTransform[f[t], t,  ]: Biến đổi Fourier thuận theo hàm Sin
+ FourierCosTransform[f[t], t,  ]: Biến đổi Fourier thuận theo hàm Cos
+ InverseFourierSinTransform[f[t], t,  ]: Biến đổi Fourier ngược theo hàm Sin
+InverseFourierCosTransform[f[t], t,  ]: Biến đổi Fourier ngược theo hàm Cos
Math cũng cho phép thức hiện biến đổi Fourier đa biến:
+ FourierCosTransform[expr, t1 , t 2 ,..., 1 ,  2 ,... ]: Biến đổi Fourier thuận theo hàm Cos
+ InverseFourierCosTransform[expr, t1 , t 2 ,..., 1 ,  2 ,... ]: Biến đổi Fourier ngược theo hàm
Cos
- Math có sẵn cả 3 dạng chuỗi Fourier( Dạng e mũ, dạng chuỗi Cos và chuỗi Sin):

- 19 -
+FourierExpSeries[expr, x, xmin , xmax ,n] :cho chuỗi khai triển Fourier đến bậc thứ n
và FourierTrigSeries[expr, x, xmin , xmax ,n] :cho chuỗi khai triển Fourier đến bậc thứ n
Các lệnh sau cho riêng hệ số Fourier thứ n trong chuỗi khai triển:
- FourierExpSeriesCoefficient[expr, x, xmin , xmax ,n]
- FourierSinSeriesCoefficient[expr, x, xmin , xmax ,n]
- FourierCosSeriesCoefficient[expr, x, xmin , xmax ,n]
3.15. Giải tích vectơ.
- Hệ toạ độ: Trong Math một hệ toạ độ được mô tả bằng cấu trúc Tênhệ[cáctoạđộ].
Ta xét một vài hệ toạ độ thường gặp trong vật lý:
+ Hệ toạ độ Đêcac : Cartesian[x, y, z]
+ Hệ toạ độ trụ: Cylindrical[r, theta, z]
+ Hệ toạ độ cầu: Spherical[r, theta, phi]
Ngoài ra còn có tất cả các hệ toạ độ toán học khác như:
Hệ trụ parabol ParabolicCylindrical[u, v, z]; Hệ paraboloid Paraboloidal[u, v, phi]; Hệ trụ elip
EllipticCylindrical[u, v, z, a]; Hệ phỏng cầu dài: ProlateSpheroidal[xi, eta, phi, a]; Hệ cầu dẹt:

- 20 -
OblateSpheroidal[xi, eta, phi, a]; Hệ lưỡng cực: Bipolar[u, v, z, a]; Hệ cầu đôi:
Bispherica[u,v,phi,a]; Hệ nón: Conical[lambda, mu, nu, a, b];…
Lệnh {CoordinateSystem,Coordinates) Cho biết hệ toạ độ mặc định hiện hành.
Lệnh SetCoordinates[tênhệ[toạ độ 1, toạ độ 2, toạ độ 3]] Đặt lại hệ toạ độ mặc định.
Lệnh CoordinatesToCartesian[toạ độ chất điểm, tên hệ] Chuyển đổi hệ toạ độ sang hệ Đêcac.
Lệnh CoordinatesFromCartesian[toạ độ chất điểm, tên hệ] Chuyển đổi từ hệ Đêcac sang.
Lệnh CoordinateRanges[tênhệ] Cho khoảng giới hạn của các toạ độ.
Lệnh ArcLengthFactor[  f1 , f 2 , f 3  , t, hệ toạ độ] Cho đạo hàm trên cung  f1 , f 2 , f 3  theo biến toạ t
trong hệ toạ độ.
Lệnh JacobiânMatrix[toạ độ chất điểm, tên hệ] Cho định thức của ma trận Jacobian.
- Các phép toán trong giải tích vectơr.
→ →
Lệnh: DotProduct[ v1 , v 2 ,hệ toạ độ] Cho tích vô hướng của hai vectơ trong hệ toạ độ.
→ →
Lệnh: CrossProduct[ v1 , v 2 ,hệ toạ độ] Cho tích hữu hướng của hai vectơ trong hệ toạ độ.
→ → →
Lệnh ScalarTripleProduct[ v1 , v 2 , v3 ] Cho tích vô hướng kép của 3 vectơ (Có giá trị bằng thể tích
khối hình bình hành tạo bởi 3 vectơ).
Lệnh: Grad[f,hệtoạđộ] Cho gradient của một hàm f vô hướng trong hệ toạ độ,

- 21 -

Lệnh: Div[f,hệ toạ độ] Cho divergence trường vectơ f trong hệ toạ độ.

Lệnh: Div[f, hệ toạ độ] Cho vectơ Rot của trường vectơ f trong hệ toạ độ.
Lệnh: Laplacian[f,hệ toạ độ] Cho laplacian của hàm f vô hướng (  2 f ) trong hệ toạ độ.
-Lệnh: Biharmonic[f, hệ toạ độ] Cho laplacian của Laplacian của hàm f vô hướng (  2 ( 2 f ) )
trong hệ toạ độ.

- 22 -
Chương 4. Các khả năng đồ hoạ
4.1.Đồ thị hai chiều
Lệnh: Plot[f, x, xmin , xmax ] Vẽ đồ thị hai chiều của hàm f(x) với x chạy từ xmin đến xmax.
Lệnh: Plot[  f1 , f 2 ,..., x, xmin , xmax ] Vẽ đồng thời đồ thị của các hàm  f1 , f 2 ,... với x chạy từ xmin
đến xmax.
Ngoài ra còn có các lệnh dùng để vẽ đồ thị nghiệm các phương trình vi phân được giải gần
đúng (giải bằng số): Plot[y[x]/.nghiệm, x, xmin , xmax ] hoặc Plot[Evaluate[y[x]/.nghiệm],
x, xmin , xmax ]
4.2. Các tuỳ chọn của đồ thị hai chiều
- Lệnh Options[Plot]: Cho ta liệt kê các tuỳ chọn và các giá trị mặc định gán sẵn cho lệnh đó.
Lệnh này đúng với tất cả các đối tượng, lệnh tổng quát: Options[Đối tượng].
Bảng sau mô tả các tuỳ chọn quan trọng chung cho các lệnh vẽ đồ thị:
Lệnh Tác dụng
Aspecratio tỷ lệ chiều cao/chiều rộng
Axes Đặt tự động cho các giá trị cực đại của x và y bao gồm các trục toạ độ
AxesLabel Nhãn cho các trục; Cú pháp: AxesLabel->{”nhãn x”,”nhãn y”}

- 23 -
AxesOrigin Điểm cắt của hai trục; AxesOrigin->  x,y 
TextStyle Kiểu mẫu cho text trong đồ thị (Dạng Text: title, subtile,section,text,…)
FormatType Kiểu mẫu cho định dạng text( Input, Output, Traditional)
DisplayFunction Cách hiển thị đồ thị (Không hiển thị:->Identity)
Frame Có hay không có khung viền. Có -> True.
FrameLabel Có hay không có nhãn cho khung;->  ”nhãn 1”,”nhãn 2”,…  . Nhãn
được đặt xung quanh 4 cạnh theo chiều kim đồng hồ từ trên cao.
GridLines Vẽ các đường lưới cho mỗi chỗ đáng dấu trên trục toạ độ của đồ thị.
PlotLabel Nhãn của đồ thị;->StylForm[“nhãn”,”dạng text”,FonFamily-
>”font”,FontSize->n]
Ticks Các điểm đánh dấu trên đồ thị
FrameTicks Các điểm đánh dấu trên khung viền
PlotRange Khoảng toạ độ hiển thị;-> y min , y max 
PlotStyle Kiểu vẽ: Grayleve[i] Cho độ xám i; Thickness[r] Cho độ dày của đường
đồ thị; RGBColor[r,g,b] Cho mầu của đồ thị.
Background Cho mầu nền đồ thị
- 24 -
DefaultColor Mô tả mầu mặc định của toàn đồ thị
Prolog Vẽ thêm vào đồ thị một đối tượng đơn giản trước đồ thị chính với mục
đích đánh dấu hoặc so sánh;->g (đồ thị g).
PlotPoints Số điểm tối thiểu để lấy mẫu cho đồ thị
MaxBend Góc vặn tối đa cho 2 đoạn đồ thị.
PlotDivision Số phần tử tối đa để chia nhỏ hơn nữa trong phép làm liền nét đồ thị trong
khi lấy mẫu để vẽ đồ thị.
4.3. Đồ thị hai chiều nâng cao.
- Vẽ lại các đồ thị, vẽ chèn các đồ thị:
Lệnh: Show[g1, g2, …, tuỳ chọn] Vẽ lại một hay nhiều đồ thị (g 1, g2, …,) đã thực hiện trước đó
mà chưa chưa được hiển thị ra hoặc bổ sung các lựa chọn
Lệnh Show[GraphicsArray[ g1 , g 2 ,...]] Hiển thị dãy đồ thị g1 , g 2 ,... thành một hàng liên tục.
Lệnh : Show[GraphicsArray[ g1  , g 2  ,…]] Hiển thị dãy đồ thị g1 , g 2 ,... thành một cột.
Lệnh: Show[GraphicsArray[ g1 , g 2 ,......]] Hiển thị dãy đồ thị g1 , g 2 ,...... thành một bảng chữ
nhật các đồ thị.
Tuỳ chọn GraphicsSpacing-> h, v Cho khoảng cách giữa các đồ thị.

- 25 -
- Giải phương trình bằng đồ thị.
Phương trình cần có sự trợ giúp của đồ thị khi không giải được bằng các thuật toán NSolve[]
hoặc khó tìm được điểm bắt đầu cho thuật toán FindRoot[].
Ví dụ: NSolve[Sin[x]= = x2,x]
Phương trình này không giải số được nên trước hết ta vẽ đồ thị của hai vế phương trình. Sau đó
ta thực hiện tiếp một số bước sau:
1. Nháy vào đồ thị (điểm bất kì) bằng phím chuột trái cho hiện khung vuông.
2. Giữ đồng thời CTRL hiện dấu + , ngắm chữ thập vào giao điểm hai đồ thị, nháy chuột trái.
3. Coppy bằng CTRL+C; đưa con trỏ xuống dưới đồ thị và thực hiện lệnh Paste bằng CTRL+V;
ta được toạ độ giao điểm.
Plot[{Sin[x],x^2},{x,-0.5,1.5}];

- 26 -
2

1.5

0.5

-0.5 0.5 1 1.5

-0.5 {0.875942, 0.796525}


Ta tìm được nghiệm phương trình với độ chính xác bằng mắt thường. Thế vào giá trị điểm bắt
đầu cho lệnh FindRoot[] ta sẽ được độ chính xác tuỳ chọn.
FindRoot[Sin[x]==x^2,{x,0.875942}] {x -> 0.876727}
- Đồ thị theo tham số.
Lệnh: ParametricPlot[ f x , f y , t , a, b ] Cho đồ thị theo tham số t trong khoảng [a,b] của hàm f.
Lệnh: ParametricPlot[  f x , f y , g x , g y …  , t , a, b ] Vẽ đồng thời vài đồ thị theo tham số t.
- Đồ thị đường viền và đồ thị mật độ.
ContourPlot[f, x, xmin , xmax , y, y min , y max  ]: Cho đồ thị của các đường cắt của các mặt xác định
bởi hàm số f(x,y) với mặt phẳng song song với mặt phẳng [xoy]. Ý nghĩa vật lý của nó là đồ thị
của các đường đẳng thế với f(x,y) là hàm thế.
- 27 -
Các tuỳ chọn của lệnh này như sau:
Tuỳ chọn Tác dụng
ColorFunction- Màu để chỉ định cho tạo bóng
>RGBColor[]
Contours->n Số đường viền đựơc vẽ (mặc định là 10)
PlotRange-> xmin , xmax  Khoảng vẽ
ContourShading Tạo bóng cho đồ thị bằng các độ xám khác nhau
DensityPlot[f, x, xmin , xmax , y, y min , y max  ]: Cho đồ thị mật độ của hàm f(x,y). Nó thể hiện hàm f
bằng một dãy các điểm đều nhau (Cùng giá trị f(x,y) có cùng độ xám). Vùng nào sáng mầu hơn
sẽ có cao độ (giá trị hàm f(x,y)) cao hơn. Các tuỳ chọn của lệnh này như sau:
Tuỳ chọn Tác dụng
ColorFunction->Hue Math sẽ sử dụng một dãy phổ sắc cầu vồng để tạo độ bóng
Mesh Có (hay không) vẽ đường lưới
PlotPoints Lấy số điểm mẫu tính theo mọi hướng
- Đồ thị trường vectơ.

- 28 -
Trong Math có một chương trình con Graphics’Plotfield’ vẽ đồ thị của một trường vectơ. Bao
gồm các lệnh sau:
Lệnh Tác dụng

PlotVectorField[fx,fy, x, xmin , xmax , y, y min , y max  ] vẽ trường f
PlotGradientField[f[x,y], x, xmin , xmax , Vẽ trường gradient của hàm vô hướng f(x,y)
y, y min , y max  ]

PlotHamiltonianField[f[x,y], x, xmin , xmax , Vẽ trường Hamiltonian( Hf ) của hàm vô
y, y min , y max  ] hướng f(x,y)
Các tuỳ chọn bao gồm:
Tuỳ chọn Tác dụng
ScaleFactor Chỉnh tỷ lệ lại các vectơ sao cho đó là chiều dài của vectơ dài nhất
ScaleFunction Hàm để chỉnh lại độ phóng đại của các véctơ
MaxArrowLength Cho độ dài của vectơ lớn nhất
4.4. Đồ thị dữ liệu hai chiều.
- Các dữ liệu dạng bảng hoặc một bảng các cặp toạ độ được biểu thị bằng đồ thị dữ liệu. Bao
gồm các lệnh và tuỳ chọn:

- 29 -
Lệnh Tác dụng
LitsPlot[ y1 , y 2 ,...] Vẽ dãy các giá trị y với x lần luợt 0,1,…,n
LitsPlot[ x 1 , y 1 , x 2 , y 2 ,...] Vẽ dãy các điểm có toạ độ xi , yi ,...
Tuỳ chọn Tác dụng
PlotJoined Có nối các điểm lại không(mặc định: False)
PlotStyle Cho cấu trúc của điểm dữ liệu hoặc đường nối các điểm được
vẽ ra
Ngoài ra còn các lệnh LisContourPlot[array]: cho đồ thị đường viền của dãy các độ cao array.
Lệnh LitsDensityPlot[array]: cho đồ thị mật độ của dãy các độ cao.
4.5. Đồ thị ba chiều.
- Đồ thị mặt ba chiều.
Lệnh Tác dụng
Plot3D[f[x,y], x, xmin , xmax , y, y min , y max  ] Vẽ đồ thị với x, xmin , xmax , y, y min , y max 
Plot3D[  f , s, x, xmin , xmax , y, y min , y max  ] Vẽ đồ thị mặt f với đọ bóng s thay đổi theo độ cao
Plot3D[  f , Hues , x, xmin , xmax , Vẽ đồ thị mặt có ánh sắc thay đổi theo độ cao
y, y min , y max  ]
- 30 -
- Các tuỳ chọn của lệnh này:
Tuỳ chọn Tác dụng
Boxed Có(hay không) vẽ hộp 3 chiều
FaceGrid Có(hay không) vẽ các đường lưới trên mặt;->All vẽ tất cả các hướng
Lighting-> Bỏ tô màu,chỉ có các độ xám
ViewPoint Chọn các hướng từ đó ta thấy đồ thị;VD: 0,−2,2nhìn từ phía trước và trên
xuống
- Chuyển đổi qua lại giữa các đồ thị.
Math cho phép chuyển đổi qua lại giữa các đồ thị bề mặt  đồ thị đường viền  đồ thị mật độ
của cùng một hàm g(x,y) bằng các lệnh:
Lệnh Tác dụng
Show[ContourGraphics[g]] Chuyển đồ thị g đã được vẽ hoặc đã thực hiện sang đường viền
Show[DersityGraphics[g]] Sang dạng đồ thị mật độ
Show[SurfaceGraphics[g]] Chuyển từ hai dạng trên thành dạng đồ thị bề mặt
Show[Graphics[g]] Chuyển thành dạng hình bề mặt
- Đồ thị tham số 3 chiều cho bởi các lệnh sau:
- 31 -
Lệnh Tác dụng
ParametricPlot3D[ f x , f y , f z , t , a, b ] Vẽ đồ thị tham số một đường 3 chiều
ParametricPlot3D[ f x , f y , f z , t , a, b , u, c, d  ] Vẽ một mặt 3 chiều
ParametricPlot3D[ f x , f y , f z , s,…] Đồ thị tham số có độ bóng s
ParametricPlot3D[  f x , f y , g x , g y …  , t , a, b ] Vẽ đồng thời một vài đồ thị trên một hình
- Đồ thị dữ liệu 3 chiều.
Lệnh: LitsPlot3D[array] Cho đồ thị dữ liệu của mảng array.
Lệnh: LitsPlot3D[array,s] Cho đồ thị dữ liệu của mảng array có độ bóng s.
4.6. Một vài dạng đồ thị đặc biệt.
- Dạng đồ thị đặc biệt được mô tả trong chương trình Graphics’Graphics’. Một vài dạng chính
như sau:
Lệnh: LogPlot[f, x, xmin , xmax ] vẽ đồ thị trên thang tỷ lệ Log10 cho hàm f với mục đích xác định
dáng điệu cường độ cong f hoặc trải phẳng các đồ thị (nhất là các hàm dạng đa thức). Cùng
dạng này có:
LogLogPlot[f, x, xmin , xmax ]; LogLinearPlot[f, x, xmin , xmax ] và
LogLitsPlot[  x1 , y1  , x 2 , y 2 ,…  ]

- 32 -
Lệnh: PolarPlot[r, t , t min , t max ] Đồ thị r(t) vẽ trên hệ toạ độ cực.
Lệnh: SphericalPlot3D[r,  , min , max ,  ,  min ,  max ] vẽ đồ thị quan hệ hàm số r = r ( ,  ) trong
hệ toạ độ cầu.
Lệnh: CylindricalPlot3D[z, r,  , min , max ] vẽ đồ thị z = z (r , ) trong hệ toạ độ trụ.
Lệnh: ErrorLitsPlot[  x1 , y1 , dy1  ,…  ] đồ thị dữ liệu thực nghiệm có sai số dy1.
Lệnh: TextLitsPlot[  x1 , y1 , s ,…  ] vẽ đồ thị các điểm dữ liệu có nhãn văn bản s.
- Vẽ các biểu đồ cột và biểu đồ tròn:
BarChart[lits]: Đồ thị dạng thanh của dãy dữ liệu lits.Các biến thể của nó StackedBarChart[] :
Cho thanh chồng lên nhau; PercentileBar[]: Thanh phần trăm có tổng số bằng 1;
GeneralizedBarChart[]
- Các tuỳ chọn chung là: BarOrientation Cho chiều của thanh (đứng hay nằm); BarStyle- Kiểu
của thanh; BarLabel- Nhãn của thanh; BarEdges-Đường biên của thanh.
PieChart[lits] Đồ thị dạng miếng táo (cung tròn). Các tuỳ chọn: PieStyle; PieLineStyle;
PieLabel; PieExploded…
- Đồ thị này có các hàm: DisplayTogether[plot1, plot2, …, tuỳ chọn] Tập hợp các ploti vào cùng
một đồ thị; DisplayTogetherArray[plotaray, tuỳ chọn] Tập hợp tất cả các đồ thị trong dãy
plotarray vào một dãy (hàng ngang) các đồ thị.
- 33 -
4.7. Các hiệu ứng hoạt họa.
- Các hiệu ứng này được Math thể hiện trên màn hình bằng cách cho chạy một dãy các đối
tượng đồ thị kế tiếp nhau.
1. Bước đầu tiên ta phải có dữ liệu cho việc trình diễn “đoạn phim hoạt hoạ” bằng cách vẽ liên
tiếp các đối tượng đồ thị này trên màn hình. Bằng các lệnh: Table[Plot…] hoặc cấu trúc lệnh
Do[Plot…].
2. Ta nhóm các đối tượng này thành một nhóm(group) bằng thước lệnh Cell\Cell Grouping\
Group Cells(phím tắt CTRL+G).
3. Cho chạy hoạt hoạ bầng thước lệnh Cell\ Animate Selected Graphics (phím tắt CTRL+Y).
Có thể thay đổi các tham số trình chiếu đoạn hoạt hoạ trên bằng các thước lệnh Format\Option
Inspector (phím tắt Shift+CTRL+G); Chọn tiếp Graphics Options\ Animation đạt lại các tham
số AnimationDisplayTime (Thời gian cho hiện khung hình).
**Ngoài ra Math còn có một chương trình con Graphics’Animation’ cho phép thực hiện các
khuôn hình hoạt hoạ. Các lệnh như sau:
- Animate[plot, t , t min , t max , dt] vẽ đồ thị hàm plot thực hiện luôn trình chiếu khuôn hình.
- ShowAnimation[ g1 , g 2 ,... ] trình chiếu các khuôn hình hoạt hoạ dãy g i 
Trong nhóm này còn co các lệnh khác:
- 34 -
+ MoviePlot[f[x,t], x, xmin , xmax , t , t min , t max ]
+ MoviePlot3D[f[x,y,z,t], x, xmin , xmax , y, y min , y max  , t , t min , t max ]
+ MovieDensityPlot[f[x,y,z,t], x, xmin , xmax , y, y min , y max  , t , t min , t max ]
+ MovieContourPlot[f[x,y,z,t], x, xmin , xmax , y, y min , y max  , t , t min , t max ]
+ MovieParametricPlot[  f [ s, t ], g[ s, t ] , s, smin , smax  , t , t min , t max ]
+ SpinShow[graphics]

- 35 -
Chương 5. Dãy số và chuỗi số

5.1. Xác định một dãy


Định nghĩa: Dãy (tiếng anh là List) là tập hợp các đối tượng của Math được phân cách nhau
bằng dấu phẩy và nhóm lại bằng dấu ngoặc nhọn. Trong đó các đối tượng có thể là các số, ký
tự, xâu lý tự, hàm, phương trình, quy tắc biến đổi.
VD: x, x 2 , x 3 ; 2,4,6….

5.2. Tạo, hiển thị và xác định kích thước các dãy
- Tạo một dãy.
Các lệnh tạo một dãy (ngoài cách đưa trực tiếp từ bàn phím) bao gồm một số cấu trúc sau:
Lệnh Tác dụng
Table[expr, imax ] Tạo dãy gồm các phần tử là imax lần biểu thức expr
Table[expr, i,imax ] Tạo dãy có phần tử là giá trị của expr với i chạy từ 1 đến imax
Table[expr, i, imin , imax , di] i chạy imin đến imax với bước nhảy di
Table[expr, i, imin , imax , di Dãy lồng gồm i nhân j phần tử
- 36 -
,  j , j min , j max , dj,…]
Range[ imax ] Tạo dãy 1,2,..., imax 
Range[imin , imax] Tạo dãy imin , imin + 1,..., imax 
Table[ i, imin , imax , di] Tạo dãy imin , imin + di,..., imax 
Array[f,n] Tạo dãy n phần tử có các phần tử là f[i]
Array[f, n1 , n2 ,...] Tạo dãy lồng n1  n2  ... có các phần tử là f[i1, i2,…]
Array[f,dims, origin] Tạo một dãy có dims phần tử, sử dụng cách đánh số origin
(mặc định là 1)
- Hiển thị và xác định kích thước một dãy.
Các hàm cho hiển thị dãy:
Lệnh Tác dụng
ComlunForm[list] Hiển thị cả các phần tử của dãy list theo một cột
MatrixForm[list] Cho hiển thị các phần tử của dãy list dưới dạng một ma trận chính tắc cùng
kích thước
TableForm[list] Hiển thị các phần tử của dãy list dưới dạng bảng chữ nhật có cùng kích
thước
- 37 -
Length[list] Cho số phần tử của dãy list
Dimensions[list] Cho dãy các chiều của dãy list
- Vectơ và ma trận.
Lệnh Tác dụng
Inverse[m] Cho ma trận nghịch đảo của ma trận m
Det[m] Cho định thức của ma trận m
Transpose[m] Cho ma trận chuyển vị của ma trận m
Eigenvalues[m] Cho các giá trị riêng của ma trận m
Eigenvector[m] Cho các vectơ riêng của ma trận m
IdentityMatrix[n] Tạo một ma trận đơn vi n  n. chiều
DiagonalMatrix[list] Tạo một ma trận đã chéo hoá

5.3. Thu nhận các phần tử của dãy và dãy con


Các hàm lấy ra một (hoặc một số) phần tử của dãy bao gồm:
- Lấy ra một hoặc một số phần tử của dãy một cách có trật tự:

- 38 -
Lệnh Tác dụng
First[list] Cho phần tử đầu tiên của dãy list
Last[list] Cho phần tử cuối cùng của dãy list
Take[list, n] Tạo một dãy gồm n phần tử đầu tiên của dãy list
Take[list, m, n] Tạo một dãy gồm các phần tử thừ thứ m đến thứ n(m<n)
Rest[list] Cho list không có phần tử đầu tiên
Drop[list,n] Cho dãy list không có n phần tử đầu tiên
Drop[list, m, n] Cho dãy list không có các phần tử từ thứ m đến thứ n
- Lấy ra một hoặc một số phần tử đơn lẻ bất kỳ:
Lệnh Tác dụng
Part[list, n] Cho phần tử thứ n của dãy list
Part[list, i, j, …] Cho phần tử thứ i, j của dãy list
Extract[list, i, j,...] Tách ra phần tử tại vị trí i, j,... của dãy list
Part[list, n1 , n2 ,...] Tạo một dãy gồm các phần tử thứ n1, n2…của dãy list
Extract[list, Tạo một dãy gồm các phần tử tại các vị trí i1 , j1 ,..., i2 , j 2 ,...,... của dãy
i1 , j1 ,..., i2 , j2 ,...,...] list
- 39 -
- Các hàm để thử các phần tử hay các dãy con của một dãy:
Lệnh Tác dụng
Position[list, form] Chỉ ra vị trí của dãy mà tại đó cấu trúc form có mặt trong dãy list
Count[list, form] Chỉ ra số lần mà cấu trúc form có mặt trong dãy list
MemberQ[list, form] Kiểm tra xem form có là phần tử của list không
FreeQ[list, form] Kiểm tra xem dãy list có không chứa phần tử là form hay không
Select[list, criterion] Lấy ra tất cả các phần tử của dãy list mà điều kiện criterion là true
Select[list, criterion,n,] Lấy ra n phần tử đầu tiên của dãy list mà điều kiện criterion là true.
5.4. Thay đổi các dãy và các phần tử của dãy con.
Các thao tác để thay đổi một dãy gồm thêm, bớt, chèn thêm phần tử vào một dãy.
Lệnh Tác dụng
Prepend[list, elem] Chèn thêm phần tử elem vào dãy list
Append[list, elem] Chèn thêm phần tử elem vào dãy list
Insert[list, elem, i] Chèn thêm phần tử elem vào vị trí thứ i của dãy list
Insert [list, elem, i, j,...] Chèn thêm phần tử elem vào vị trí i, j,...của dãy list

- 40 -
Delete[list, i] Xoá phần tử thứ i của dãy list
Delete[list, i, j,...] Xóa phần tử i, j,... của dãy list
Delete[list, i1 , j1 ,..., i2 , j 2 ,...,...] Xoá đi các phần tử thứ i1 , j1 ,..., i2 , j 2 ,...,...
ReplacePart[list, elem, i] Thay thế phần tử thứ i của dãy list bằng phân tử elem
ReplacePart[list, elem, i, j,...] Thay thế phần tử thứ i, j,... của dãy list bằng phân tử elem
ReplacePart[list, elem, Thay thế phần tử thứ i1 , j1 ,..., i2 , j 2 ,...,... của dãy list bằng
i1 , j1 ,..., i2 , j2 ,...,...] phân tử elem
5.5. Xắp xếp lại các dãy
Các lệnh xắp xếp lại các dãy có:
Lệnh Tác dụng
Sort[list] Xắp xếp lại các phần tử của dãy list theo thứ tự chính tắc (Thứ thự bảng
chữ cái, tăng dần)
Union[list] Cho dạng tối giản của dãy list(Tất cả các phần tử lặp lại bị giản ước hết)
Reverse[list] Đảo ngược lại thứ tự xắp xếp các phần tử của dãy list
RotateLeft[list] Dịch thứ tự xắp xếp các phần tử của dãy list một bước về bên trái. (thứ 2-
> thứ 1;…thứ 1 -> thứ n)
- 41 -
RotateLeft[list, n] Dịch trái n bước
RotateRight[list] Dịch thứ tự xắp xếp các phần tử của dãy list một bước về bên phải. (thứ
1-> thứ 2;…thứ n -> thứ 1)
RotateRight[list, n] Dịch phải n bước
Permutation[list] Tạo một dãy gồm tất cả các khả năng hoán vị của các phần tử của dãy list
5.6. Cấu trúc lại các dãy.
Các lệnh cấu trúc lại (Tổ chức lại) một dãy gồm:
Lệnh Tác dụng
Partition[list, n] Phân mảng lại dãy list thành các dãy con có chiều dài là n phần tử
Partition[list, n, d] Phân mảng lại dãy list thành các dãy con có chiều dài là n phần tử
và có độ giao nhau là d(có chung nhau d phần tử)
Transpose[list] Hoán vị 2 tầng đầu tiên của dãy list
Flatten[list] Trải phẳng các cấu trúc lồng vào nhau của dãy list
FlattenAt[ list,i] Trải phẳng các cấu trúc lồng vào nhau của dãy con đứng ở vị trí i
của dãy list
FlattenAt[list, i, j,...] Trải phẳng các cấu trúc lồng vào nhau của dãy con đứng ở vị trí
- 42 -
i, j,... của dãy list
FlattenAt[list, Trải phẳng các cấu trúc lồng vào nhau của dãy con đứng ở vị trí
i1 , j1 ,..., i2 , j2 ,...,...] i1 , j1 ,..., i2 , j2 ,...,... của dãy list
5.7. Liên kết các dãy
Các lệnh liên kết các dãy thành một dãy gồm có:
Lệnh Tác dụng
Join[list1, list2, …] Nối các dãy list1, list2,… thành một dãy chung
Union[list1, list2, …] Hợp nhất các dãy list1, list2,…thành một dãy chung chỉ gồm các
phần tử khác nhau
Intersection[list1, list2, …] Tạo một dãy list gồm các phần tử chung(giao) của các dãy
Complement[listall, list1, Tạo một dãy gồm các phần tử có trong dãy listall nhưng không
list2, …] có trong tất cả các dãy list1, list2,… còn lại
5.8. Xử lí các dãy
- Thuộc tính (attribute) kết dãy được (listable) của các hàm số của Math. Đối với các hàm số
đựơc xây dựng sẵn trong Math đều là loại kết dãy được. Điều này có nghĩa là có thể tác dụng
lên các dãy một cách tách biệt-giống như tác dụng lên từng phần tử của dãy.

- 43 -
Ví dụ:
Table[xi, {i,4}]
{x, x2 , x3 , x4 }
D[%,x] (Cho đạo hàm của dãy- bằng dãy các đạo hàm của từng phần tử)
{1, 2 x, 3 x2 , 4 x3 }
Để biết một hàm có những thuộc tính gì ta có lệnh: Attributes[Tênhàm]. Còn để đặt lại một
thuộc tính của dãy ta dùng lệnh: SetAttributes[f, attr]. Xoá bỏ thuộc tính bằng lệnh:
ClearAttributes[f, attr].
- Tác dụng hàm không kết được dãy lên được dãy (tác dụng “ có địa chỉ”)
Một cách khác để tác dụng lên các phần tử của dãy một hàm số thuộc loại không kết dãy được
là sử dụng hàm Map[f,list]. Và câu lệnh tổng quát: Map[f,list, level] Tác dụng hàm f lên dãy list
ở mức level.
- Có thể chỉ tác dụng một hàm f không kết dãy hoặc kết dãy được lên một hoặc một vài phần tử
riêng lẻ của một dãy bằng lệnh: MapAt[f,list,n] (hoặc MapAt[f,list, i, j,...]). Có thể sử dụng
các phần tử của một dãy như là các biến khác nhau của một hàm số bằng lệnh: Apply[f, i, j,...]
và Apply[f, list, level] tác dụng lên mức level của dãy lồng list.
- InterpolatingPolynomial[data, var] là lệnh tìm đa tức nội suy theo biến var từ số liệu data.
- 44 -
5.9. Sử dụng các chuỗi trong giải các bài toán
Ví dụ: Tính độ biến thiên Entropy giữa hai trạng thái a và b dựa vào dữ liệu thu được trên thực
b
C p ()
nghiệm bằng một quá trình đẳng áp: Sb- Sa =  dT .
a

Tích phân này được tính gần đúng theo công thức: Sb- Sa
N C p (Ti +1 ) C p (Ti ) Ti +1 − Ti
 ( + ).( )
i =1 Ti +1 Ti 2
Số liệu thực nghiệm là một dãy các giá trị T và Cp :
t={15,20,25,30,35,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180};
Cp={0.311,0.605,0.858,1.075,1.452,1.772,2.084,2.352,2.604,2.838,3.060,3.254,3.445,3.624,3.7
95,3.964,4.123,4.269,4.404,4.526};
Ta tính được độ biến thiên Entropy:
Hiện ta đang có các số liệu thực nghiệm nhiệt độ T và nhiệt dung Cp ở dạng các dãy riêng biệt,
để kết hợp thành bảng số liệu ta phải tạo dãy lồng, dãy mà các phần tử của dãy con T và Cp đã
được đưa vào ở lệnh trước. Dùng lệnh Tranpose để đổi bảng 2 dãy con tách riêng thành các cặp
điểm thực nghiệm.

- 45 -
Transpose[{t,Cp}]
{{15, 0.311}, {20, 0.605}, {25, 0.858}, {30, 1.075}, {35, 1.452}, {40, 1.772}, {50, 2.084},
{60, 2.352}, {70, 2.604}, {80, 2.838}, {90, 3.06}, {100, 3.254},
{110, 3.445}, {120, 3.624}, {130, 3.795}, {140, 3.964}, {150, 4.123}, {160, 4.269}, {170,
4.404}, {180, 4.526}}
ListPlot[%,PlotStyle->PointSize[0.025],AxesLabel-
>{"T(K)","Cp(Cal/K"}];

Hình 4
Đây là một trong những ví dụ cụ thể về việc sử dụng dãy trong tính toán.

- 46 -

You might also like