Đ9 Hớng dẫn Thực hành Mathematica Phần mềm Mathematica công cụ hỗ trợ cho môn Phơng pháp tính Do thời gian học có hạn nên hớng dẫn xem xét số lệnh đủ để giải toán có chơng trình học Những sinh viên có nhu cầu cao tự học qua phần hớng dẫn Help phần mềm tham khảo thêm sách viết phần mềm Mathematica Để giải đợc toán môn Phơng pháp tính, sinh viên cần phải hiểu rõ lý thuyết, biết đợc yêu cầu toán, biết đợc tham số cần cho toán để từ sử dụng phần mềm Mathematica lập trình để giải toán I Một số lu ý sử dụng phần mềm Mathematica - Mathematica phân biệt chữ hoa chữ thờng Do đó, chữ viết hoa cần phải viết hoa chữ - Những lệnh, hàm, ký hiệu, biến có sẵn Mathematica đợc bắt đầu chữ in hoa - Để thực lệnh Mathematica, ấn đồng thời hai phím Shift + Enter - Các hàm, biến tự khai báo không cần viết hoa chữ nhng khai báo dùng phải dùng nh - Các chữ không đợc dùng để đặt tên: C, D, E, I, N - Vai trò cặp ngoặc ( ), [ ], { } + Cặp ngoặc ( ) dùng để ngoặc biểu thức toán học + Cặp ngoặc [ ] dùng để chứa đối số, biến số lệnh, hàm + Cặp ngoặc { } dùng để liệt kê miền cho đối số, liệt kê công việc, dùng cho mảng ma trận - Tên biến, hàm tự khai báo bao gồm chữ chữ số, bắt đầu chữ cái, chữ thờng hoa Tên phải khác với tên lệnh, hàm có sẵn chơng trình - Phân biệt x:=1, x=1 x==1 x:=1 lệnh gán giá trị cho số x x=1 lệnh gán giá trị cho biến x (x thay đổi giá trị thực chơng trình) x==1 so sánh giá trị vế trái x có giá trị vế phải hay không II Các phép toán hàm - Cho hai số a, b Một số phép toán: Phép cộng: a+b Phép nhân: a*b - Một số ký hiệu: Phép trừ: a-b Phép chia: a/b Số e: E Số : Pi Số : Infinity - Một số hàm số có sẵn: Đơn vị ảo: I Hàm số Khai báo Math Hàm số Khai báo Math x Abs[x] x sin x Sin[x] cos x Cos[x] tgx Tan[x] cot g x Cot[x] arcsin x ArcSin[x] arccos x ArcCos[x] arctgx ArcTan[x] arccotgx ArcCot[x] log a x Log[a,x] ln x Log[x] ax a^x ex E^x Exp(x) Sqrt[x] x^(1/2) III Khai báo hàm số Khai báo hàm giá trị - Khai báo hàm biến Ví dụ Muốn khai báo hàm f ( x ) = x log (sin (2 x + 1) + e x ) ln x ta khai báo nh sau: f[x_]:=x^2*Log[2,(Sin[2*x+1]^2 + E^(3*x^2))] - Log[x]^3 Sau khai báo, để tính giá trị hàm số x = ta dùng lệnh sau:f[3.] f[x]/.x->3 - Khai báo hàm nhiều biến Ví dụ Khai báo hàm biến g ( x , y ) = x sin ( x + y ) tg ( x y ) g[x_,y_]:=x^2*Sin[x^2 + y^2] Tan[x^2 - y^2] Sau khai báo, để tính giá trị hàm số x = 2, y = ta dùng lệnh sau: f[2,1] f[x,y]/.{x->2,y->1} Ví dụ Khai báo hàm ba biến h( x , y, z ) = xcotg( y + z ) e x + yz ta dùng lệnh sau: h[x_,y_,z_]:=x*Cot[y+z] - E^(x^2+y*z) Khai báo hàm vectơ - Khai báo hàm vectơ x arctg ( y xy ) Ví dụ Khai báo hàm số F ( x , y ) = ữ ta dùng lệnh sau: sin ( x + y ).ln x F[x_,y_]:={x^2*ArcTan[y^2 2*x*y], Sin[x + y]^2*Log[x]^3} III Ma trận hệ phơng trình Khai báo ma trận 1.1 Trong trờng hợp ma trận biết kích thớc phần tử - Ma trận ma trận có cột: Ví dụ Khai báo ma trận hàng cột y = ữ ữ, dùng lệnh: y={2,1,3} y={{2},{1},{3}} 3ữ - Ma trận ma trận có hàng: Ví dụ Khai báo ma trận hàng cột x = ( ) , dùng lệnh: x={{1,4,5,2}} - Ma trận kích thớc bất kỳ: Ví dụ Khai báo ma trận hàng cột A = ữ ữ, dùng lệnh: 8ữ A={{1,2,3,0},{3,1,2,4},{5,6,7,8}} 1.2 Trong trờng hợp ma trận biết kích thớc cha biếtcác phần tử Trong trờng hợp ma trận A kích thớc m ì n cha biết phần tử khởi tạo ma trận A nh sau: A=Table[,{i,1,m},{j,1,n}] 1.3 Khai báo số ma trận đặc biệt - Ma trận đơn vị cấp n: IdentityMatrix[n] - Ma trận vuông cấp n có phần tử đờng chéo biết a1, a 2, , an phần tử khác 0: DiagonalMatrix[a1,a2,,an] - Ma ma trận A kích thớc m ì n có phần tử hàng i cột j giá trị aij: A=Table[aij,{i,1,m},{j,1,n}] Lấy phần tử ma trận - Nếu ta khai báo ma trận A kích thớc m ì n để lấy phần tử hàng i cột j ta dùng lệnh sau đây: A[[i,j]] - Nếu ma trận A ma trận cột để lấy phần tử thứ k ta dùng lệnh sau: A[[k]] Các phép toán ma trận - Các phép toán cộng, trừ, nhân hai ma trận A B thực nh sau: A+B AB A.B - Phép nhân ma trận A với số thực k thực nh sau: k*A - Nếu A ma trận vuông định thức đợc tính lệnh: Det[A] - Nếu A ma trận vuông khả nghịch ma trận nghịch đảo đợc tính lệnh: Inverse[A] - Ma trận chuyển vị A đợc tính lệnh: Transpose[A] Hiển thị ma trận Để hiển thị ma trận A theo cách ta biết, ta dùng lệnh sau: MatrixForm[A] Chú ý Để hiển thị ma trận nghịch đảo ma trận A, dùng lệnh kép: MatrixForm[Inverse[A]] Tính chuẩn ma trận - Nếu ta khai báo ma trận A kích thớc m ì n ta tính chuẩn vô ma trận A nh sau: Theo công thức lý thuyết: A = max i(1,2, m ) n a j =1 ij ta có lệnh: chuanvc[A]:=Max[Table[Sum[Abs[A[[i,j]]],{j,1,n}],{i,1,m}]] - Nếu ma trận x ma trận cột có m hàng (một vectơ) ta tính chuẩn vô xi ta có lệnh: ma trận x nh sau: Theo công thức lý thuyết: x = imax (1,2, m ) chuanvc[x]:=Max[Table[Abs[x[[i]]],{i,1,m}]] Giải hệ phơng trình Để giải hệ phơng trình A x = b , sau nhập ma trận A b , dùng lệnh LinearSolve[A,b] IV Vẽ đồ thị hàm số Vẽ đồ thị hàm số hệ toạ độ Oxy - Vẽ đồ thị hàm y = f ( x ) ( a, b ) ta dùng lệnh: Plot[f[x],{x,a,b}] - Vẽ lúc hai đồ thị y = f ( x ), y = g ( x ) ( a, b ) ta dùng lệnh: Plot[{f[x],g[x]},{x,a,b}] x = x( t ) - Vẽ đồ thị hàm cho phơng trình tham số: với t ( a, b ) y = y( t ) ParametricPlot[{x[t],y[t]},{t,a,b}] Chú ý Khi vẽ đồ thị, trục nằm ngang trục thẳng đứng cha trục tung trục hoành Vẽ đồ thị hàm số hệ toạ độ Oxyz - Vẽ đồ thị hàm z = f ( x , y ) với x ( a, b ), y ( c , d ) ta dùng lệnh: Plot3D[f[x,y],{x,a,b},{y,c,d}] x = x( t , s) - Vẽ đồ thị hàm cho phơng trình tham số: y = y( t , s ) z = z(t , s) với t ( a, b ), s ( c , d ) ParametricPlot3D[{x[t,s],y[t,s],z[t,s]},{t,a,b},{z,c.d}] VI Một số phép toán hàm số Tính giới hạn: f ( x ), lim f ( x ), lim f ( x ), lim f ( x ), lim f ( x ) ta dùng lệnh Để tính giới hạn lim x a x x x a x a + sau: Limit[f[x],x->a] Limit[f[x],x->a,Direction->1] 1] Limit[f[x],x->Infinity] Limit[f[x],x->-Infinity] Limit[f[x],x->a,Direction->- Tính đạo hàm hàm số - Đạo hàm cấp hàm biến f ( x ) : D[f[x],x] - Đạo hàm cấp n hàm biến f ( x ) : D[f[x],{x,n}] - Đạo hàm hàm nhiều biến f ( x , y, z ) Ví dụ Đạo hàm lần theo x, lần theo y, lần theo z: D[f[x,y,z],{x,2},y,{z,4}] f1 ( x , y, z ) - Đạo hàm hàm vectơ: F ( x , y, z ) = f2 ( x , y, z ) ữ ữ, ta tính Fx lệnh: D[F[x,y,z],x] f ( x , y, z ) ữ từ ta có ma trận đạo hàm F đợc tính theo công thức: Transpose[D[F[x,y,z],x], D[F[x,y,z],y], D[F[x,y,z],z]] - Để tính F (1, 2, 3) ta phải dùng lệnh sau đây: Transpose[D[F[x,y,z],x], D[F[x,y,z],y], D[F[x,y,z],z]]/.{x->1, y->2, z->3} - Để khai báo hàm F ( x , y, z ) ta phải dùng lệnh sau đây: F[x_,y_,z_]:=Transpose[D[F[u,v,w],u], D[F[u,v,w],v], D[F[u,v,w],w]]/.{u->x,v->y,w->z} Tính tích phân - Để tính nguyên hàm hàm f ( x ) , dùng lệnh: Integrate[f[x],x] - Để tính tích phân xác định hàm f ( x ) [ a, b ] , dùng lệnh: Integrate[f[x],{x,a,b}] - Để tính tích phân xác định hàm f ( x ) [ a, b ] , kết hiển thị dới dạng số thập phân, dùng lệnh: NIntegrate[f[x],{x,a,b}] VII Một số lệnh thờng sử dụng Lệnh tính tổng tích dãy số: - Tính tổng dãy số: n a i=k - Tính tổng dãy số: n a i=k Ví dụ Tính tổng + = ak + ak +1 + + an , dùng lệnh: Sum[a[i],{i,k,n}] i i = ak ak +1 .an , dùng lệnh: Product[a[i],{i,k,n}] 1 , dùng lệnh: 1+Sum[1/ i!, {i,1,10}] + + + 1! 2! 10! Câu lệnh điều kiện If[điều kiện, công việc 1, công việc 2] Khi gặp câu lệnh này, Math kiểm tra điều kiện Nếu điều kiện đúng, thực công việc 1, điều kiện sai thực công việc Chú ý Công việc Khi điều kiện sai Math bỏ qua lệnh Các câu lệnh lặp 3.1 Lặp với số lần lặp biết trớc - Thực công việc n lần: Do[dãy công việc, {n}] - Nếu dãy công việc thực có phụ thuộc vào tham số i với i chạy từ m đến n , dùng lệnh: Do[dãy công việc, {i,m,n}] 1 Ví dụ Tính tổng + + + + , dùng đoạn lệnh sau: 1! 2! 10! S=1 Do[S=S+1/ i!, {i,1,10}] Chú ý Dãy công việc bao gồm k công việc thực liên tiếp nhau, khai báo nh sau: {công việc 1, công việc 2, công việc k} công việc 1;công việc 2; ; công việc k 3.2 Lặp với số lần lặp trớc While[điều kiện, dãy công việc] Khi gặp câu lệnh này, Math kiểm tra điều kiện Nếu điều kiện thực dãy công việc, điều kiện sai Math kết thúc lệnh chuyển sang lệnh Câu lệnh hiển thị - Để hiển thị đoạn ký tự So lan lap la, ta dùng lệnh: Print[So lan lap la] - Để hiển thị giá trị biến x , ta dùng lệnh sau: Print[x] - Nếu muốn hiển thị lúc nhiều đoạn ký tự giá trị biến, ta đặt chúng lệnh Print đợc cách dấu phẩy - Để trình bày hiển thị theo dòng định sẵn, ta dùng thêm lệnh StringForm Ví dụ Đã biết giá trị biến n = 7, x = 2, y = ta muốn hiển thị dới dạng: Sau lần lặp, giá trị x=2, y=3 ta dùng câu lệnh sau đây: Print[StringForm[Sau `` lan lap, gia tri x = ``, y= ``, n, x, y]] Lệnh StringForm chèn giá trị n, x, y lần luợt vào `` tơng ứng Thay đổi giá trị biến nguyên Để thay đổi giá trị biến nguyên n thêm i đơn vị, dùng lệnh: n+=i Chú ý Để tăng n đơn vị ta dùng lệnh n+=1 n++ Để giảm n đơn vị ta dùng lệnh n-=1 n- - ... kết hiển thị dới dạng số thập phân, dùng lệnh: NIntegrate[f[x],{x,a,b}] VII Một số lệnh thờng sử dụng Lệnh tính tổng tích dãy số: - Tính tổng dãy số: n a i=k - Tính tổng dãy số: n a i=k Ví dụ