Top Banner
Ngo Van Thanh, IOP 11/2011
84

Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Jan 20, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Ngo Van Thanh, IOP 11/ 2011

Page 2: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Phần II. Tin học ứng dụng Chương 2: Sử dụng phần mềm Mathematica (LT: 10, TH:10) Cấu trúc lệnh cơ bản Xử lý đồ họa Các phương pháp tính số Lập trình trên Mathematica Các gói chương trình chuyên dụng

Website:

http://www.iop.vast.ac.vn/~nvthanh/cours/comp/math/ Wolfram website

http://reference.wolfram.com/mathematica/guide/Mathematica.html The University of North Carolina

http://facstaff.unca.edu/mcmcclur/Mathematica/ Salisbury University

http://facultyfp.salisbury.edu/despickler/personal/ClassroomResourcesMath.asp

Page 3: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

2.1 Cấu trúc lệnh cơ bản File văn bản : được chia thành các cell Kiểu của cell : Title, subtitle, …, text, Input (ngầm định) … Nhiều câu lệnh trên cùng một cell; gộp các cell thành một nhóm Double-Click trên nhóm celll để mở rộng hoặc đóng nhóm.

Page 4: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Thực hiện các câu lệnh trong cell : SHIFT+ Enter Có thể chọn nhiều Cell để chạy đồng thời. Kết quả thực hiện cho mỗi câu lệnh được ghi ra trong cell Output : Out[n], số thứ

tự n trong Out[…] tương ứng với cell Input In[n]. Tất cả kết quả tính toán được ghi lại trên bộ nhớ của máy tính cho đến khi tắt

chương trình Mathematica, hoặc sử dụng lệnh Clear[…] Sau khi sửa câu lệnh, phải chạy lại câu lệnh đó bằng “SHIFT+ Enter”

Quy tắc tên biến, hàm…: Phân biệt chữ hoa và chữ thường, không được dùng ký tự gạch dưới : “_” Tên Hàm được ghép nhiều từ với nhau, chữ cái đầu tiên của mỗi từ được viết hoa Vd: ListPlot[…], Solve[…], FindRoot[…]

Quy tắc móc, ngoặc (…) , […], {…}, [[…]] (…) : nhóm biểu thức – tương tự như các ngôn ngữ lập trình khác a*(b+c)

[…] : đối số của hàm số : Sin[x]; Plot[5 x – 2,{x,1,2}]

{…} : tập hợp các phần tử; nhóm các câu lệnh; mảng/ma trận… {1,2,3}; {a1 x+b1 y==0, a2 x+b2 y==0}

[[…]] : chỉ số mảng : a[[1]]; b[[1]][[2]]

Page 5: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Toán tử:

Hằng số: Pi hoặc π ~ 3.14159 E : cơ số e ~ 2.71828 EulerGamma : hằng số Euler γ ~ 0.577216 Degree : radian của 1 độ = π/180

Phép toán Ký hiệu TT. Quan hệ Ký hiệu TT. Logic Ký hiệu

Cộng + EQ == NOT !

Trừ - NEQ != AND &&

Nhân * or “space” GT > OR ||

Chia / GEQ >=

Luỹ thừa ^ LT <

LEQ >=

Page 6: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Hàm số cơ bản:

Sin[x] Exp[x] KroneckerDelta[a,b]

Cos[x] Log[x] DiracDelta[a,b]

Tan[x] Log[x,b] HeavisideTheta[a,b]

Cot[x] Log10[x] Gamma

ArcSin[x] Abs[x] Erf

ArcCos[x] Min[x] BesselJ

ArcTan[x] Max[x] Prime[n]

ArcCot[x] Im[z] Factorial[N] ~ N! Sinh[x] Re[z] RandomInteger[imin,imax]

Cosh[x] Conjugate[z] RandomReal[xmin,xmax]

Tanh[x] Arg[z] NormalDistribution [ µ,σ]

Coth[x] Abs[z] Mean[list]

ArcSinh[x] Plus[a,b,…] Variance[dist]

ArcCosh[x] Times[a,b,…]

ArcTanh[x] Power[a,b,…]

ArcCoth[x] Mod[a,b]

Page 7: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Palettes:

Vd: InputForm : {{1, 2}, {3, 4}} Palettes

Page 8: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

2.2 Xử lý đồ họa Vẽ đồ thị theo hàm số Đồ thị hàm 1 biến : Plot[{expr1, expr1, … }, {x, xmin, xmax}, Opt1->{Values of Opt1}]

exprN : các biểu thức toán học là một hàm theo x {x, xmin, xmax} : khoảng giá trị của biến số x

Plot[x^3 + 3 x^2 + x - 9, {x, -4, 3}]

4 3 2 1 1 2 3

30

20

10

10

20

Page 9: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Export đồ thị ra file Nên chọn EPS hoặc WMF

