Nội dung này, bạn đọc cần tham khảo những tài liệu của nhóm tác giả Phạm Huy
Điển, Đinh Thế Lục, Tạ Duy Phượng [l], [2], ở đây chúng tôi chỉ liệt kê lại một số câu lệnh
đơn giản thường sử dụng trong chương trình toán phổ thông và chương trình toán ở trường
Đại học.
Làm quen với các lệnh của Maple:
+ Lệnh [> restart; ↵
Lệnh restart có công dụng xoá đi tất cả các biến nhớ của việc tính toán trước đó và khởi động một quy trình tính toán mới.
Để xác định giá trị cho một biến, một hằng, một hàm hoặc khai báo một thủ tục Maple sử dụng câu lệnh gán ":=", ví dụ: Xác định biến n nhận giá trị bằng 5: [> n := 5; ↵ Khai báo hàm f(x)= x2: [> f := x->x ^2; ↵ f:= x-x2
Sau khi khai báo hàm f(x), để biết giá trị của f(x) tại một điểm xo nào đó ta chỉ việc gõ tên hàm và giá trị x0 trong ngoặc, ví dụ tính giá trị f(x) tại x0=3:
[> f(3); ↵
9
Khai báo một chương trình con (procedure) có tên là p với 2 tham số hình thức là a, b. Kết quả thực hiện thủ tục cho ta giá trị của a2 + b2, ví dụ:
[> p := proc(a, b) # chú ý nhấn phím Shift+Enter để xuống dòng local c; c := a^2 + b^21 c; # trả lại giá trị cuối cùng
end proc:
Để tính giá trị của thủ tục p nói trên với tham số thực sự là 2 và y, ta gõ lệnh: [> p(2, y); ↵
4 + y2
Maple cung cấp một hệ thống các hàm hầu như phủ khắp các lĩnh vực của toán học, ta có thể kể một số hàm thông dụng:
[> factor(6*x^2 + 18*x - 24); #Phân tích một đa thức thành tích các nhân tử↵
6 (x + 4 ) (x - 1) [> expand((x + 1 )^3); #Triển khai một biểu thức ↵
x3+ 3x2+ 3x + 1
[> normal( (x^2 - y^2)/(x - y)^3 ); #Đưa một biểu thức về dạng chuẩn hoá
[> simplify(4^(1/2) + 3); #Đơn giản, rút gọn một biểu thức ↵
[> z := (x^2 + 1)/(x - y); #Khai báo dạng tổng quát cua Z ↵
[> numer(z); #Tách tử số của một phân thức ↵ x2+ 1 [> denom(z); #Tách mẫu số của một phân thức ↵ x - y [> eval(x^3 + 2*x^2 - 7*x + 5, x=3); #Tính giá trị của một biểu thức ↵ 29
[> solve(x^2 + x : 1,x); #Giải phương trình hoặc hệ phương trình ↵
[> solve({u + v + w = 1, 3*u+v=3, u-2*v-w=0});↵
[> fsolve(tan(sin(x)) = 1, x ); #Giải phương trình, hệ phương trình lấy nghiệm ở dạng thập phân ↵ 0.9033391108 [> diff(x^2 + x^4 - 3*x + 2, x), #Lấy đạo hàm của một biểu thức theo một biến ↵ 2x + 4x3 -3 [> int(sin(x), x); #Lấy tích phân của một hàm số↵ -cos( x ) [> limit(sin(x)/x, x=0); #Tính giới hạn của một hàm số↵ 1 [> limit(g(x), x = infinity; ↵ [>plot(sin(x),x=0..2*pi); # Lệnh vẽđồ thị trong mặt phẳng ↵
[>plot3d(sin(x*y), x=0..1, y=0..1); # Lệnh vẽđồ thị trong không gian ↵
Như vậy, có thể thấy việc sử dụng câu lệnh của Maple rất đơn giản, trực quan. Bản thân phần mềm Maple cũng có một hệ thống trợ giúp (Help) rất phong phú đủ cho những ai có lòng nhiệt tình muốn tìm hiểu Maple.
4.5.1. Nhóm các lệnh tính toán xử lý các vấn đề trong số học, đại số
+ Các phép toán số học: cộng, trừ, nhân, chia, luỹ thừa...được Maple quy định với các ký hiệu như sau: phép cộng(+), phép trừ (-), phép nhân (*), phép chia (/), phép luỹ thừa (^), các phép toàn lấy phần nguyên, phần dư,... ta gõ biểu thức cần tính toán và Maple sẽ thực hiện tức thì. Ví dụ:
[> (1245.67+2345.34^2)/(123.45^3+234.23); ↵
+ Lệnh tìm UCLN: gcd(a,b);, ví dụ [> gcd(55,100);
+ Lệnh tìm bội chung nhỏ nhất: lcm(a,b);,ví dụ [> lcm(4,6); ↵
+ Lệnh phân tích một số ra thừa số nguyên tố:ifactor(a); Ví dụ: [> ifactor(2061962); ↵
(2) (7) (147283 )
+ Lệnh tìm số nguyên tốđứng trước số nguyên a đã xác định: prevprime(a); Ví dụ, với a = 100, ta gõ lệnh:
[> prevprime(100); ↵
với a =127859746, ta gõ lệnh: [ > prevprime(127859746); ↵
+ Lệnh tìm số nguyên tốđứng sau số nguyên a: nextprime(a), Ví dụ a = 100, ta gõ lệnh: [> nextprime(100); ↵
với a = 27859746, ta gõ lệnh [ > nextprime(127859746); ↵
+ Lệnh tìm nghiệm nguyên của phương trình: isolve(f, { x,y. . . } ); Trong đó f là biểu thức của phương trình hoặc hệ phương trình, { x,y... } là danh sách các ẩn.
Ví dụ, tìm nghiệm nguyên của bài toán cổ vừa gà vừa chó bó lại cho tròn 36 con 100 chân chẵn. Gọi số gà là x, số chó là y ta thực hiện lệnh:
[> isolve({2*x+4*y=100,x+y=36},{x,y}) ↵
{y = 14. x = 22 }
Kết quả cho ta đáp số của bài toán là: số gà là 22, số chó là 14.
+ Lệnh tìm thương và phần dư: iquo(a,b); và irem(a,b); trong đó a, b là các biểu thức. Ví dụ với a = 23, b = 4, ta gõ lệnh:
[> Thuong = iquo(23,4); ↵
Thuong = 5 [> Du = irem(23,4); ↵
Du = 3
+ Lệnh tìm số nhỏ nhất và số lớn nhất trong một dãy số min(); và max(); trong dấu ngoặc đơn cần liệt kê các số, biểu thức số cần thao tác.
+ Lệnh tính tổng vô hạn và tổng hữu hạn các số hạng sum(f,n=a..b); trong đó f là biểu thức của số hạng tổng quát, a,b …∈ N là cận dưới, cận trên của giới hạn tính tổng, ví dụ:
+ Lệnh tính tích hữu hạn và vô hạn các số Product(f, n=a..b); trong đó f là biểu thức của số hạng tổng quát, a,b …∈ N là cận dưới, cận trên của giới hạn tính tích, ví dụ:
+ Xác định độ chính xác của các phép tính số học: evalf(f,n); trong đó f là biểu thức, n là số các chữ số sau dấu phẩy, ví dụ:
[> eval(Pi,30); ↵
3.14159265358979323846264338328
+ Tính toán với các số phức được Maple thực hiện theo quy tắc thông thường, ví dụ:
+ Chuyển số phức x về dạng toạđộ cực: convert((x),polar), ví dụ:
ví dụ:
+ Lệnh phân tích đa thức thành nhân tử: ractor(f), ví dụ:
+ Lệnh xác định bậc của đa thức : degree(f), ví dụ:
+ Lệnh viết đa thức dưới dạng bình phương của tổng: completesquare() (lệnh này phải phải mở gói công cụ student), ví dụ:
+ Lệnh sắp xếp đa thức theo bậc: collect(f,x), trong đó f là biểu thức, x là ẩn chọn để
xếp theo thứ bậc, ví dụ:
+ Lệnh đơn giản (rút gọn) biểu thức: simplify(),
+ Lệnh tối giản phân thức: normal().
viện readlib(rationalize), ví dụ:
+ Khai báo hàm số: Đểđịnh nghĩa hàm số ta dùng dấu gán (:=). ví dụ:
Sau khi đã định nghĩa hàm số ta có thể tính giá trị của hàm số, ví dụ tính giá trị của hàm số tại x=0.1 2345 :
[> f(0.12345); ↵
-0.8677073006
+ Giải phương trình solve(f, { d/s biến } )
Bước 1 : định nghĩa phương trình bởi lệnh gán :=, ví dụ :
Bước 2: giải phương trình bằng lệnh solve();
+ Giải hệ phương trình solve( { d/s, pt }, { d/s ẩn } ).
Bước 2: giải phương trình bằng lệnh solve.
+ Giải bất phương trình solve() :
Bước 1 : định nghĩa các bất phương trình bằng lệnh gán :=
Bước 2: dùng lệnh solve():
Ta có thể giải trực tiếp bất phương trình trên như sau :
+ Giải hệ bất phương trình với lệnh solve(), ví dụ : Bước 1 : định nghĩa các bất phương trình:
Bước 2: dùng lệnh :
[> solve({Bpt1,Bpt2},x); ↵
{l <x,x <4}, {8 <x~x <10}
Hoặc ta có thểđưa trực tiếp bất phương trình vào trong câu lệnh như sau:
4.5.2. Nhóm các lệnh tính toán xử lý trong đại số tuyến tính
Để khai thác thế mạnh của Maple trong lĩnh vực đại số tuyến tính, ta khởi động chương trình bằng lệnh restart và nạp gói công cụ chuyên ngành linalg
+ Lệnh so sánh hai ma trận có cùng số chiều: equal()
Trước tiên ta khai báo sử dụng gói công cụđại số linalg bởi lệnh
Thực hiện phép so sánh các ma trận trên bởi lệnh:
+ Lệnh tính tổng của hai ma trận: evalm() hoặc add(), ví dụ
+ Lệnh nhân ma trận: multiply(), ví dụ với hai ma trận A, B nhưđã khai báo ở trên, ta có:
+ Lệnh tính tích vô hướng của hai véc tơ: dotprod(), ví dụ:
+ Lệnh hoán vị dòng (cột) của ma trận swaprow(), swapcol(), ví dụ:
+ Lệnh tìm ma trận chuyển vị: transpose(), ví dụ:
+ Lệnh tìm bất biến của ma trận permanent(), ví dụ:
+ Lệnh tính giá trị riêng và véc tơ riêng của ma trận eigenvectors (), ví dụ:
Kết quả của lệnh eigenvectors được xắp xếp như sau: số đầu tiên trong mỗi móc vuông của dòng là giá trị riêng, số thứ hai là bội đại số của giá trị riêng, và cuối cùng là tập
các véc tơ cơ sở của không gian riêng ứng với giá trị riêng đó. Mỗi móc vuông ứng với một giá trị riêng của ma trận, cụ thể: + Lệnh tìm ma trận đặc trưng charmat(), ví dụ: + Lệnh tìm đa thức đặc trưng của ma trận: charpoly(), ví dụ: + Lệnh tính hạng của ma trận rank(), ví dụ: + Lệnh tính định thức det (), ví dụ:
+ Lệnh giải phương trình đại số tuyến tính Ax=u: linsolve (), ví dụ:
4.5.3. Các câu lệnh vẽđồ thị của Maple
Bắt đầu khởi động chương trình bằng lệnh [>restart: và tiến hành nạp chức năng vẽ đồ thị bằng lệnh [>with(plots); [>with(plottools);
* Vẽđồ thị trong không gian hai chiều plot(). Ví dụ 1 : vẽđồ thị hàm số x4+2x3-x2+ 1
Ví dụ 3: Vẽđồ thị hàm số y= x4+2x3-x2+ l và y=2x3-2*x+2 trên cùng hệ trục toạđộ:
*Vẽđồ thị hàm ẩn implicitplot().
Ví dụ: vẽ elip có phương trình x2/9 + y2/4 = 1 .
* Vẽđồ thị hàm xác định từng khúc:
Trước hết cần, khai báo hàm từng khúc với câu lệnh: piecewise(),
* Vẽđồ thị hàm sin, cos theo tham số t [> plot([sin(t),cos(t)],t=-Pi..Pi); ↵
* Vẽđồ thị trong không gian ba chiều
Trước tiên ta khởi động chương trình và nạp thư viện [> restart: with(plots): with(plottools): ↵
Tiếp theo vẽ mặt hai chiều trong không gian ba chiều bằng lệnh plot3d()
[> c1:= [cos(x)-2*cos(0.4*y), sin(x)-2*sin(0.4*y), y]: c2:= [cos(x)+2*cos(0.4*y), sin(x)+2*sin(0.4*y), y]: c3:= [cos(x)+2*sin(0.4*y), sin(x)-2*cos(0.4*y), y]: c4:= [cos(x)-2*sin(0.4*y), sin(x)+2*cos(0.4*y), y]:
plot3d({c1, c2, c3, c4}, x=0..2*Pi, y=0..10, grid=[25,15], style=patch, color:sin(x)); ↵
Maple có chức năng hỗ trợ sự vận động (animation) của đồ thị hai chiều và đồ thị ba chiều với cú pháp
[>animate (cho đồ thị hai chiều), và cú pháp [>animate3d (cho đồ thị ba chiều). Ví dụ:
Vẽđồ thị hàm y = tsin(xt).
Muốn cho đồ thị chuyển động thì tại khung đồ thị ta nhấn chuột phải sau đó chọn ->
Animation -> Play
Muốn cho đồ thị chuyển động liên tục không ngừng trên thanh công cụ:
nhắp chuột vào nút thì đồ thị sẽ chuyển động liên tục, nút đúng sự vận động. Tương tự như vậy ta có thể cho đồ thị ba chiều vận động.
4.5.4. Các câu lệnh của Maple hỗ trợ giải các bài toán giải tích.
+ Tính giới hạn của hàm số f(x) khi x tiến tới a: limit(f,x=a); giá trị dương vô cùng, âm vô cùng được viết là infinity, - infinity. Ví dụ:
+ Tính đạo hàm của hàm số f(x) theo biến x: diff(f(x),x); Diff(f(x),x);
+ Tính đạo hàm bậc n của hàm số f(x) theo biến x: diff(f(x),xu);
+ Tính tích phân xác định của hàm số f(x) trên đoạn [a,b]: int(f(x),x=a..b);
+ Tính giá trị lớn nhất, nhỏ nhất của hàm số trên miền D: minimize(f,x=a..b);
maximize(f,x=a..b);Ví dụ:
+ Để xác định nguyên hàm của một hàm số, ta có thể sử dụng đoạn lệnh sau: [> with(Maplets): with(Maplets[Elements]):
integrationMaplet3:= Maplet( Window('title'="TINH NGUYEN HAM", [["NGUYEN HAM: ", TextField['TF1']()],[“BIEN XÁC DINH TRONG NGUYEN HAM:”, TextField['TF2'](3)], MathMLViewer['TB1'](), ["Do thi ham va nguyên ham cua no"], Plotter['PL1'](), [Button("NGUYEN HAM", Evaluate(TB1 = 'MathML[Export](int(TF1, TF2))')),Button("DO THI", Evaluate('PL1'='plot([TF1, eval(int(TF1,TF2)) ], x=-2..2)')), Button("OK", Shutdown(['TF1', 'TF2']))]] ) ):
[> Maplets[Display]( integrationMaplet3 );
Khi đó trên màn hình xuất hiện cửa sổ, ta nhập dạng biểu thức của hàm số cần tìm nguyên hàm và tên biến, ta sẽ nhận được biểu thức của nguyên hàm. Nếu nhấn nút "Đồ thị" ta sẽ thu được dạng đồ thị của f(x) và nguyên hàm F(x) của nó:
+ Để xác định tích phân xác định của hàm số f(x) trên đoạn [a,b], ta có thể sử dụng
đoạn lệnh sau: [> restart:
with(Maplets):with(Maplets[Elements]):with(student):
TICH_PHAN:= Maplet( Window('title'="TINH TICH PHAN",[[“NHAP HAM SO CAN TINH TICH PHAN: ”, TextField[' rFi']()],["NHAP CAN DUOI: ", TextField[' rF2'](4)],["NHAP CAN TREN: ", TextField['TF3'](3)], MathMLViewer['TB1'](),["DO THI CUA HAM DA NHAP "], Plotter['PL1'](ld),[Button("TICH PHAN", Evaluate(TB1 = MathML[Export](int(TF1, X=TF2..TF3))')), Button("DO THI", Evaluate('PL1 middlebox(TF1,x= -5..5,colour = red)')), Button("OK", Shutdown(['TF1', 'TF2','TF3']))]] ) ): [>Maplets[Display](TICH_PHAN );
Khi đó trên mầm hình xuất hiện cửa sổđể nhập dạng biểu thức của hàm số cần tìm tích phân xác định và cận lấy tích phân, ta sẽ nhận được kết quả. Nếu nhấn nút "Đồ thị" ta sẽ thu