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] --> ???
84 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1671 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Tin học ứng dụng - Chương 2: Sử dụng phần mềm Mathematica, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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:
Wolfram website
The University of North Carolina
Salisbury University
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.
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]]
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 >=
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]
Palettes:
Vd:
InputForm : {{1, 2}, {3, 4}}
Palettes
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
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
2 4 6 8 10
1.0
0.5
0.5
1.0
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 3
x
30
20
10
10
20
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}
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
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
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
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
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
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ị
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
Show[graph1,graph2, , Options -> Values]
vd. Hàm
1 2 3 4 5 6
1.0
0.5
0.5
1.0
Đồ 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}]
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
Plot3D[Sin[x + y], {x, -3, 3}, {y, -2, 2},
MeshShading -> {{None, None}}, MeshStyle -> Thick]
2
0
2
2
1
0
1
2
1.0
0.5
0.0
0.5
1.0
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
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
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
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
Đọ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}}
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
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}, }
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.0
0.5
0.0
0.5
1.0
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}]
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}]
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 4
3
2
1
0
1
2
3
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
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
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
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]]
Đơ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]
Đạ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}]
Đạ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}]
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]
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
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},]
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}]
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"]
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
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}]
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)]
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]] -->
x/.sol[[2]] -->
Hệ phương trình
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]
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
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 2
1
1
2
3
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
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]
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]
Đạ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}]
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.2
0.4
0.6
0.8
1.0
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[???]
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[???]
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 -->
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
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[???]
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
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] -->
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] -->
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}}}
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] -->
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] --> ???
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}]
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]]
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 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]
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}
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
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]
Thư viện:
Physics :
Các file đính kèm theo tài liệu này:
- bai_giang_p2_02_8653.pdf