Chọn hình vẽ Click chuột phải -> “Save Graphics As” Chọn EPS -> Save

Page 10: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Export đồ thị ra file

Page 11: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Copy trực tiếp sang Winword hoặc PowerPoint Chọn hình vẽ Vào menu “Edit” -> “Copy As” -> Chọn “Metafile”

Page 12: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Trên Winword hoặc PowerPoint nhấn Ctrl + v

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 13: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Options : AxesLabel -> {“x_label”, “y_label”} Plot[x^3 + 3 x^2 + x - 9, {x, -4, 3}, AxesLabel -> {“x”, “y”}]

4 3 2 1 1 2 3x

30

20

10

10

20

y

Page 14: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

PlotLabel -> {“plot label”} Plot[x^3 + 3 x^2 + x - 9, {x, -4, 3}, PlotLabel -> f[x]]

Page 15: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

LabelStyle -> {FontFamily -> "Times", FontSize -> 18} Plot[x^3 + 3 x^2 + x - 9, {x, -4, 3}, PlotLabel -> f[x], AxesLabel -> {Style[“x”,Italic], “y”} LabelStyle -> {FontFamily -> "Times", FontSize -> 16}]

Page 16: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

AxesOrigin -> {xO, yO} Plot[x^3 + 3 x^2 + x - 9, {x, -4, 3}, AxesOrigin -> {-4, -30}]

3 2 1 0 1 2 3

20

10

0

10

20

4 3 2 1 1 2 3

30

20

10

10

20

