Ngo Van Thanh, IOP 11/2011

 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

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.

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”

Thực hiện các câu lệnh trong cell : SHIFT+ Enter

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:

Quy tắc tên biến, hàm…:

ListPlot[…], Solve[…], FindRoot[…]

(…) : 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]]

Quy tắc móc, ngoặc (…) , […], {…}, [[…]]

Ký hiệu TT. Quan hệ Ký hiệu TT. Logic Ký hiệu

EQ NOT + == !

NEQ AND != &&

GT OR > ||

GEQ - * or “space” / >=

LT ^ <

LEQ >=

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

Toán tử: Phép toán Cộng Trừ Nhân Chia Luỹ thừa Hằng số:

Sin[x]

Exp[x]

KroneckerDelta[a,b]

Cos[x]

Log[x]

Tan[x]

Log[x,b]

Cot[x]

Log10[x]

Hàm số cơ bản:

DiracDelta[a,b] HeavisideTheta[a,b] Gamma

Erf

Sinh[x]

Abs[x] Min[x] Max[x] Im[z] Re[z]

BesselJ Prime[n] Factorial[N] ~ N! RandomInteger[imin,imax]

Cosh[x]

Conjugate[z]

RandomReal[x

min,x

max]

Tanh[x]

Coth[x]

ArcSinh[x]

Arg[z] Abs[z] Plus[a,b,…]

NormalDistribution [ µ,σ] Mean[list] Variance[dist]

ArcCosh[x]

Times[a,b,…]

ArcTanh[x]

Power[a,b,…]

ArcCoth[x]

Mod[a,b]

ArcSin[x] ArcCos[x] ArcTan[x] ArcCot[x]

Palettes:

Vd:

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

Palettes

2.2 Xử lý đồ họa Vẽ đồ thị theo hàm số

min, x

max},

Đồ thị hàm 1 biến : Plot[{expr1, expr1, … }, {x, x Opt1->{Values of Opt1}] exprN : các biểu thức toán học là một hàm theo x {x, x

max} : khoảng giá trị của biến số x

min, x

20

10

4

3

2

1

1

2

3

10

20

30

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

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

Export đồ thị ra file

Copy trực tiếp sang Winword hoặc PowerPoint

Chọn hình vẽ Vào menu “Edit” -> “Copy As” -> Chọn “Metafile”

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

1.0

 

 

 

0.5

2

10

4

6

8 

0.5

 

 

1.0

 Options :

AxesLabel -> {“x_label”, “y_label”}

y

20

10

x

4

3

2

1

1

2

3

10

20

30

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

PlotLabel -> {“plot label”}

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

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}]

AxesOrigin -> {xO, yO}

20

20

10

10

4

3

2

1

1

2

3

0

10

20

10

30

20

3

2

1

0

1

2

3

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

Mesh -> 30; MeshStyle -> {Red,PointSize[Medium]}

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

20

10

4

3

2

1

1

2

3

10

20

30

Mesh -> 20, MeshStyle -> {Red, PointSize[Medium]]

max},{y

min, y

min, x

max}}

50

25

40

20

15

30

10

5

20

0.5

1.0

1.5

2.0

10

0.0

0.5

1.0

1.5

2.0

PlotRange -> {Full, Automatic} hoặc {{x Plot[Exp[x^2] + x -4, {x, 0, 2}, PlotRange -> {0, 50}]

,Ticks -> None]

Ticks -> None / {t1, t2, t3, …} Plot[Sin[x], {x, 0, 10}

1

2 

3 

1

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

1.0

1.0

0.5

0.5

10

4

2

6

8

0.5

2

4

6

8

10

1.0

0.5

AspectRatio -> 1/2]

1.0

AspectRatio -> Automatic hoặc y/x Plot[Sin[x], {x, 0, 10}, Plot[Sin[x], {x, 0, 10}, AspectRatio -> 2/1]

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}]}]

Drawing Tools

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

Vẽ nhiều hàm trên một đồ thị

1.0

PlotStyle -> {Red,{Blue, Dashed}}]

0.5

8

2

4

6

10

0.5

1.0

