Chương 1Giới thiệu về Mathematica 1.1.1 Các bảng ghi Notebooks Là dạng cửa sổ biểu diễn một lượt sử dụng Math bao gồm đầy đủ các ghi chép về chươngtrình nguồn, cả các kết quả thực hiện t
Trang 1ĐẠI HỌC SƯ PHẠM THÀNH PHỐ HỒ CHÍ MINH
Môn Học: Giải bài tập vật lý trên máy tính
Tp Hồ Chí Minh 2013
Trang 2Chương 1
Giới thiệu về Mathematica
1.1.1 Các bảng ghi (Notebooks)
Là dạng cửa sổ biểu diễn một lượt sử dụng Math bao gồm đầy đủ các ghi chép về chươngtrình nguồn, cả các kết quả thực hiện trên cùng một bảng ghi và được ghi lại dưới định dạngfile riêng của Math có đuôi là "*.nb" Math cung cấp cho ta rất niều lựa chọn để trình bàyvăn bản chất lượng cao từ định dnag5 kiểu dáng, màu sắc và các font chữ, các khoảng cách
và dóng hàng các đoạn văn bản, đến các ký tự đặc biệt hay các công thức, được chèn lẫnvới các văn bản hay tổ chức các tiền tố (header hay footer) hay cả các bản in
1.1.2 Cách ghi các biểu thức của Math
Nb trong Math hỗ trợ hoàn toàn các cách viết chuẩn tắc của toán học cho cả câu lệnh vào(input) và kết quả trả ra (output)
Ví dụ: lệnh tích phân được đưa vào hoàn toàn bằng những phím chuẩn từ bàn phímIntegrate[Log[1+x]/Sqrt[x],x]
hoặc biểu diễn nó bằng cấu trúc hai chiều với các ký tự đặc biệt như
Lệnh sau tính tích phân và đưa ra kết quả ở dạng toán học truyền thống
Z Log[1 + ]
√
d // TraditionalForm[output]:4tan−1(√
) + 2√
log( + 1) − 4√
1.1.3 Math và các môi trường làm việc
Math cho phép xuất và nhập từ nhiều định dạng khác nhau Ta có thể export các đồ thị hoặccác công thức của Math sang chương trình khác ở định dạng EPS (Encapsulated PostScript),GIF và thực hiện các thao tác của nó Và toàn bộ một nb có thể xuất sáng dạng HTML,TEX hay RTF
Trang 31.2 Môi trường tính toán và các nguyên tắc cú pháp cơ bản 2
Khi đưa vào một lệnh, Math sẽ tự động gán cho lệnh đưa vào (Input) đó một tên "In[n]="với n là thứ tự của dòng lệnh, sau dấu bằng là cấu trúc của lệnh mà ta vừa đưa vào, kếtthúc một lệnh đưa vào bằng cách bấm phím ENTER, Math sẽ hiểu là một lệnh được gởiđến phần lõi toán để thực hiện tính toán Kết quả đưa ra (Output) cũng được Math tự độngđánh số "Out[n]="
Lưu ý quan trọng: Nếu không bấm phím ENTER để kết thúc một câu lệnh mà bấmphím mũi tên xuống thì lõi toán sẽ không thực hiện câu lệnh này, mã lệnh này có thểđược thực hiện lại sau đó hoặc được lưu trong nb như một đoạn chú thích (comment) vàMath sẽ chuyển sang dòng lệnh kế tiếp
Nếu đưa nhiều lệnh và giữa các lệnh có dấu ";" Math sẽ thực hiện từng biểu thức lệnh
và chỉ đưa ra kết quả của biểu thức cuối cùng Sau khi đã viết xong toàn bộ phần mã lệnhcủa chương trình, để chạy chương trình ta vào tab Evaluation/Evaluate Notebook hoặc
sử dụng tổ hợp phím Shift+Enter
1.2.1 Tham chiếu các kết quả trước
Math có hai cách để tham chiếu đến các kết quả đưa ra trước đó:
1 Phép gán biến: gán cho một biến ký tự một giá trị được thực hiện bởi dấu "=" rồi sau
đó gọi giá trị của biến này trong các lệnh tiếp theo sau
Ví dụ:
t=3;
t*2
[out]: 6
2 Không sử dụng biến mà sử dụng dấu %
dấu % cho kết quả của dòng lệnh ngay trước đó (đếm ngược)
%% là kết quả của dòng lệnh thứ hai ngay trước đó
%% % (n dấu %) là kết quả của dòng lệnh thứ n phía trước (tính ngược lên kể từdòng lệnh đang thực hiện)
%n đưa ra kết quả của dòng lệnh có thứ tự thứ n (Out[n])
1.2.2 Mẫu qui tắc biến đổi
Math có một mẫu thích ứng cho việc thực hiện các phép biến đổi, ký tự "/." biểu thị choviệc thực hiện một qui tắc biến đổi (transformation rule)
1.2.3 Cắt ngang quá trình tính toán
Có thể dừng việc thực hiện tính toán (trong khi lõi toán đang ở chế độ thực hiện- ning) bằng thước lệnh Evaluation/Interrupt Evaluation (tương ứng với tổ hợp phím
Trang 4run-1.2 Môi trường tính toán và các nguyên tắc cú pháp cơ bản 3
"Alt"+"," [chỉ dừng tạm thời]) hoặc có thể hủy bỏ việc thực hiện lệnh bằng thước lệnhEvaluation/Abort Evaluation (tương đương với tổ hợp phím "Alt"+".")
Trong trường hợp không dừng được (xảy ra đối với các chương trình lớn hoặc các tínhtoán kéo dài) có thể loại bỏ hẳn lõi toán bằng cách Evaluation/Quit kernel
1.2.4 Tra cứu cấu trúc lệnh
Nếu không nắm vững mã lệnh có thể tra cứu nhanh bằng cách đưa lệnh đó có thêm dấu "?"
ở đầu câu viết liền Ví dụ:
?Pi
"Pi is the constant pi, with numerical value approximately equal to 3.14159"Nếu thêm "??" sẽ cho mô tả chi tiết hơn (với cả các thuộc tính-atributes và các tùy chọnoptions của lệnh)
Ví dụ:
??DSolve
"DSolve[eqn,y,x] solves a differential equation for the function y,
with indepent variable x DSolve[{eqn1,eqn2, },{y1,y2, },x] solves
a list of differential equations DSolve[eqn, y, {x1,x2, }] solves
a partial differential equation."
Attributes[DSolve]={Protected, ReadProtected}
Options[DSolve]=DSolveConstants->C
Nếu chỉ nắm được một phần mã lệnh, dùng dấu * thay thế phần chưa biết ví dụ:
?*Plot* sẽ cho tất cả các mã lệnh có chứa "Plot"
Muốn tra cứu biểu thức toán của một hàm dùng thước lệnh Help/Help để gọi phầnFunction Navigator chọn hàm cần tìm
Có thể viết tắt một lệnh bằng cách đánh vào chỉ vài ký tự đầu rồi dùng tổ hợp phímCtrl+"K" Math sẽ tự động điền phần còn lại hoặc hiện bảng chọn (nếu có nhiều lựa chọnkhác nhau)
Lưu ý: các hàm số trong Math có cú pháp bắt đầu bằng chữ viết hoa (để phân biệt vớicác biến [các biến không được viết hoa]) biến số nằm trong dấu ngoặc vuông "[]" Ví dụ:Sqrt[x], Sin[x], Log[b,x]
Log[b,x] là hàm logbx
Math qui định sử dụng các dấu ngoặc như sau: các dấu ngoặc đơn "(",")" cho nhóm các
số hạng của phép toán, ngoặc vuông "[","]" cho hàm số, ngoặc nhọn "{","}" cho đồi tượngdãy (list), ngoài ra còn sử dụng "(* *)" là phần bình luận (comment) cho một lệnh haymột đoạn chương trình chèn vào giữa các lệnh Dấu ngoặc vuông kép chỉ số thứ tự của mộtphần tử của dãy Ví dụ: v[[i]] là phần tử thứ i của dãy v
1.2.5 Các ký tự đặc biệt không có mô tả tương đương
Đánh trực tiếp từ bàn phím chuỗi phím tương đương (đánh liên tiếp chứ không đồng thời)
Ví dụ:
ký tự α được đưa vào ESC a ESC hoặc ESC alpha ESC,
số π là ESC p ESC,
ký tự tích phân R là ESC int ESC,
đạo hàm toàn phần d là ESC dd ESC,
đạo hàm riêng phần ESC pd ESC · · ·
Trang 51.3 Độ chính xác tùy chọn 4
1.2.6 Lưu tập tin
Kết thúc một phiên làm việc nhớ lưu lại bằng thước lệnh File/Save As
Một đoạn đồ họa của nb có thể xuất riêng thành một file bằng thước lệnh File/Save
Selection As/
1.2.7 Gọi một chương trình con trong bộ chương trình trợ giúp chuẩn
Gọi bằng lệnh Needs["context"] (lệnh nhày tải lên chạy chương trình con có tên là context
nếu trước đó nó chưa được tải lên trong nhóm chương trình phụ trợ cho phiên làm việc hiện
hành-xem hàm $Package)
Hoặc bằng lệnh «name (lệnh này gọi file nb có tên là name thực hiện các biểu thức và
trả về kết quả cuối cùng mà không kiểm tra xem lệnh này đã được gọi trước đó hay chưa)
Ví dụ lệnh sau gọi chương trình vẽ đồ thị 3 chiều theo thông số:
Needs["Graphics‘ParametricPlot3D‘"]
để sau đó có thể sử dụng một số hàm vẽ đồ thị của nó chẳng hạn hàm CylindrycalPlot3D
Một số bó chương trình con khác:
Calculus VectorAnalysis cho các tính toán đại số vector
Calculus FourierTransform cho các tính toán dựa trên các biến đổi Fourier
Calculus VariationMethods cho các tính toán dựa trên phương pháp biến phân
Miscellaneous PhysicalConstants cho tất cả các hằng số và các đơn vị vật lý, các biến
đổi qua lại giữa chúng
Và còn rất nhiều gói chương trình khác (xem trong Help/Function
Navigator/Add-on& Package phần Add-on)
Ngoài ra hãng WRI cũng thường xuyên cập nhật thêm những gói chương trình con mới (ở
dạng chia sẻ – share-ware hoặc miễn phí free-ware) tại địa chỉ website: http://www.wolfram.com/addons
Để gọi các gói chương trình này chúng ta dùng cú pháp
Need["Calculus‘VectorAnalysis‘"] hoặc << Calculus‘VectorAnalysis‘
Need["Calculus‘FourierTransform‘"] hoặc << Calculus‘FourierTransform‘
Need["Calculus‘VariationMethods‘"] hoặc << Calculus‘VariationMethods‘
Need["Miscellaneous‘PhysicalConstants‘"] hoặc << Miscellaneous‘PhysicalConstants‘
Khác với các chương trình tính toán số khác, Math không giới hạn ở độ chính xác của máy
tính cho các phép toán dấu chấm thập phân, ngoài ra nó còn cho phép linh động trong việc
xác định độ chính xác này bằng hàm N[expr,n] (cho giá trị của biểu thức expr với độ chính
xác là n chữ số, với n là một số nguyên bất kỳ)
ví dụ: N[π, 80]
[out]: 3.1415926535897932384626433832795028841971693993751058209749445923078164062862090Bằng cách này ta có thể phát hiện được những sai khác vô cùng nhỏ trong phép làm tròn,
ví dụ như so sánh các kết quả sau:
eπ
√
163//N2.62537 × 1017N[eπ
√
163, 20]
2.6253741264076874399 × 1017
Trang 61.4 Số phức 5
Math làm việc tốt với các số phức
Abs[z] Cho giá trị tuyệt đồi của số phức z
Arg[z] Cho (argument) đối số 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 liên hợp phức của số phức z
Ví dụ: Biểu diễn dạng số của biểu thức √
−7 + ln(2 + 8i) và tìm liên hiệp phức của nó.N[Sqrt[-7]+Log[2+8I]]
2.10975+3.97157I
Conjugate[%]
2.10975-3.971571
Các phương trình (hoặc hệ phương trình) dạng đa thức bậc cao (lớn hơn 3) không có lời giảigiải tích tổng quát, đối với các phương trình loại này ta phải đi tìm lời giải gần đúng (giảisố) Lệnh giải số phương trình cho bởi NSolve[expr,var] Ví dụ:
NSolve[x^5+4*x^3+3*x^2+2*x==10,x]
{{x->-1.-1.I},{x->-1.+1.I},{x->0.5-2.17945I},{x->0.5+2.17945I},{x->1.}}Giải một hệ phương trình dạng đa thức cho bởi NSolve[{expr1,expr2, },{var1,var2, }]NSolve[{x^2-x*y-y^2==1,x^3+3*x*y-y^3==9},{x,y}]
Khác với lệnh NSolve[exps,var] lệnh Solve[expr,var] cho lời giải chính xác (với con
số chính xác hay nghiệm giải tích với các biến chữ) Ví dụ: phân biệt cấp chính xác của hainghiệm sau:
Trang 71.6 Tìm nghiệm của phương trình, hệ phương trình trong lân cân của 1 điểm 6
tự Math cũng trả về nguyên dạng phần lớn các phương trình đa thức có số mũ cao hơn 3
mà không có dạng suy biến đặc biệt Mặc dù vậy lệnh Solve lại rất hữu hiệu khi giải acc1phương trình đại số tuyến tính
Ngoài ra Math còn có vài lệnh phụ trợ cho việc giải giải tích các phương trình đại số nhưlệnh Eliminate[expr,var] cho phép loại bớt các ẩn số từ một hệ phương trình nhiều ẩn;hoặc lệnh Reduce[expr, var] cho tất cả các nghiệm cũng như biện luận các điều kiện chocác tham số
của 1 điểm
Lệnh FindRoot[eqn, {x,x0}] cho phép tìm nghiệm trong lân cận của điểm x0 nào đó chophương trình hay FindRoot[{eqn1,eqn2},{x,x0},{y,y0}] cho hệ phương trình dạng đathức, hay có thể tìm nghiệm của các phương trình không có dạng đa thức (có số nghiệmkhông xác định) Ví dụ:
FindRoot[3*Cos[x]==Log[x],{x,10}]
{x->13.1064}
FindRoot[{x==Log[y],y==Log[x]},{x,I},{y,2}]
{x->0.318132+1.33724I, y->0.318132+1.33724I}
Phương trình vi phân được giải số bằng lệnh NDSolve[eqns, y,{x,xmin,xmax}] với eqns
là các phương trình vi phân và điều kiện biên tương ứng, y là hàm của biến x và x nằmtrong khoảng từ xmin đến xmax
NDSolve[eqns, y, {x, xmin, xmax}, {t, tmin, tmax}]- tìm nghiệm số của phương trìnhđạo hàm riêng
NDSolve[{eqn1,eqn2}, {y1, y2, }, {x, xmin, xmax}]- tìm nghiệm số đối với {yi}
là các hàm của biến x
Ví dụ: Tìm quỹ đạo của một khối lượng trong trường hấp dẫn bị tác động bởi một khốilượng rất lớn tại gốc tọa độ trong khoãng thời gian 45 giây Nó được biểu diễn bởi một cặpphương trình vi phân sau:
x00(t) = − x(t)
x2(t) + y2(t)3/2
y00(t) = − y(t)
x2(t) + y2(t)3/2
với các điều kiện biên tại t = 0, x(0) = 1, y(0) = 0, x0(0) = 0.2, y0(0) = 1.25
Lệnh DSolve[eqn,y,x] cho phép giải phương trình vi phân eqn với y là hàm của xDSolve[{eqn1,eqn2, },{y1,y2, },x] giải hệ phương trình vi phân {eqni}với {yi} là cáchàm của x
DSolve[eqn,y[x1,x2, ],{x1,x2, }] giải phương trình đạo hàm riêng eqn với y là hàmcủa {xi}
Ví dụ: giải phương trình dao động điều hòa tắt dần y00[x] + γy0[x] + ω2
0y[x] == 0, y[x], xDSolve[y00[x] + γy0[x] + ω02y[x] == 0, y[x], x]//TraditionalForm
Trang 8dt = 0; x1 = 00 dx2
dt = 0; x2 = a
DSolve[{x100[t] + 2 ∗ ω2∗ x1[t] − ω2∗ x2[t] == 0, x200[t] + 2 ∗ ω2∗ x2[t] − ω2∗ x1[t] == 0,x10[0] == 0, x20[0] == 0, x1[0] == 0, x2[0] == a}, {x1[t], x2[t]}, t]//TraditionalFormNếu biểu thức trả ra chưa có dạng đơn giản ta có thể sử dụng thêm lệnh sau để thu đượcbiểu thứ đơn giản nhất
ExpandAll[FullSimplify[ExpToTrig[%]]]
1.8.1 Đạo hàm
Đạo hàm riêng phần của một hàm theo biến x có thể thực hiện được bởi lệnh D[expr, x]
và D[expr, {x,n}] cho phép ta tính đạo hàm riêng bậc n của nó theo biến x
Ngoài ra lệnh D[expr, x1,x2, ] cho ta đạo hàm riêng của hàm số lần lượt theo các biến
−ArcT an[x/a]2a3 +Log[a−x]4a3 − Log[a+x]4a3
Tuy nhiên có những tích phân không tính được Math sẽ trả về nguyên dạng của nó Ví dụ:Integrate[x^x,x]
Trang 91.9 Tổng, tích, khai triển chuỗi và giới hạn 8
R xxdx
Tích phân xác định của hàm f trong khoảng từ xminđến xmaxcho bởi Integrate[f,{x,xmin,xmax}]
và tích phân nhiều biến cho bởi Integrate[f,x,xmin,xmax,y,yman,ymax, ]
Ví dụ:
Integrate[x^2+y^2,{x,0,1},{y,0,x}]
1/3
Mặc dù tích phân R xxdx không tính giải tích được nhưng nếu tính gần đúng bằng phương
pháp số ta vẫn thu được kết quả số
Chú ý: ở phương án trên, ta đã chọn phép đổi biến thông thường u = 2x3 Sau đây cũng là
một phương án đổi biến
ans - ans2 // FullSimplify
Tích của chuỗi Πimax
i minf cho bởi lệnh Product[f,{i,imin,imax}]
Tích với bước lặp di cho bởi Product[f,{i,imin,imax,di}]
và tích lồng Product[f,{i,imin,imax},{j,jmin,jmax}]
Trang 101.9 Tổng, tích, khai triển chuỗi và giới hạn 9
1.9.3 Khai triển chuỗi
Lệnh Series[f,{x,x0,n}] cho phép khai triển hàm f thành một chuỗi của các thành phần
số mũ của (x − x0) (khai triễn Taylor) cho đến số mũ thứ n
Chuỗi kép cho bởi lệnh Series[f,{x,x0,nx},{y,y0,ny}]
Series[f[x],{x,0,5}]
Series[eSin[u], {u, 0, 7}]
1.9.4 Giới hạn
Lệnh Limit[f,x->x0] cho phép xác định giới hạn của hàm f khi x tiến về x0
Lệnh Limit[f,x->x0, Direction->1] cho giới hạn của hàm f khi x tiến về x0 từ phía tráiLệnh Limit[f,x->x0, Direction->-1] cho giới hạn của hàm f khi x tiến về x0 từ phía phải
Ví dụ: Limit[Sin[x]/x,x->0]
1
Limit[Tan[x],x->Pi/2, Direction->1]
∞
Ý nghĩa hình học của khai triển Taylor
Trong khai triển Taylor của một hàm số tại một điểm x0 cho trước, sự chính xác phụthuộc vào số hạng của chuỗi, và chúng ta sẽ thấy được điều đó qua ví dụ sau:
Khai triển hàm f (x) = cos(cosh(x)) tại điểm x0 = 2 với 5 số hạng, vẽ trên cùng một hệtrục tọa độ hàm f (x) và hàm xấp xĩ bằng chuỗi Taylor trên đoạn [0, 4]
Trang 11Chương 2
Vector, ma trận và List
Math biểu thị vector, ma trận và tensor bằng các dãy (list) và các dãy lồng (nested list)
Ví dụ: một vector có thể biểu diễ bởi {x,y,z} hoặc một ma trận 3 dòng 2 cột có thể biểu thịbởi {{a,b},{c,d},{e,f}}
2.0.5 Các phép toán và hàm cho vector
c v: nhân một đại lượng vô hướng c với vector v
u.v hay Dot[u,v]: tích vô hướng của 2 vector u và v
uxv hay Cross[u,v] tích hữu hướng của 2 vector u và v (cách viết x ≡ ESC cross ESC)2.0.6 Cách tạo một ma trận
Transpose[A]: ma trận chuyển vị của ma trận A
Inverse[A]: ma trận nghịch đảo của ma trận A
Eigenvalues[A]: giá trị riêng của ma trận A
Eigenvectors[A]: vec tơ riêng của ma trận A
MatrixPower[A,n]: lũy thừa n của ma trận A
Trang 122.1 List 11
2.0.9 Tạo một ma trận với tính chất cho trước
Tạo ma trận đơn vị cấp n:IdentityMatrix[n]
Tạo ma trận đường chéo: DiagonalMatrix[v], v là vec tơ đường chéo có dạng v ={a,b,c,d, }
Ngoài ra có thêm hàm: SparseArray[], bạn đọc tự tìm hiểu thêm qua thẻ Help(hoặc nhấnF1)
2.1.1 Cách tạo một list
Cách 1: {} tạo ra một list rỗng
Ví dụ: {a,1,b,2,c,3} tạo ra một list gồm 6 phần tử
cách 2: Table[expr,{1,n}] cho một list các giá trị của expr từ 1 đến n
Cách 3: Array[f,n] tạo một list có n phần tử lần lượt là f[1],f[2], ,f[n] Cách 4: Range[n]cho 1 list {1, 2, , n}
Cách 5: NestList[f,x,n] cho 1 list n+1 phần tử có dạng {x, f[x], f[f[x]], }
2.1.2 Cách gọi phần tử của list
First[list]: gọi phần tử đầu tiên của list
Last[list]: gọi phần tử cuối cùng của list
t[[i]] hoặc Part[t,i]: lấy phần tử thứ i của list t
t[[i,j]]: cho phần tử thứ j của dãy con thứ i
Ví dụ: t={{16,0,0},{0,1,-6},{0,-6,-2}}//MatrixForm sẽ cho kết quả
t[[i;;j]] hoặc Part[t,i;;j]: lấy các phần tử của list t từ vị trí i đến vị trí j
t[[{i1,i2, }]] hoặc Part[t,{i1,i2, }]: lấy các phần tử từ list t ứng với các vị trí i1, i2, t[[i,j, ]] hoặc Part[i,j, ]: lấy phần tử từ list t có dạng t[[i]][[j]]
t[[{i,j,k, }]]: cho một dãy gồm các phần tử thứ i, thứ j, thứ k, từ dat4 t
Take[list,n]: lấy ra n phần tử đầu tiên của list
Take[list,-n]: lấy ra n phần tử cuối cùng của list
Take[list,{m,n}]: lấy ra các phần từ của list từ vị trí m đến vị trí n
Min[list]: lấy ra phần tử bé nhất của list
Max[list]: lấy ra phần tử lớn nhất của list
2.1.3 Các hàm xử lí đối với list
Kết quả nhận được sau khi sử dụng các hàm này đa phần là List
Table[expr,{i,list}]: cho các giá trị của expr với i lấy giá trị từ list
Map[f,list]: thực hiện hàm f với từng giá trị của list
Select[list,text]: chọn ra các giá trị từ list với điều kiện text[elem] đúng
TakeWhile[list,text]: giống với hàm Select[]
Length[list]: đếm số phần tử của list
Column[list]: in giá trị của list theo dạng cột
Position[list,form]: tìm vị trí các phần tử của list có cùng form
Count[list,form]: đếm số phần tử của list có cùng form
Trang 132.2 Giải tích vector 12
MemberQ[list,form]: kiểm tra xem form có trong list hay không (cho giá trị logic)Prepend[list,elem]: thêm elem vào vị trí đầu tiên của list
PrependTo[list,elem]: giống với Prepend[]
Append[list,elem]: thêm elem vào vị trí cuối cùng của list
AppendTo[list,elem]: giống với Append[]
Insert[list,elem,i]: thêm elem vào vị trí thứ i của list
Insert[list,elem,-i]: thêm elem vào vị trí thứ i (tính từ cuối đến đầu list) của list
Riffle[list,elem]: chèn elem vào các vị trí xen kẽ giữa các phần tử của list
Delete[list,i]: xóa elem nằm ở vị trí thứ i của list
ReplacePart[list,i->new]: thay giá trị cho phần tử thứ i của list bởi new
Rest[list]: trả lại giá trị cho list sau khi xóa phần tử đầu tiên
Most[list]: trả lại giá trị cho list sau khi xóa phần tử cuối cùng
Drop[list,n]: trả lại giá trị cho list sau khi xóa n phần tử đầu tiên
Drop[list,-n]: trả lại giá trị cho list sau khi xóa n phần tử cuối cùng
Drop[list,{m,n}]: trả lại giá trị cho list sau khi xóa các phần tử từ vị trí m đến n
2.1.4 Sắp xếp thứ tự một list
Sort[list]: sắp xếp list theo trật tự chuẩn
Union[list]: sắp xếp list và xóa các phần tử trùng nhau
Ordering[list]: cho biết vị trí ban đầu của các phần tử list sau khi đã được sắp xếp bởiUnion[]
Math có riêng một chương trình con cho phần giải tích vector Calculus‘Vector Analysis‘
để biểu diễn và thực hiện các phép toán với vector, để thực hiện điều này trước hết ta phảixác định hệ tọa độ
Trong Math, một hệ tọa độ được mô tả bằng cấu trúc tên hệ[các tọa độ] Ta đề cậpđến một vài hệ tọa độ thường gặp trong vật lý:
Hệ tọa độ Cartesian, cú pháp Cartesian[x,y,z]
Hệ tọa độ trụ, cú pháp Cylindrical[r,theta,z]
Hệ tọa độ cầu, cú pháp spherical[r, theta,phi]
Ngoài ra Math còn cung cấp đầy đủ các hệ tọa độ toán học khác
Lệnh {CoordinateSystem, Coordinate[]}: cho biết hệ tọa độ mặc định hiện hànhLệnh SetCoordinate[tên hệ[tọa độ1, tọa độ2, tọa độ3]]: set lại hệ tọa độ mặc địnhLệnh CoordinateToCartesian[tọa độ chất điểm, tên hệ] chuyển đổi tọa độ sang hệDecart
Lệnh CoordinateFromCartesian[tọa độ chất điểm, tên hệ] chuyển đồi tọa độ từ hệdecart sang
Lệnh CoordinateRanges[tên hệ] cho khoảng giới hạn của các tọa độ
Trang 14Hình 3.2: Các tùy chọn trong Graphics.
Khi Math thực hiện một hình vẽ nó cố gắng chọn Scale cho x và y sao cho chỉ chứaphần đáng quan tâm của hình vẽ, nếu hàm của chúng ta tăng quá nhanh hoặc chứa cácsingularities những phần nơi mà có giá trị quá lớn sẽ bị cắt đi Bằng cách lựa chọn OptionPlotRange, bạn có thể điều khiển chính xác vùng tọa độ của x và y để hình vẽ chứa phần
mà bạn quan tâm
Trang 153.2 Các tùy chọn 14
Hình 3.3: Các tùy chọn trong Graphics.
Hình 3.4: AspectRatio cho chúng ta lựa chọn tỉ lệ chiều rộng và chiều cao của hình vẽ, tỉ lệ mặc định của Math là nghịc đảo của tỉ lệ vàng.
Hình 3.5: Lựa chọn vùng tọa độ cho Option PlotRange.