Page 17: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Mesh -> 30; MeshStyle -> {Red,PointSize[Medium]} Plot[x^3 + 3 x^2 + x - 9, {x, -4, 3}, Mesh -> 20, MeshStyle -> {Red, PointSize[Medium]]

4 3 2 1 1 2 3

30

20

10

10

20

Page 18: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

PlotRange -> {Full, Automatic} hoặc {{xmin, xmax},{ymin, ymax}}

Plot[Exp[x^2] + x -4, {x, 0, 2}, PlotRange -> {0, 50}]

0.5 1.0 1.5 2.0

5

10

15

20

25

0.0 0.5 1.0 1.5 2.0

10

20

30

40

50

Page 19: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Ticks -> None / {t1, t2, t3, …}

Plot[Sin[x], {x, 0, 10} ,Ticks -> None]

Plot[Sin[x], {x,0,10}, Ticks -> {{0,Pi,2 Pi,3 Pi},{-1,1}}]

2 3

1

1

Page 20: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

AspectRatio -> Automatic hoặc y/x

Plot[Sin[x], {x, 0, 10}, AspectRatio -> 1/2] Plot[Sin[x], {x, 0, 10}, AspectRatio -> 2/1]

2 4 6 8 10

1.0

0.5

0.5

1.0

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 21: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Epilog -> {obj1, obj2,… } : phía trước hình Prolog -> {obj1, obj2,… } : phía sau hình Plot[Sin[x],{x, 0, 10}, Epilog -> { {Dashed, Blue, Line[{{Pi/2,Sin[Pi/2]}, {Pi/2,0}}]}, Text[Sin[x], {Pi,0.5}]}]

Page 22: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Drawing Tools

Page 23: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Drawing Tools : chỉ dùng cho đồ thị 2 chiều

Page 24: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Vẽ nhiều hàm trên một đồ thị Plot[{Sin[x], Sin[2 x]},{x, 0, 10}, PlotStyle -> {Red,{Blue, Dashed}}]

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 25: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Show[graph1,graph2, … , Options -> Values] vd. Hàm

1 2 3 4 5 6

1.0

0.5

0.5

1.0

Page 26: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Đồ thị 3 chiều Plot3D[{exprs.}, {x, xmin, xmax}, {y, ymin, ymax}, Opt1 -> {Values of Opt1}] Plot3D[Sin[2 x + y^2], {x, -3, 3}, {y, -2, 2}]

Page 27: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

BoxRatios -> {x, y, z}

Plot3D[Sin[2 x + y^2], {x, -3, 3}, {y, -2, 2}, BoxRatios -> {1, 1, 1/2}]

Page 28: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

ColorFunction -> (White &)

Plot3D[Sin[2 x + y^2], {x, -3, 3}, {y, -2, 2}, ColorFunction -> (White)]

Page 29: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

MeshShading -> {{None, None}} MeshStyle -> Thick

Plot3D[Sin[x + y], {x, -3, 3}, {y, -2, 2}, MeshShading -> {{None, None}}, MeshStyle -> Thick]

2

0

22

1

0

1

2

1.0

0.5

0.0

0.5

1.0

Page 30: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Vẽ đồ thị các điểm từ bảng dữ liệu ListPlot[{list1, list2}, Opts -> Options] List : {{x1, y1}, {x2, y2}, … }

ListPlot[Table[{n, Sin[n]},{n, 0, 10, 0.5}]] Table[{n, Sin[n]},{n, 0, 10, 0.5}]

{{0.,0.}, {0.5, 0.479426}, {1., 0.841471}, {1.5, 0.997495}, {2., 0.909297}, {2.5, 0.598472}, {3., 0.14112}, {3.5, -0.350783}, {4., -0.756802}, {4.5, -0.97753}, {5., -0.958924}, {5.5, -0.70554}, {6., -0.279415}, {6.5, 0.21512}, {7., 0.656987}, {7.5, 0.938}, {8.,0.989358}, {8.5, 0.798487}, {9., 0.412118}, {9.5, -0.0751511}, {10., -0.544021}}

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 31: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Joined -> True ; Mesh -> Full; ListPlot[Table[{n, Sin[n]},{n, 0, 10, 0.5}], Joined -> True, Mesh -> Full]

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 32: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

MeshStyle -> {PointSize[Large], Red} PlotStyle -> {Thick, Green} ListPlot[Table[{n, Sin[n]},{n, 0, 10, 0.5}], Joined -> True, Mesh -> Full, PlotStyle -> {Thick, Green}, MeshStyle -> {PointSize[Large], Red}]

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 33: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

InterpolationOrder -> 3 ListPlot[Table[{n, Sin[n]},{n, 0, 10, 0.5}], Joined -> True, Mesh -> Full, InterpolationOrder -> 3]

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 34: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Đọc từ file dữ liệu Import[“file","Table"] li1 = Import[“D:/math/data.dat","Table"] {{0.,0.},{0.5,0.479426},{1.,0.841471},{1.5,0.997495}, {2.,0.909297},{2.5,0.598472},{3.,0.14112}, {3.5,-0.350783},{4.,-0.756802},{4.5,-0.97753}, {5.,-0.958924},{5.5,-0.70554},{6.,-0.279415}, {6.5,0.21512},{7.,0.656987},{7.5,0.938},{8.,0.989358}, {8.5,0.798487},{9.,0.412118},{9.5,-0.0751511}, {10.,-0.544021}}

Page 35: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Vẽ đồ thị các đoạn thẳng từ bảng dữ liệu ListLinePlot[{list1, list2}, Opts -> Options]

ListLinePlot[{l1,l2}, Mesh -> Full, PlotMarkers -> Automatic, InterpolationOrder -> 2] ListPlot[{l1,l2}, Mesh -> Full, PlotMarkers -> Automatic, Joined -> True, InterpolationOrder -> 2]

2 4 6 8 10

1.0

0.5

0.5

1.0

2 4 6 8 10

1.0

0.5

0.5

1.0

Page 36: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Các loại đồ thị khác: ListPlot3D[{list1, list2}, Opts -> Options] List : {{x1, y1, z1}, {x2, y2, z2}, … }

data = Table[Sin[j^2+i],{i,0,Pi,Pi/5},{j,0,Pi,Pi/5}]; ListPlot3D[data, InterpolationOrder -> 3]

Page 37: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

ListPointPlot3D[{list1, list2}, Opts -> Options] List : {{x1, y1, z1}, {x2, y2, z2}, … }

data = Table[Sin[j^2+i],{i,0,Pi,0.1},{j,0,Pi,0.1}]; ListPointPlot3D[data]

10

20

30

10

20

30

1.00.50.0

0.5

1.0

Page 38: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

DensityPlot[f, {x, xmin, xmax},{y, ymin, ymax}]

Giá trị càng lớn thì có màu càng sáng ListDensityPlot[{{x1, y1, f1},{x2, y2, f2}, …}] DensityPlot3D[…] và ListDensityPlot3D[…] DensityPlot[Sin[x]Sin[y],{x,-4,4},{y,-3,3}]

Plot3D[Sin[x]Sin[y],{x,-4,4},{y,-3,3}]

Page 39: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

ContourPlot[f, {x, xmin, xmax},{y, ymin, ymax}] ContourPlot[{{f1 == g1},{f2 == g2}},{x,xmin,xmax},{y,ymin,ymax}] Giá trị càng lớn thì có màu càng sáng ListContourPlot[{{x1, y1, f1},{x2, y2, f2}, …}] ContourPlot[Sin[x]Sin[y],{x,-4,4},{y,-3,3}]

Page 40: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

ContourPlot[Sin[x]Sin[y]==0.5,{x,-4,4},{y,-3,3}]

Plot3D[Sin[x]Sin[y],{x,-4,4},{y,-3,3},PlotRange->{0,0.5}, ClippingStyle->None, BoundaryStyle->{Thick,Blue}]

4 2 0 2 43

2

1

0

1

2

3

Page 41: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

VectorPlot[{vx, vy}, {x, xmin, xmax},{y, ymin, ymax}] VectorPlot3D[{vx,vy,vz},{x,xmin,xmax},{y,ymin,ymax},{z,zmin,zmax}] ListVectorPlot[{{{x1, y1},{vx1, vy1}},… }] ListVectorPlot3D[{{{x1, y1, z1},{vx1, vy1, vz1}},… }]

VectorPlot[{x,-y},{x,-3,3}, {y,-3,3}]

3 2 1 0 1 2 3

3

2

1

0

1

2

3

Page 42: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

StreamPlot[{vx, vy}, {x, xmin, xmax},{y, ymin, ymax}] ListStreamPlot[{{{x1, y1},{vx1, vy1}},… }]

StreamPlot[{x,-y},{x,-3,3},{y,-3,3}]

3 2 1 0 1 2 3

3

2

1

0

1

2

3

Page 43: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

2.3 Các phương pháp tính số Tính toán trên các biểu thức Phép gán f = a x^2 + b x + c hoặc f = a x2 + b x + c f (x + d) --> kết quả : (d + x) (c + b x + a x2) Tính số (1/2) Sin[20] x --> kết quả : (1/2) Sin[20] x//N --> kết quả : 0.456473 x N[(1/2) Sin[20] x, 8] --> kết quả : 0.45647263 x Các số hạng trong biểu thức (x+y+z)[[2]] --> kết quả : y (x+y+z)[[-1]] --> kết quả : z f[g[a],g[b]][[1]] --> kết quả : g[a] f[g[a],g[b]][[1,1]] --> kết quả : a ReplacePart[a+b+c+d , 3 -> x^2] --> kết quả : a+b+x2+d

Page 44: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Khai triển biểu thức : Expand/ExpandAll

f = (1+x)^3 + Sin[(1+x)^3]

Expand[f]

ExpandAll[f]

Biểu thức lượng giác: TrigExpand[Sin[x+y]] --> Sin[x] Cos[y] + Cos[x] Sin[y] Số phức : ComplexExpand[Sin[x],x] --> Cosh[Im[x]] Sin[Re[x]] + i Cos[Re[x]] Sinh[Im[x]]

Page 45: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Đơn giản hoá : Simplify/FullSimplify f = 1 + 3 x + 3 x^2 + x^3 + Sin[1 + 3 x + 3 x^2 + x^3]

Simplify[f] -->

Phân tích thừa số : Factor[] Factor[1 + 2x + x^2] --> (1 + x)2 Extension Factor[2+2Sqrt[2]x+x^2] --> Factor[2+2Sqrt[2]x+x^2, Extension -> Sqrt[2]]

Biểu thức lượng giác: Factor[Sin[x]^2+Tan[x]^2, Trig -> True]

TrigFactor[Sin[x]^2+Tan[x]^2]

Page 46: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Đạo hàm riêng D[f, {x, n}] : n là bậc của đạo hàm D[f, {x, nx},{y, ny},…] : đạo hàm nhiều biến D[Sin[x]/(a + x^2),x] D[Sin[x]/(a + x^2),{x,2}] NonConstants D[ a x^2, x, NonConstants -> {a}]

--> 2 a x + x2 D[a, x, NonConstants -> {a}]

Page 47: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Đạo hàm toàn phần Dt[f, {x, n}] : n là bậc của đạo hàm Dt[f, {x, nx},{y, ny},…] : đạo hàm nhiều biến

Dt[ a x + b,x] --> a + x Dt[a,x] + Dt[b,x]

Dt[x^2 y, x, y] --> 2 x + 2y Dt[x,y] + 2x Dt[x,y] Dt[y,x] Constants Dt[ a x + b, x, Constants -> {b}]

--> a + x Dt[a, x, Constants ->{b}]

Page 48: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Derivative Sin’[x] : --> Cos[x] Derivative[1][Sin][x] Sin’’[x] : --> -Sin[x] Derivative[2][Sin][x] Derivative[n1, n2,…][f] f[x_, y_] := Sin[x] Cos[y];

Derivative[1, 2][f][x, y] --> -Cos[x] Cos[y]

Page 49: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Giới hạn (Limit) Limit[expr., x -> x0] Limit[expr., x -> x0, Direction -> 1] Limit[expr., x -> x0, Direction -> -1]

Limit[(1 + x/n)^n, n -> Infinity] --> ex

Direction Limit[Tan[x], x -> Pi/2, Direction -> 1] --> ∞

Limit[Tan[x], x -> Pi/2, Direction -> -1] --> − ∞

Assumptions Limit[ x^a,x ->Infinity, Assumptions -> a < 0] --> 0

Limit[ x^a,x ->Infinity, Assumptions -> a > 0] --> ∞

Page 50: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Tích Phân (Integrate) Integrate[f, x] Integrate[f, {x, xmin, xmax},{y, ymin, ymax},…] Integrate[1/(x^3+1),x] -->

Integrate[1/(x^3+1),{x,0,1}] PrincipalValue

Phương pháp Riemann Integrate[Tan[x],{x,0,Pi}] --> Không hội tụ

Phương pháp Cauchy Integrate[Tan[x],{x,0,Pi}, PrincipalValue -> True]

Page 51: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Tích Phân số (NIntegrate) NIntegrate[f, {x, xmin, xmax}] NIntegrate[f, {x, xmin, xmax},{y, ymin, ymax},…]

NIntegrate[1/(x^3+1), {x, 0, 1}] --> 0.835649

Integrate[1/(x^3 + 1), {x, 0, 1}] //Timing --> ??s NIntegrate[1/(x^3 + 1),{x, 0, 1}] //Timing --> ??s

Cận tích phân không phải là hằng số

NIntegrate[Sin[5x y+y^2] + 1,{x, -1, 1}, {y,-Sqrt[1-x^2], Sqrt[1-x^2]}]

NIntegrate[Sin[5x y+y^2] + 1,{y,-Sqrt[1-x^2], Sqrt[1-x^2]} ,{x, -1, 1}]

Page 52: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Exclusions NIntegrate[1/Sqrt[x2+y],{x,-2,4},{y,-2,4}] NIntegrate[1/Sqrt[x2+y],{x,-2,4},{y,-2,4}, Exclusions -> (x2 + y == 0)]

Số vòng lặp đệ quy (Recursive) • MinRecursion -> 0 • MaxRecursion -> Automatic NIntegrate[Exp[-100(x2+y2)],{x,-50,60},{y,-50,60}] --> 0.0 NIntegrate[Exp[-100(x2+y2)],{x,-50,60},{y,-50,60}, MinRecursion -> 4] --> 0.0314159

Method NIntegrate[1/Sqrt[x2+y],{x,-2,4},{y,-2,4}, Method -> "MonteCarlo"]

Page 53: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Tổng (Tích) Sum/NSum (Product/NProduct) Sum[f, {i, imax}] Sum[f, {i, imin, imax},{j, jmin, jmax ,dj},…] Sum[i^2,{i,1,n}] --> Sum[i^3,i] -->

NSum[f, {i, imax, imax}] NSum[f, {i, imin, imax,di}] NSum[1/((k-20)^2+1),{k,0,∞}] --> 3.09286 NSumTerms (NProductFactors) -> 15 NSum[1/((k-20)^2+1),{k,0,∞}, NSumTerms -> 30] --> 3.10462

Page 54: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Khai triển chuỗi luỹ thừa

Series[f, {x, x0, n}] Series[f, {x, x0, nx},{y, y0, ny},…]

Series[ Cos[x]/x,{x,0,10}] --> Normal[%] -->

Assumptions Series[ArcCos[x],{x,1,1},Assumptions->(x > 1)] Series[ArcCos[x],{x,1,1}]

Page 55: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Hệ số của số hạng bậc n trong chuỗi luỹ thừa SeriesCoefficient[f, {x, x0, n}] SeriesCoefficient[f, {x, x0, nx},{y, y0, ny},…] Series[ Cos[x]/x,{x,0,10}] SeriesCoefficient[ Cos[x]/x,{x,0,9}] -->

SeriesCoefficient[Cos[x]/x,{x,0,8}] --> ???

SeriesCoefficient[ Exp[-x],{x, 0, n}] -->

Assumptions

SeriesCoefficient[ Exp[-x],{x, 0, n}, Assumptions -> (n ≥ 0)]

Page 56: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Khai triển chuỗi Fourier FourierSeries[f, x, n}] FourierSeries[f, {x1, x2 , …},{n1, n2, …}]