Plot[{Sin[x], Sin[2 x]},{x, 0, 10},

1.0

0.5

1

2

3

4

5

6

0.5

1.0

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

min, x

max}, {y, y

min, y

max},

Đồ thị 3 chiều

Plot3D[{exprs.}, {x, x Opt1 -> {Values of Opt1}]

Plot3D[Sin[2 x + y^2], {x, -3, 3}, {y, -2, 2}]

BoxRatios -> {x, y, z}

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

ColorFunction -> (White &)

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

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

1.0

0.5

2

0.0

1

0.5

1.0

0

2

1

0

2

2

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

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}]

1.0

0.5

2

4

6

8

10

0.5

1.0

{{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}}

1.0

0.5

2

4

6

8

10

0.5

1.0

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

MeshStyle -> {PointSize[Large], Red} PlotStyle -> {Thick, Green}

1.0

0.5

2

4

6

8

10

0.5

1.0

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

1.0

0.5

2

4

6

8

10

0.5

1.0

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

Đọ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}}

ListLinePlot[{list1, list2}, Opts -> Options]

 

 

 

1.0

 

10

6

4

2

8 

 

0.5

 

 

2

4

6

10

8 

0.5

 

 

1.0

PlotMarkers -> Automatic, InterpolationOrder -> 2]

 Vẽ đồ thị các đoạn thẳng từ bảng dữ liệu ListLinePlot[{l1,l2}, Mesh -> Full, 1.0 0.5 0.5 1.0 ListPlot[{l1,l2}, Mesh -> Full, PlotMarkers -> Automatic,

Joined -> True, InterpolationOrder -> 2]

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]

 ListPointPlot3D[{list1, list2}, Opts -> Options]

List : {{x1, y1, z1}, {x2, y2, z2}, … }

1.0

0.5

30

0.0 0.5 1.0

20

10

10

20

30

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

min, x

max},{y, y

min, y

max}]

 DensityPlot[f, {x, x

1},{x2, y

2}, …}]

1, f

2, f

 Giá trị càng lớn thì có màu càng sáng  ListDensityPlot[{{x1, y  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}]

min, x

max},{y, y

min, y

max}]

 ContourPlot[f, {x, x

min,x

max},{y,y

min,y

max}]

1},{x2, y

2}, …}]

2, f

1, f

 ContourPlot[{{f1 == g1},{f2 == g2}},{x,x  Giá trị càng lớn thì có màu càng sáng  ListContourPlot[{{x1, y ContourPlot[Sin[x]Sin[y],{x,-4,4},{y,-3,3}]

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

3

2

1

0

1

2

3

4

2

2

4

0

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

min, x

 VectorPlot[{vx, vy}, {x, x

max},{y, y max},{y,y

max}] max},{z,z

min,x

min,z

max}]

min, y  VectorPlot3D[{vx,vy,vz},{x,x min,y  ListVectorPlot[{{{x1, y1},{vx1, vy1}},… }]  ListVectorPlot3D[{{{x1, y1, z1},{vx1, vy1, vz1}},… }]

3

2

1

0

1

2

3

3

2

1

0

1

2

3

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

min, x

max},{y, y

min, y

max}]

 StreamPlot[{vx, vy}, {x, x

 ListStreamPlot[{{{x1, y1},{vx1, vy1}},… }]

3

2

1

0

1

2

3

3

2

1

0

1

2

3

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

2.3 Các phương pháp tính số Tính toán trên các biểu thức

--> kết quả :

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ả : 0.456473 x --> kết quả : 0.45647263 x

(1/2) Sin[20] x//N N[(1/2) Sin[20] x, 8] Các số hạng trong biểu thức

--> kết quả : y --> kết quả : z --> kết quả : g[a]

(x+y+z)[[2]] (x+y+z)[[-1]] f[g[a],g[b]][[1]] 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

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

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

Expand[f]

TrigExpand[Sin[x+y]]

ExpandAll[f]  Biểu thức lượng giác: --> 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]]

 Đơn giản hoá : Simplify/FullSimplify

f = 1 + 3 x + 3 x^2 + x^3 + Sin[1 + 3 x + 3 x^2 + x^3]

-->

--> (1 + x)2

Simplify[f]  Phân tích thừa số : Factor[] Factor[1 + 2x + 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]

 Đạo hàm riêng

n là bậc của đạo hàm

D[f, {x, n}] : 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}]

 Đạ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

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

Dt[ a x + 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}]

 Derivative

