1. Trang chủ
  2. » Công Nghệ Thông Tin

monte carlo simulation

31 782 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 0,97 MB

Nội dung

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 2

Chươ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 3

1.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 4

run-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 5

1.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:

163//N2.62537 × 1017N[eπ

163, 20]

2.6253741264076874399 × 1017

Trang 6

1.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 7

1.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 8

dt = 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 9

1.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 10

1.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 11

Chươ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 12

2.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 13

2.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 14

Hì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 15

3.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.

Ngày đăng: 15/10/2016, 17:07

TỪ KHÓA LIÊN QUAN

w