với

FourierSeries[t/2, t, 3] FourierParameters

{1,1}

{1,-2π}

{a, b}

Page 57: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Hệ số của số hạng bậc n trong chuỗi Fourier FourierCoefficient[f, x, n}] FourierCoefficient[f, {x1, x2 , …},{n1, n2, …}]

FourierSeries[t/2, t, 3]

FourierCoefficient[t/2, t, 2] -->

FourierCoefficient[t/2, t, 3] --> ???

FourierParameters

{1,1} -->

{1,-2π} -->

{a, b} -->

Page 58: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Giải phương trình /hệ phương trình - (bất phương trình) Solve[expr., vars, domain] domain : Reals, Integers, Complexes

sol = Solve[a x2 + b x + c == 0, x]

sol[[2]] -->

x/.sol[[2]] -->

Hệ phương trình Solve[{expr1., expr1.,…}, {var1, var2, …}] Solve[{3x + 8y == 5, 5x + 2y == 7},{x,y}]

Page 59: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

sol2 = Solve[{x2 + y2 == 1, x + y == a}, {x, y}]

sol2[[1]] --> ??? x/.sol2[[2]] --> ??? x/.sol2[[2, 1]] --> ???

Cách viết khác khi expr. có nhiều biểu thức logic

Solve[x2 + y2 == 1 && x + y == a, {x, y}]