--> Cos[x]

Sin’[x] : Derivative[1][Sin][x]

--> -Sin[x]

Sin’’[x] : Derivative[2][Sin][x]

f[x_, y_] := Sin[x] Cos[y];

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

 Giới hạn (Limit)

0] 0, Direction -> 1] 0, Direction -> -1]

Limit[expr., x -> x Limit[expr., x -> x Limit[expr., x -> x

--> ex

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

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

Direction

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

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]

Tích Phân số (NIntegrate)

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

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

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}]

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)]

--> 0.0

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

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

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]

--> 3.09286 NSum[1/((k-20)^2+1),{k,0,∞}]

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

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[%]

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

Assumptions Series[ArcCos[x],{x,1,1}]

 Hệ số của số hạng bậc n trong chuỗi luỹ thừa

Series[ Cos[x]/x,{x,0,10}]

SeriesCoefficient[f, {x, x0, n}] SeriesCoefficient[f, {x, x0, nx},{y, y0, ny},…] 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)]

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}

 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}

 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]]

 Hệ phương trình

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

Solve[{expr1., expr1.,…}, {var1, var2, …}] Solve[{3x + 8y == 5, 5x + 2y == 7},{x,y}]

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 --> ???

 Giải số các phương trình

 NSolve[expr., vars, domain]

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

--> x : Reals ; y : Complex

0},{y,y

0}}]

1

, f

2}, {{x,x 0}] 0, x 0, x

1}] min, x

max}]

Phương pháp Newton Phương pháp Secant --> -->

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}]  FindRoot[{f  FindRoot[f, {x, x  FindRoot[f, {x, x  FindRoot[f, {x, x

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

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

3

2

1

10 8 6 4 2

1

--> {x -> -0.588533}

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

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

ContourPlot[{x == 2y + 3Cos[x],y == x-4}, {x,0,15},{y,-5,15}, Frame -> False, Axes -> True,

15

10

5

2

4

6

8 10 12 14

5

LabelStyle -> Large, ContourStyle -> Thick]

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

 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

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

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

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

 Phương trình vi phân phi tuyến

 Hệ phương trình vi phân

DSolve[ y'[x] + x y'[x]^2 == 1, y[x], x]

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

DSolve[{y'[x]== x^2y[x],z'[x]==5z[x]}, {y[x],z[x]},x]

DSolve[{y'[x]-4z[x]==Cos[x], y[x]+z[x]==1/2, y[Pi/2]==1/2},{y[x],z[x]},x]

 Đạ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

 Đạo hàm riêng có điều kiện đầu

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

DSolve[{2D[y[x1,x2],x1] + 7D[y[x1,x2],x2]==3, y[x1,0]==x1},y[x1,x2],{x1, x2}]

 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.}},<>]

1.0 0.8 0.6 0.4 0.2

5

10 15 20 25 30

Plot[y[x]/.nsol,{x,0,30}, PlotRange->All, LabelStyle->Large, PlotStyle->Thick] Plot[y[x]/.nsol,{x,-10,10}] --> ???

 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

{x, y},{t,0,10}]

NDSolve[{x'[t]==y[t], y'[t]==-x[t], x[0]==1,y[0]==0}, x -> InterpolatingFunction[{{0.,10.}},<>] y -> InterpolatingFunction[{{0.,10.}},<>]

Plot[???] Plot[???]

 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[???]

v = {x, y, z}

v[[2]] = ??? ; v + a = ???

Vector – Ma trận  Vector/mảng 1 chiều : v2={x2,y2,z2};

--> {x1 x2,y1 y2,z1 z2} v1={x1,y1,z1}; v1*v2

m = {{x1, y1},{x2,y2}}

m//MatrixForm

m[[2,1]] = ???

 Tích vector

 Mảng 2 chiều/Ma trận :  MatrixForm  Tích vô hướng a*b -->

a.b -->

Table

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[expr., {i,imax}]  Table[expr., {i,imin,imax}]  Table[expr., {i,imin,imax, di}]  Table[expr., {i,imin,imax},{j,jmin,jmax}]

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

Array

--> f[i] --> 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]}}

 Array[f, n]  Array[f, {n1,n2}]

Table[???] Array[b##&, {3,3}]

Table[???]

Các hàm liên quan đến ma trận

 Dimensions[] --> kích thước của một ma trận

; Dimensions[B] --> {?,?}

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

 Det --> Định thức

Det[A] --> 21

Tr[A] --> 13

--> Vết của ma trận tác dụng bởi hàm f

--> {1,5,7}

--> Luỹ thừa bậc n của ma trận m

--> MatrixPower[A, 2]

--> Ma trận chuyển vị

 Tr[list] --> Vết của một ma trận  Tr[list, f] Tr[A,Times] --> ??? Tr[A,List]  MatrixPower[m, n]  Transpose[m]

Transpose[A] -->

{0.656382, 0.0181093, 0.000509145}

--> {0.656382, 0.0181093}

Eigenvalues[m, 2] Eigenvalues[m, -2] --> ???

 Eigenvalues[m] --> liệt kê trị riêng của ma trận Eigenvalues[m]  Eigenvalues[m, k] --> chỉ in ra k trị riêng của ma trận  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] -->

Eigensystem[m]

{0.656382, 0.0181093, 0.000509145}

Eigensystem[m, 1]

 Eigensystem[m] --> liệt kê trị riêng và vector riêng của ma trận Trị riêng : Eigensystem[m][[1]] 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 {{0.656382},{{-0.703526,-0.549364,-0.450832}}}

 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[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}]

DiagonalMatrix[{a,b,c},2]

 IdentityMatrix[n]

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

--> IdentityMatrix[4]

2.4 Lập trình trên Mathematica Định nghĩa hàm

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_,y_,…]:=(exprs.)

--> --> ???

f[a] f[Pi] f[x]*Sin[x] -->

f[x_]:= Sin[x] + Cos[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] --> --> --> ??? ??? ???

Biến cục bộ

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.

f[x_,y_,…]:=Module[{u,v,…},expr1;expr2;…]

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}]…

