Bài giảng Tin học (Phần 1: Tin học ứng dụng) - Chương 2: Sử dụng phần mềm Mathematica cung cấp cho người đọc các kiến thức: 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. Mời các bạn cùng tham khảo nội dung chi tiết.
N go Van Thanh, I OP 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 Xử lý đồ họa Các phương pháp tính số Lập trình 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 File văn : chia thành cell Kiểu cell : Title, subtitle, …, text, Input (ngầm định) … Nhiều câu lệnh cell; gộp cell thành nhóm Double-Click nhóm celll để mở rộng đóng nhóm Thực câu lệnh cell : SHIFT+ Enter Có thể chọn nhiều Cell để chạy đồng thời Kết thực cho câu lệnh ghi cell Output : Out[n], số thứ tự n Out[…] tương ứng với cell Input In[n] Tất kết tính tốn ghi lại nhớ máy tính tắt chương trình Mathematica, sử dụng lệnh Clear[…] Sau sửa câu lệnh, phải chạy lại câu lệnh “SHIFT+ Enter” Quy tắc tên biến, hàm…: Phân biệt chữ hoa chữ thường, không dùng ký tự gạch : “_” Tên Hàm ghép nhiều từ với nhau, chữ từ viết hoa Vd: ListPlot[…], Solve[…], FindRoot[…] Quy tắc móc, ngoặc (…) , […], {…}, [[…]] (…) : nhóm biểu thức – tương tự ngơn ngữ lập trình khác a*(b+c) […] : đối số hàm số : Sin[x]; Plot[5 x – 2,{x,1,2}] {…} : tập hợp phần tử; nhóm câu lệnh; mảng/ma trận… {1,2,3}; {a1 x+b1 y==0, a2 x+b2 y==0} [[…]] : số mảng : a[[1]]; b[[1]][[2]] Toán tử: 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ằng số: Pi π ~ 3.14159 E : số e ~ 2.71828 EulerGamma : số Euler γ ~ 0.577216 Degree : radian độ = π/180 Hàm số 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 : Palettes {{1, 2}, {3, 4}} 2.2 Xử lý đồ họa Vẽ đồ thị theo hàm số Đồ thị hàm biến : Plot[{expr1, expr1, … }, {x, xmin, xmax}, Opt1->{Values of Opt1}] exprN : biểu thức toán học hàm theo x {x, xmin, xmax} : khoảng giá trị biến số x Plot[x^3 + x^2 + x - 9, {x, -4, 3}] 20 10 4 3 2 1 10 20 30 Export đồ thị file Nên chọn EPS WMF Chọn hình vẽ Click chuột phải -> “Save Graphics As” Chọn EPS -> Save Export đồ thị file Table Table[expr., Table[expr., Table[expr., Table[expr., {i,imax}] {i,imin,imax}] {i,imin,imax, di}] {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] Array[f, {n1,n2}] > 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]}} Table[???] Array[b##&, {3,3}] Table[???] Các hàm liên quan đến ma trận Dimensions[] > kích thước 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 ma trận Tr[A] > 13 Tr[list, f] > Vết ma trận tác dụng hàm f Tr[A,Times] > ??? Tr[A,List] > {1,5,7} MatrixPower[m, n] > Luỹ thừa bậc n 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 ma trận Eigenvalues[m] {0.656382, 0.0181093, 0.000509145} Eigenvalues[m, k] > in k trị riêng ma trận Eigenvalues[m, 2] > {0.656382, 0.0181093} Eigenvalues[m, -2] > ??? Eigenvectors[m] > liệt kê vector riêng ma trận Eigenvectors[m, k] > in k vector riêng ma trận Eigenvectors[m, 2] > Eigensystem[m] > liệt kê trị riêng vector riêng 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 k vector riêng ma trận Eigensystem[m, 1] {{0.656382},{{-0.703526,-0.549364,-0.450832}}} DiagonalMatrix[list] Tạo ma trận với phần tử list xếp đường chéo DiagonalMatrix[{a,b,c}] > DiagonalMatrix[list,k] Tạo ma trận với phần tử list xếp đường chéo thứ k DiagonalMatrix[{a,b,c},2] IdentityMatrix[n] IdentityMatrix[4] > Ma trận đơn vị bậc n > 2.4 Lập trình Mathematica Định nghĩa hàm f[x_,y_,…]:=(exprs.) x, y : đối số hình thức exprs : liệt kê biểu thức, câu lệnh 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 f[x_,y_,…]:=Module[{u,v,…},expr1;expr2;…] u, v : biến cục exprs : liệt kê biểu thức, câu lệnh 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, 16, 256} While[test, body] t = 2; i = 1; While[i 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]:= f[x_/;x f[x_]:= -1/;x “b” Which[test1, val1, test2, val2,…] f[x_]:= Which[x > 0, 1, x 0},{-1, x < 0}}, -1] f[x_]:= Piecewise[{1, x > 0}, -1] Các quy tắc thay Quy tắc thay -> /.{var1 -> value1, var1 -> value2,…} f[x_]:= a Sin[x] + b Cos[a x] f[t] > f[t]/.a -> > Quy tắc thay :> /.{var1 :> value1, var1 :> value2,…} list = {t,t,t,t}/.t :> RandomReal[] {0.262002,0.18452,0.695246,0.302918} Bước : thay {t,t,t,t} > {RandomReal[],RandomReal[],RandomReal[],RandomReal[]} Bước : tính 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 chun dụng Gọi package để sử dụng curl/rot -> x, y, z -> r, θ, z -> r, θ, ϕ Các toán tử dùng hệ toạ độ trụ/cầu http://en.wikipedia.org/wiki/Nabla_in_cylindrical_and_spherical_coordinates Phương pháp biến thiên số: {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... "Times", FontSize -> 16}] AxesOrigin -> {xO, y O} Plot[x^3 + x ^2 + x - 9, {x, -4 , 3}, AxesOrigin -> {-4 , -3 0}] 20 20 10 10 4 3 ? ?2 1 10 ? ?20 30 10 ? ?20 3 ? ?2 1 Mesh -> 30; MeshStyle -> {Red,PointSize[Medium]}... 0.479 426 }, {1., 0.841471}, 0.5 {1.5, 0.997495}, {2. , 0.90 929 7}, {2. 5, 0.5984 72} , {3., 0.141 12} , {3.5, -0 .350783}, {4., -0 .7568 02} , {4.5, -0 .97753}, {5., -0 .958 924 }, {5.5, -0 .70554}, {6., -0 .27 9415},