sol3 = Solve[{2x+3y == 4,3x-4y ≤ 5,x-2y > -21} ,{x,y},Integers]

x/.sol3 --> ???

Page 60: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Giải số các phương trình NSolve[expr., vars, domain] domain : Reals

sol = NSolve[x^3 - 2x + 3 == 0,x]

sol = NSolve[x^3 - 2x + 3 == 0,x,Reals] --> ???

NSolve[x^2+y^2==1 && x^4+y^4==2 && Element[x,Reals],{x,y}] --> x : Reals ; y : Complex FindRoot[{f1, f2}, {{x,x0},{y,y0}}] FindRoot[f, {x, x0}] --> Phương pháp Newton FindRoot[f, {x, x0, x1}] --> Phương pháp Secant FindRoot[f, {x, x0, xmin, xmax}]

Kết thúc tính toán khi giá trị x vượt ra ngoài khoảng

Page 61: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Plot[Sin[x]+Exp[x],{x,-10,1}]

FindRoot[Sin[x]+Exp[x]==0, {x,10}] --> {x -> -0.588533}

FindRoot[Sin[x]+Exp[x]==0, {x,-10}] --> {x -> -9.4247}

FindRoot[Sin[x]+Exp[x]==0, {x,-3,-4,-2}]

--> {x -> -3.09636}