max] min,i

max,di]

Cấu trúc lặp  Do[expr, {i,i  Do[expr, {i,i

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]]

 If[condition, T, F]  If[condition, Then , Else]

Cấu trúc rẽ nhánh

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

Điều kiện (Condition)

<==> f[x_]:= 1/;x > 0

f[x_/;x > 0]:= 1 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]

 Quy tắc thay thế

Các quy tắc thay thế

->

/.{var1 -> value1, var1 -> value2,…}

--> -->

/.{var1 :> value1, var1 :> value2,…}

{0.262002,0.18452,0.695246,0.302918}

list = {t,t,t,t}/.t :> RandomReal[] 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 …

f[x_]:= a Sin[x] + b Cos[a x] f[t] f[t]/.a -> 1  Quy tắc thay thế :>  So sánh hai quy tắc

{t,t,t,t}/.t -> RandomReal[] {0.640703, 0.640703, 0.640703, 0.640703}

2.5 Các gói chương trình chuyên dụng Gọi package để sử dụng

hoặc Get[PackageName`]

<< PackageName` Needs[“PackageName`”,“file”]

 Package :

VectorAnalysis: <

Cartesian : Xx, Yy, Zz Cylindrical: Rr, Ttheta, Zz Spherical : Rr, Ttheta, Pphi -> x, y, z -> r, θ, z -> r, θ, ϕ

SetCoordinates[system[names]] system/names : --> gradient Grad[f, coordsys] --> divergence Div[f, coordsys] --> curl/rot Curl[f, coordsys] 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

 Phương trình Euler–Lagrange : EulerEquations[f, u[x],x]

Phương pháp biến thiên hằng số: << VariationalMethods`

ele = EulerEquations[Sqrt[1+y'[x]^2],y[x],x]

DSolve[ele,y[x],x] -->

VariationalD[Sqrt[1+y'[x]^2],y[x],x]

VariationalD[f, u[x],x]

Thư viện:

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

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