10 8 6 4 21

1

2

3

Page 62: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

ContourPlot[{x == 2y + 3Cos[x],y == x-4},

{x,0,15},{y,-5,15}, Frame -> False, Axes -> True,

LabelStyle -> Large, ContourStyle -> Thick]

FindRoot[{x == 2y + 3 Cos[x],y == x-4},{x,6},{y,2}]

--> {x -> 5.6256, y -> 1.6256}

2 4 6 8 10 12 14

5

5

10

15

Page 63: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Giải phương trình (hệ pt) vi phân DSolve[eqn., y, x] DSolve[{eqn1.,eqn2,…}, {y1,y2,…}, x] DSolve[eqn., y, {x1,x2,…}]

DSolve[y'[x] + y[x] == a Sin[x], y[x], x]

Phương trình vi phân có điều kiện biên

DSolve[{y'[x] + y[x] == a Sin[x], y[0]==0}, y[x], x]

Phương trình vi phân bậc 2

DSolve[y''[x] + 4y'[x] + 5y[x] == 0, y[x],x]

Page 64: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Phương trình vi phân phi tuyến DSolve[ y'[x] + x y'[x]^2 == 1, y[x], x]

Hệ phương trình vi phân DSolve[{y'[x]== x^2y[x],z'[x]==5z[x]}, {y[x],z[x]},x]

Hệ phương trình vi phân có điều kiện biên DSolve[{y'[x]-4z[x]==Cos[x], y[x]+z[x]==1/2, y[Pi/2]==1/2},{y[x],z[x]},x]

Page 65: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Đạo hàm riêng

DSolve[3D[y[x1,x2],x1]+5D[y[x1,x2],x2]==x1 , y[x1,x2],{x1,x2}]

Đạo hàm riêng bậc 2

DSolve[3D[y[x1,x2],{x1,2}]-12D[y[x1,x2],{x2,2}]==1, y[x1,x2],{x1,x2}]

Đạo hàm riêng có điều kiện đầu DSolve[{2D[y[x1,x2],x1] + 7D[y[x1,x2],x2]==3, y[x1,0]==x1},y[x1,x2],{x1, x2}]

Page 66: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Giải số phương trình (hệ pt) vi phân NDSolve[eqns., y, {x,xmin,xmax}] NDSolve[eqns., y, {x,xmin,xmax},{t,tmin,tmax}] NDSolve[eqns., {y1,y2}, {x,xmin,xmax}]

Bắt buộc phải có điều kiện đầu hoặc điều kiện biên

nsol = NDSolve[{y'[x]-y[x]Cos[x+y[x]]==0,y[0]==1} ,y,{x,0,30}]

y -> InterpolatingFunction[{{0.,30.}},<>] Plot[y[x]/.nsol,{x,0,30}, PlotRange->All, LabelStyle->Large, PlotStyle->Thick] Plot[y[x]/.nsol,{x,-10,10}] --> ??? 5 10 15 20 25 30

0.20.40.60.81.0

Page 67: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Phương trình vi phân bậc 2 NDSolve[{y''[x]+y[x]==0,y[0]==1,y'[0]==0},y,{x,10}]

Hệ phương trình vi phân NDSolve[{x'[t]==y[t], y'[t]==-x[t], x[0]==1,y[0]==0}, {x, y},{t,0,10}] x -> InterpolatingFunction[{{0.,10.}},<>] y -> InterpolatingFunction[{{0.,10.}},<>] Plot[???] Plot[???]

Page 68: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Phương trình đạo hàm riêng

điều kiện biên: dsol = NDSolve[{D[u[t,x], t] == 0.5 D[u[t,x],x,x]+ u[t,x]D[u[t,x],x], u[t,-Pi] == u[t, Pi]==0, u[0,x] == Sin[x]}, u, {t,0,2},{x,-Pi, Pi}]

u -> InterpolatingFunction[{{0.,2.},{-3.14,3.14}},<>]

Plot3D[???]

Page 69: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Vector – Ma trận Vector/mảng 1 chiều : v = {x, y, z} v[[2]] = ??? ; v + a = ???

v1={x1,y1,z1}; v2={x2,y2,z2}; v1*v2 --> {x1 x2,y1 y2,z1 z2} Mảng 2 chiều/Ma trận : m = {{x1, y1},{x2,y2}} MatrixForm m//MatrixForm m[[2,1]] = ???

Tích vô hướng a*b -->

Tích vector a.b -->

Page 70: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Table Table[expr., {i,imax}] Table[expr., {i,imin,imax}] Table[expr., {i,imin,imax, di}] Table[expr., {i,imin,imax},{j,jmin,jmax}]

Table[i^2, {i,10}] --> {1,4,9,16,25,36,49,64,81,100} Table[i+2 j,{i,4},{j,3}]//MatrixForm

Table[ai,j,{i,2},{j,2}]//MatrixForm

Page 71: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Array Array[f, n] --> f[i] Array[f, {n1,n2}] --> f[i,j] Array[f,{3,2}] {{f[1,1],f[1,2]},{f[2,1],f[2,2]},{f[3,1],f[3,2]}} Table[???] Array[b##&, {3,3}] Table[???]

Page 72: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Các hàm liên quan đến ma trận Dimensions[] --> kích thước của một ma trận

Dimensions[A] --> {3,3} ; Dimensions[B] --> {?,?} Inverse --> Nghịch đảo ma trận Inverse[A] --> A-1

Det --> Định thức Det[A] --> 21

Page 73: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Tr[list] --> Vết của một ma trận Tr[A] --> 13

Tr[list, f] --> Vết của ma trận tác dụng bởi hàm f Tr[A,Times] --> ??? Tr[A,List] --> {1,5,7}

MatrixPower[m, n] --> Luỹ thừa bậc n của ma trận m

MatrixPower[A, 2] -->

Transpose[m] --> Ma trận chuyển vị

Transpose[A] -->

Page 74: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Eigenvalues[m] --> liệt kê trị riêng của ma trận Eigenvalues[m] {0.656382, 0.0181093, 0.000509145}

Eigenvalues[m, k] --> chỉ in ra k trị riêng của ma trận Eigenvalues[m, 2] --> {0.656382, 0.0181093} Eigenvalues[m, -2] --> ??? Eigenvectors[m] --> liệt kê vector riêng của ma trận

Eigenvectors[m, k] --> chỉ in ra k vector riêng của ma trận Eigenvectors[m, 2] -->

Page 75: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Eigensystem[m] --> liệt kê trị riêng và vector riêng của ma trận Eigensystem[m]

Trị riêng : Eigensystem[m][[1]]

{0.656382, 0.0181093, 0.000509145}

Vector riêng : Eigensystem[m][[2]]

Eigensystem[m, k] --> liệt kê k trị riêng và k vector riêng của ma trận Eigensystem[m, 1]

{{0.656382},{{-0.703526,-0.549364,-0.450832}}}

Page 76: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

DiagonalMatrix[list] Tạo ma trận với các phần tử của list sắp xếp trên đường chéo

DiagonalMatrix[{a,b,c}] -->

DiagonalMatrix[list,k]

Tạo ma trận với các phần tử của list sắp xếp trên đường chéo thứ k DiagonalMatrix[{a,b,c},2]

IdentityMatrix[n] --> Ma trận đơn vị bậc n

IdentityMatrix[4] -->

Page 77: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

2.4 Lập trình trên Mathematica Định nghĩa hàm f[x_,y_,…]:=(exprs.) x, y : đối số hình thức exprs. : liệt kê các biểu thức, các câu lệnh của Mathematica.

f[x_]:= Sin[x] + Cos[x] f[a] --> f[Pi] --> ??? f[x]*Sin[x] --> f[a_,b_]:= x/.Solve[a x^4+ b x == 0,x]

f[1,1] -->

{-1., 0., 0.5+ i 0.866025, 0.5- i 0.866025} f[a_,b_,c_]:= x/.Solve[a x^2 + b x + c == 0,x] f[0] --> ??? f[0,1] --> ??? f[0,1,1] --> ???

Page 78: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Biến cục bộ f[x_,y_,…]:=Module[{u,v,…},expr1;expr2;…] u, v : biến cục bộ exprs. : liệt kê các biểu thức, các câu lệnh của Mathematica.

g[a_]:= Module[{b}, b = Sin[a]*Cos[a]; a2 b] g[x] --> g[b] --> ??? SetOptions

SetOptions[function, option->value,…]

Plot[Sin[x],{x,0,30}, PlotRange->All, LabelStyle->Large, PlotStyle->Thick]

SetOptions[Plot,PlotRange->All, LabelStyle->Large, PlotStyle->Thick]

Plot[Sin[x],{x,0,30}]; Plot[Cos[x],{x,0,30}]…

Page 79: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Cấu trúc lặp Do[expr, {i,imax] Do[expr, {i,imin,imax,di]

t = 2; Do[t = t^2; Print[t] ,{3}] --> {4, 16, 256} t = 2; Do[Print[t]; t = t^2 ,{3}] --> ???

For[start, test, incr, body]

t = 2; For[i=1, i<4, i++, t = t^2; Print[t]] --> {4, 16, 256}

While[test, body]

t = 2; i = 1; While[i<4, t = t^2; Print[t];i++]

Nest[f, expr, n] Nest[(#^2)&, 2, 3] --> 256 Module[{x = 2}, Nest[(#^2)& , x, 3]]

Page 80: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Cấu trúc rẽ nhánh If[condition, T, F] If[condition, Then , Else]

f[x_]:= If[x > 0, 1, -1]

Điều kiện (Condition) f[x_/;x > 0]:= 1 <==> f[x_]:= 1/;x > 0 f[x_/;x <= 0]:= -1 <==> f[x_]:= -1/;x <= 0

Switch[expr.,form1, val1, form2, val2,…] f[x_]:= Switch[Mod[x,3], 0, a, 1, b, 2, c] f[4] --> “b” Which[test1, val1, test2, val2,…]

f[x_]:= Which[x > 0, 1, x <= 0, -1] Piecewise[val1, cond1, val2, cond2, …]

f[x_]:= Piecewise[{{1, x > 0},{-1, x < 0}}, -1] f[x_]:= Piecewise[{1, x > 0}, -1]

Page 81: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Các quy tắc thay thế Quy tắc thay thế -> /.{var1 -> value1, var1 -> value2,…} f[x_]:= a Sin[x] + b Cos[a x] f[t] --> f[t]/.a -> 1 --> Quy tắc thay thế :>

/.{var1 :> value1, var1 :> value2,…} list = {t,t,t,t}/.t :> RandomReal[] {0.262002,0.18452,0.695246,0.302918} Bước 1 : thay thế {t,t,t,t} --> {RandomReal[],RandomReal[],RandomReal[],RandomReal[]} Bước 2 : tính các giá trị list[[1]] = 0.262002 list[[2]] = 0.18452 …

So sánh hai quy tắc {t,t,t,t}/.t -> RandomReal[] {0.640703, 0.640703, 0.640703, 0.640703}

Page 82: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

2.5 Các gói chương trình chuyên dụng Gọi package để sử dụng << PackageName` hoặc Get[PackageName`] Needs[“PackageName`”,“file”]

Package : VectorAnalysis: <<VectorAnalysis` SetCoordinates[system[names]] system/names : Cartesian : Xx, Yy, Zz -> x, y, z

Cylindrical: Rr, Ttheta, Zz -> r, θ, z Spherical : Rr, Ttheta, Pphi -> r, θ, ϕ Grad[f, coordsys] --> gradient Div[f, coordsys] --> divergence Curl[f, coordsys] --> curl/rot

Các toán tử dùng trong các hệ toạ độ trụ/cầu http://en.wikipedia.org/wiki/Nabla_in_cylindrical_and_spherical_coordinates

Page 83: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Phương pháp biến thiên hằng số: << VariationalMethods` Phương trình Euler–Lagrange : EulerEquations[f, u[x],x] ele = EulerEquations[Sqrt[1+y'[x]^2],y[x],x] DSolve[ele,y[x],x] --> VariationalD[f, u[x],x] VariationalD[Sqrt[1+y'[x]^2],y[x],x]

Page 84: Ngo Van Thanh, IOP 11/2011nvthanh/cours/comp/Bai_Giang_P2.02.pdf · Lập trình trên Mathematica ... chương trình Mathematica, hoặc sử dụng lệnh Clear ... nhóm biểu

Thư viện: http://library.wolfram.com/ http://library.wolfram.com/infocenter/MathSource/

Physics : http://library.wolfram.com/infocenter/MathSource/Science/Physics/