14 thg 7, 2009

CÁC THAO TÁC CƠ BẢN TRÊN MAPLE

Maple có 2 môi trường lμm việc lμ toán vμ văn bản. Sau khi khởi động, Maple tự động bật môi trường toán. Muốn chuyển sang môi trường văn bản, kích chuột vào biểu tượng T trên thanh công cụ hay vμo trình Insert->Text. Ngược lại, từ môi trường văn bản, kích chuột vμo dấu "[>" trên thanh công cụ hay vào Insert để chuyển sang môi trường toán.

* Các phép toán:
+, -, *, /, ^, !, <, >, <=, >=, =, :=
Sin, cos, tan,
* Lệnh của Maple (Maple Input).
Lệnh của Maple được đưa vào worksheet tại dấu nhắc lệnh. Theo mặc định dấu nhắc lệnh là ">" và lệnh của Maple hiển thị bằng Font chữ Courier màu đỏ.
Kết thúc lệnh bằng dấu (;) kết quả sẽ hiển thị ngay, khi ta kết thúc lệnh bằng dấu (:) thì Maple vẫn tiến hành tính toán bình thường nhưng kết quả không hiển thị ngay. Lệnh được thực hiện khi con trỏ ở trong hoặc ở cuối dòng lệnh mà ta nhấn Enter.
Lệnh của Maple có hai loại lệnh trơ và lệnh trực tiếp: Lệnh trơ và lệnh trực tiếp chỉ khác nhau ở chữ cái đầu tiên của lệnh trơ viết in hoa, lệnh trực tiếp cho kết quả ngay, còn lệnh trơ chỉ cho ta biểu thức tượng trưng.
Ví dụ 2: Tính tổng các bình phương của n số tự nhiên đầu tiên.
Lệnh trực tiếp cho ta kết quả ngay khi nhấn Enter.
> sum(k^2,k=1..n);

Lệnh trơ sẽ cho ta biểu thức.
> Sum(k^2,k=1..n);

* Kết quả của Maple (Maple Output).
Sau khi nhần phím Enter ở cuối hoăc trong dòng lệnh ở trong một cụm xử lí thì kết quả tính toán sẽ được kết xuất (mầu xanh cô ban).
II. MAPLE VỚI CÁC TÍNH TOÁN TRONG SỐ HỌC
Bắt đầu công việc tính toán ta dùng lệnh khởi động chương trình [> restart:, lệnh này có công dụng xoá đi tất cả các biến nhớ của các công việc tính toán trước đó.
Với các phép toán số học như 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ư,...
1. Tính giá trị biểu thức.
> 18*(25^9 + 7^11)-(12+6^8);

> 55!;
> length(%);
Thí dụ2: Biểu thức

>b:=sqrt(2+(3+(4+(5+(6+(7+(8+(9+(10+(11+(12+(13)^(1/13))^(1/12))^(1/11))^1/10)^(1/9))^(1/8))^(1/7))^(1/6))^(1/5))^(1/4))^(1/3)):
> evalf(b);

2. Tính toán với độ chính xác theo yêu cầu
Lệnh evalf
- Cú pháp 1: evalf(bieu_thuc) - tính toán chính xác giá trị của biểu thức và biểu diễn kết quả
với mặc định là 10 chữ số.
- Cú pháp 2: evalf(bieu_thuc, k) - tính toán chính xác giá trị của biểu thức và biểu diễn kết quả
với k chữ số.
> 22/7:
> evalf(%);
> evalf(Pi,500);
3. Các thao tác với số nguyên tố
- Phân tích một số n thành thừa số nguyên tố: lệnh ifactor(n);
- Kiểm tra một số n có phải là số nguyên tố không?: lệnh isprime(n);
- Tìm số nguyên tố đứng sau một số n cho trước: lệnh nextprime(n);
- Tìm số nguyên tố đứng trước một số n cho trước: lệnh prevprime(n);
- Tìm ước số chung lớn nhất của 2 số nguyên dương a, b: lệnh gcd(a,b);
- Tìm bội số chung nhỏ nhất của 2 số nguyên dương a, b: lệnh lcm(a,b);
- Tìm số dư khi chia a cho b: lệnh irem(a,b);
- Tìm thương nguyên khi chia a cho b: lệnh iquo(a,b);
> ifactor(3000000000);
> ifactor(1223334444555556666667777777);
> gcd(157940,78864);
> lcm(12,15);
> prevprime(100);
> nextprime(100);
> nextprime(%);
> irem(145,7);
> iquo(145,7);
> y:=irem(145,7,'x'):
> x;
4. Giải phương trình nghiệm nguyên
Lệnh isolve:
- Cú pháp 1: isolve(phuong_trinh/he_phuong_trinh);
- Cú pháp 2: isolve(phuong_trinh / he_phuong_trinh, );
> isolve({x+y=36,2*x+4*y=100}):
> isolve(x+y=5,{a,b,c}):
5. Giải công thức truy hồi, giải dãy số
Lệnh rsolve:
- Cú pháp: rsolve(pt/he_pt_truy_hoi, ten_day_so);
> rsolve({f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=1},f(n)):
> rsolve({f(n)=2*f(n-1)},f(n)):
> rsolve({g(n)=3*g(n/2)+5*n},g):
> rsolve(f(n)-f(n-1)=n^3,f):
> simplify(%):
> eqn:=f(n)=f(n-1)+4*n:
> rsolve(eqn,f):
> simplify(%):
6. Khái niệm biến số, hằng số
- Trong Maple, biến số được sử dụng thoải mái mà không cần khai báo, định nghĩa trước
- Biến số, hằng số được đặt tên thỏa mãn một số quy tắc sau:
+ Không bắt đầu bằng chữ số
+ Không chứa khoảng trắng và một số ký tự đặc biệt như: %,^,&,*,$,#,...
+ Không được trùng với tên một số hàm và lệnh của Maple: sin, cos, ln, min, max,
- Một biến số sẽ trở thành hằng số ngay khi nó được gán cho một giá trị nào đó.
- Nếu muốn biến một hằng số trở lại biến số, ta dùng phép gán: ten_bien:='ten_bien';
> isolve({x+y=36,2*x+4*y=100}):
> x:=2:
> isolve({x+y=36,2*x+4*y=100}):
> x:='x':
> isolve({x+y=36,2*x+4*y=100}):
7. Tính tổng và tích
Tính tổng: sử dụng lệnh sum (tính trực tiếp ra kết quả) hoặc Sum(biểu diễn dạng công thức)
Cú pháp: sum(bieu_thuc_trong_tong, bien :=gia_tri_dau .. gia_tri_cuoi);
Sum(bieu_thuc_trong_tong, bien :=gia_tri_dau .. gia_tri_cuoi);
Tính tích: sử dụng lệnh product (tính trực tiếp ra kết quả) hoặc Product (biểu diễn dạng công thức)
Cú pháp: product(bieu_thuc_trong_tong, bien :=gia_tri_dau .. gia_tri_cuoi);
Product(bieu_thuc_trong_tong, bien :=gia_tri_dau .. gia_tri_cuoi);
Lưu ý: giá trị vô cực được biểu diễn bằng từ khóa infinity
> Sum(x^2,x=1..5):
> value(%):
> sum(x^2,x=1..5):
> Sum(1/(x^2),x=1..infinity):
> value(%):
> Product((i^2+3*i-11)/(i+3),i=0..10):
> value(%):
> product((i^2+3*i-11)/(i+3),i=0..10):
Ví dụ: Tính tổng hữu hạn.
> F = Sum((1+n)/(1+n^4),n=1..10);
> F = sum((1+n)/(1+n^4),n=1..10);
> F = evalf(sum((1+n)/(1+n^4),n=1..10));



Ví dụ: Tính tổng vô hạn:
> F = Sum(1/k^2,k=1..infinity);
F = sum(1/k^2,k=1..infinity);


Ví dụ: Tích hữu hạn.
> F = Product((n^2+3*n-11)/(n+3),n=0..10);
F = product((n^2+3*n-11)/(n+3),n=0..10);


Ví dụ: Tích vô hạn.
> F = Product(1-1/n^2,n=2..infinity);
F = product(1-1/n^2,n=2..infinity);


8. Tìm số nhỏ nhất, số lớn nhất trong một dãy số ta dùng lệnh min(); và max();
> max(3/2,1.49,Pi/2);

> min(3/2,1.49,Pi/2);

9. Tính toán với số phức
Ví dụ:
> (3+5*I)/(7+4*I);

Ta có thể chuyển số phức trên về dạng toạ độ cực
> convert((3+5*I)/(7+4*I),polar);

III. MAPLE VỚI CÁC TÍNH TOÁN TRONG ĐẠI SỐ
1. Khai triển biểu thức đại số (bằng lệnh expand).
Ví dụ: Khai triển biểu thức (x+y)^3,(x+y)^9 ta đưa vào biểu thức sau
> expand((x+y)^3);

> expand((x+y)^9);

2. Phân tích đa thức thành nhân tử (bằng lệnh factor).
Ví dụ: Phân tích đa thức thành nhân tử
> factor((b-c)^3 + (c-a)^3 + (a-b)^3);

> factor(x^8+x^4+1);

3. Tìm bậc của đa thức (bằng lệnh degree);
Ví dụ: Tìm bậc của đa thức:
> degree(x^12-x^10+x^15+1);

4. Viết đa thức dưới dạng bình phương của tổng ( bằng lệnh completesquare()).
Trước tiên ta khai báo thư viện student
Ví dụ: Viết da thức dưới dạng bình phương của tổng
> with(student):
completesquare(9*x^2 + 24*x +16);

5. Sắp xếp đa thức theo bậc ( bằng lệnh collect()).
Ví dụ: Sắp xếp đa thức theo bậc của x và bậc của a:
> collect(a^3*x-x+a^3+a,x);

> collect(a^3*x-x+a^3+a,a);

6. Đơn giản (rút gọn) biểu thức (bằng lệnh simplify).
Ví dụ: Đơn giản biểu thức
> simplify(1/(a*(a-b)*(a-c))+1/(b*(b-a)*(b-c))+1/(c*(c-a)*(c-b)));

7. Tối giản phân thức (bằng lệnh normal).
Ví dụ:
> normal((x^8+3*x^4+4)/(x^4+x^2+2));

8. Khử căn thức ở mẫu số ( bằng lệnh readlib).
Muốn khử căn thức ở mẫu số trước tiên ta khai báo thư viện readlib(rationalize):
Ví dụ
> readlib(rationalize):
1/(sqrt(5)-sqrt(2))+1/(sqrt(5)+sqrt(2));
rationalize(1/(sqrt(5)-sqrt(2))+1/(sqrt(5)+sqrt(2)));


9. Tìm thương và phần dư khi chia đa thức
Ví dụ:
> Thuong = rem(x^3+x+1,x^2+x+1,x);

> Du = quo(x^3+x+1,x^2+x+1,x);

10. Thay giá trị cho biến trong biểu thức
Cú pháp: subs(bien = gia_tri , bieu_thuc);
> bt := x^2-1;
> subs(x=2,bt):
> bt := x^2-1;
bt := x2K1
> subs(x=2,bt);
11. Định nghĩa hàm số
Cách 1: sử dụng toán tử ->
Cú pháp: ten_ham := bien -> bieu_thuc_ham_so;
> f := x->x^2+1/2:
> f(a+b):
Cách 2: sử dụng lệnh unapply
Cú pháp: ten_ham := unapply(bieu_thuc, bien);
> g:=unapply(x^3+2,x):
> g(4):
Định nghĩa hàm từng khúc
Cú pháp: ten_ham := bien -> piecewise(đk_1, bt_1, đk_2, bt_2, ..., đk_n, bt_n);
Ý nghĩa: nếu đk_i đúng thì hàm nhận giá trị là bt_i
> f:=x->piecewise(x<=-1,x^2-1,x<=1,-abs(x)+1,sin(x-1)/x):
> f(1):
12. Giải phương trình và hệ phương trình.
* Giải phương trình.
Ta có thể dùng Maple để giải phương trình và hệ phương trình. Đầu tiên ta định nghĩa phương trình
> PT:=x^3-a*x^2/2+13*x^2/3 = 13*a*x/6+10*x/3-5*a/3;

Sau đó ta giải phương trình bằng lệnh solve();
> solve(PT,{x});

* Giải hệ phương trình.
Trước tiên ta định nghĩa các phương trình:
> Pt1:=x+y+z-3=0:
> Pt2:=2*x-3*y+z=2:
> Pt3:=x-y+5*z=5;



Sau đó ta dùng lệnh giải phương trình solve.
> solve({Pt1,Pt2,Pt3},{x,y,z});

13. Giải bất phương trình và hệ bất phương trình.
* Giải bất phương trình.
Ví dụ:
> Bpt:=sqrt(7*x+1)-sqrt(3*x-18)<=sqrt(2*x+7);


Sau đó dùng lệnh để giải bất phương trình này.
> solve(Bpt,{x});

Hoặc ta có thể đưa trưc tiếp bất phương trình vào trong câu lệnh.
> solve(sqrt(7*x+1)-sqrt(3*x-18)<=sqrt(2*x+7),{x});

* Giải hệ bất phương trình, ta dịnh nghĩa các bất phương trình.
> Bpt1:=x^3-11*x^2+10*x<0;
Bpt2:=x^3-12*x^2+32*x>0;


Sau đó dùng lệnh giải hệ này:
> solve({Bpt1,Bpt2},x);

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:
> solve({x^3-11*x^2+10*x<0,x^3-12*x^2+32*x>0},x);

IV.CÁC TÍNH TOÁN TRONG ĐẠI SỐ TUYẾN TÍNH
Trước tiên ta hãy khởi động chương trình bằng lệnh restart: và nạp gói công cụ chuyên ngành nilalg:
1. Tạo ma trận
Có hai cách tạo ma trận: bằng lệnh matrix hoặc bằng lệnh array (tạo mảng).
Ví dụ:
> matrix([[5,4],[6,3]]);

Ví dụ 2
> B:=array([[4,1,3],[2, 2,5]]);

2. So sánh hai ma trận bằng lệnh equal
Muốn so sánh hai ma trận xem chúng có bằng nhau hay không ( tức là tất cả các phần tử cùng vị trí tương ứng của chúng phải bằng nhau), ta dùng lệnh equal.
Chú ý: Hai ma trận phải cùng số chiều như nhau mới có thể so sánh được.
Thí dụ:
> restart:
with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected

> A := array( [[2,1],[1,2]] );

> B := array( [[2,1],[1,2]] );


> equal(A, B);

> C := matrix(2,2, [2,2,1,2]);

> equal(A, C);

So sánh A với F
> F := array( [[2,1],[2,1]] );

> equal(A, F);

3. Tính tổng của hai ma trận bằng lệnh evalm hoặc bằng lệnh add
Ví dụ:
> A:=array([[1,-3,2],[3,-4,1]]);

> B:=matrix(2,3,[2,5,6,1,2,5]);

Tính tổng của A và B bằng lệnh evalm
> evalm(A+B);

4. Nhân ma trận bằng lệnh multiply hoặc bằng lệnh evalm
Ví dụ:
> A:=array([[2,-1,3,4],[3,-2,4,-3],[5,-3,-2,1]]);

> B:=matrix(4,3,[7,8,6,5,7,4,3,4,5,2,1,1]);

Nhân A với B bằng lệnh multiply
> multiply(A,B);

5. Tính tích trong của ma trận và véc tơ bằng lệnh innerprod
Hàm innerprod tính tích trong của một dãy các ma trận và véc tơ. Chiều của ma trận và véc tơ phải tương thích với nhau trong phép nhân.
Ví dụ:
> restart:
with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
> u := vector(2, [1,2]);

> A := matrix(2,3, [1,1,1,2,2,2]);

> innerprod(u, A);

> w := vector(2, [3,2]);

> innerprod(u,w);

6. Tính tích véc tơ (tích trực tiếp) bằng lệnh crossprod
Tích véc tơ của hai véc tơ là một véc tơ có toạ độ là ( u[2]*v[3]-u[3]*v[2], u[3]*v[1]-u[1]*v[3],u[1]*v[2]-u[2]*v[1])
> v1 := vector([1,2,3]);

> v2 := vector([2,3,4]);

> crossprod(v1,v2);

7. Tính tích vô hướng của hai véc tơ bằng lệnh dotprod
Theo định nghĩa, tích vô hướng của hai véc tơ trên trường số phức là tổng của u[i]*liên hợp của v[i].
Ví dụ:
> u := vector( [1,x,y] );

> v := vector( [1,0,0] );

> dotprod(u, v);

8. Các phép toán cấu trúc trên ma trận và véc tơ
* Xoá dòng, xoá cột của ma trận bằng delrows (delcols)
> restart:
with(linalg):
> a := matrix(3,3, [1,2,3,4,5,6,7,8,9]);

> delrows(a, 2..3);

> delcols(a, 1..1);

* Tạo ma trận con
> A := array( [[1,2,3],[4,x,6]] );

> submatrix(A, 1..2, 2..3);

> submatrix(A, [2,1], [2,1]);

9. Hoán vị dòng (cột) của ma trận
Ví dụ:
> A := array( [[1,2,x],[3,4,y]] );

> swaprow(A, 1, 2);

> swapcol(A, 2, 3);

10. Nhân một dòng của ma trận với một biểu thức
Ví dụ:
> A := matrix( [[1,2],[3,4]] );

> mulrow(A, 2, 2);

> mulcol(A, 2, x);

11. Tìm ma trận chuyển vị bằng lệnh transpose
Ví dụ:
> P:=array([[1,2,3],[5,6,4]]);

12. Tìm ma trận chuyển vị bằng lệnh transpose
> transpose(P);

13. Tìm vết của ma trận bằng lệnh trace
Ví dụ:
> T:=array([[4,3,-3],[2,3,-2],[4,4,-3]]);

> trace(T);

14. Tìm bất biến của ma trận bằng lệnh permanent
> P:=array([[1,-2,-3],[2,-4,1],[3,-5,2]]);

> permanent(P);

15. Tính giá trị riêng và véc tơ riêng của ma trận
Ví dụ:
> M:=matrix(3,3,[1,-3,3,3,-5,3,6,-6,4]);

> eigenvects(M);

Kết quả của lệnh eigenvects đượ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.
16. Tính đa thức đặc trưng
Ví dụ:
Tìm ma trận đặc trưng bằng lệnh charmat
> C:=array([[3,1,-1],[0,2,0],[1,1,1]]);

> charmat(C,x);

Tìm đa thức đặc trưng của ma trận bằng lệnh charpoly
Ví dụ:
> A := matrix(3,3,[1,2,3,1,2,3,1,5,6]);

> charpoly(A,x);

17. Tìm hạng của ma trận
Thí dụ 1.
> A := matrix(3,3, [x,1,0,0,0,1,x*y,y,1]);

> rank(A);

18. Tính định thức
Ví dụ:
> A:=matrix(3,3,[1/2,-1/3,2,-5,14/3,9,0,11,-5/6]);

Tính định thức của ma trận bằng lệnh det
> det(A);

19. Lập ma trận từ phương trình và ngược lại
Mô tả: Hàm geneqns sinh ra một họ các phương trình từ hệ số của ma trận. Nếu có biến thứ ba biểu thị véc tơ vế phải b thì nó sẽ được đưa vào phương trình. Ngược lại thì vế phải được coi bằng 0.
Hàm genematrix sinh ma trận từ các hệ số của hệ phương trình tuyến tính. Nếu có biến thứ ba"flag" thì véc tơ"vế phải" được đưa vào cột cuối cùng của ma trận.
Thí dụ
> eqns := {x+2*y=0,3*x-5*y=0};

> A := genmatrix(eqns, [x,y]);

> geneqns(A,[x,y]);

> geneqns(A,x);

> eqns := {x+2*z=a,3*x-5*y=6-z};

> A := genmatrix(eqns, [x,y,z], flag);

> A := genmatrix(eqns, [x,y,z], 'b');

> print(b);

> geneqns(A,[x,y,z],b);

20. Giải phương trình đại số tuyến tính
Giải phương trình đại số tuyến tính Ax=u, trong đó ,

Nhập A
> A:=array([[3,-2,-5,1],[2,-3,1,5],[1,2,0,-4],[1,-1,-4,9]]);

Nhập u
> u:=vector([3,-3,-3,22]);

Giải phương trình Ax=u
> linsolve(A,u);

V. MAPLE VỚI PHÉP TÍNH VI PHÂN - TÍCH PHÂN
1. Tính giới hạn
Để tính giới hạn của hàm số tại a ta dùng lệnh [>limit(f(x),x=a);
Ví dụ: Tính giới hạn hàn số:
> F1 = Limit(((sin(2*x))^2-sin(x)*sin(4*x))/x^4,x=0);

> F1 = limit(((sin(2*x))^2-sin(x)*sin(4*x))/x^4,x=0);

> F2 = Limit((2*x+3)/(7*x+5),x=infinity);

> F2 = limit((2*x+3)/(7*x+5),x=infinity);

2. Tính đạo hàm của hàm một biến.
* Tính đạo hàm bậc nhất (bằng lệnh [>diff(f(x),x);).
Ví dụ: Tính đạo hàm các hàm số sau.
> f1(x):=(x^2*sqrt(x^2+1));

> print(`Dao ham cua f1(x) la`);
diff(f1(x),x);


> f2(x):=5*x^3-3*x^2-2*x^(-3);

> print(`Dao ham cua ham so f2(x) la`);
diff(f2(x),x);


* Tính đạo hàm cấp cao (bằng lệnh [>diff(f(x),x$n);).
Ví dụ: Tính đạo hàm cấp cao của các hàm số sau:
> f3(x):=x^4+x*sin(x);

> print(`Dao ham cap hai cua f3(x) la`);
diff(f3(x),x$2);


> print(`Dao ham cap bon cua f3(x) la`);
diff(f3(x),x$4);


3. Phép tính tích phân
* Tích phân xác định
Tính tích phân xác định của hàm số f(x) trên đoạn [a,b] (bằng lệnh [>int(f(x),x=a..b);).
Ví dụ: Tính các tích phân sau:
> f(x):=Int((x+1)/sqrt(3*x+1),x=0..7/3);

> print(`Tich phan cua f(x) tren doan [0,7/3] la`);
int((x+1)/sqrt(3*x+1),x=0..7/3);


> g(x):=Int(1/(exp(1)^x+5),x=0..ln(2));

> print(`Tich phan cua g(x) tren doan [0,ln(2)] la`);
int(1/(exp(1)^x+5),x=0..ln(2));


* Tích phân không xác định
Tính tích phân không xác định của hàm số f(x) bằng lệnh [>int(f(x),x);
Ví dụ: Tính các tích phân không xác định sau:
> h(x):=Int((3*x^2+3*x+3)/(x^3-3*x+2),x);

> print(`Tich phan khong xac dinh cua ham h(x) la`);
int((3*x^2+3*x+3)/(x^3-3*x+2),x);


* Tích phân suy rộng
> p(x):=Int(x/(x^4+1),x=0..infinity);

> print(`Tich phan khong xac dinh cua ham p(x) la`);
int(x/(x^4+1),x=0..infinity);


4. Tính diện tích hình thang cong
Tính diện tích hình thang cong được giới hạn bởi các đường sau:
> y:=x^2;
y:=sqrt(x);


Ta vẽ hình minh hoạ như sau:
> restart:
with(plots):
plot({x^2,sqrt(x)},x=0..1.5);
Warning, the name changecoords has been redefined

> print(`Dien tich phan bi gioi han chinh la`);
Int(sqrt(x)-x^2,x=0..1);
print(`Va dien tich do la`);
int(sqrt(x)-x^2,x=0..1);




5. Tính đạo hàm của hàm nhiều biến
Để tính đạo hàm của hàm nhiều biến ta dùng lệnh [>grad(f,[x,y,z,...]);
Ví dụ: Tính đạo hàm của hàm nhiều biên sau:
> f:=4*x*z;

> print(`Dao ham cua f la`);
grad(f,[x,y,z]);


> g:=5*x*y-3*y*z;

> print(`Dao ham cua g la`);
grad(g,[x,y,z]);


6. Tính vi phân trên hàm ẩn
Để tính vi phân trên hàm ẩn ta dùng lệnh [>implicitdiff(f,x,y,z);
Ví dụ: Tính vi phân của hàm sau:
> f:=x^2/z;

> print(`Vi phan cua ham f theo x la`);
implicitdiff(f,x,z);


> print(`Vi phan cua ham f theo z la`);
implicitdiff(f,z,x);


> print(`Cho ham g nhu sau`);
g:=x^2+z^3=1;


> print(`Vi phan cua ham g theo x la`);
implicitdiff(g,z,x);


> print(`Vi phan cua ham g theo z la`);
implicitdiff(f,x,z);


7. Dãy truy hồi
* Tìm dãy các phần tử của dãy Fibônacci
Số hạng thứ n của dãy Fibonacci được tính theo công thức

Tính số Fibonacci bằng cách sử dụng Maple
> F(0):=1:
F(1):=1:
n:=2:
while n<=10 do
F(n):=F(n-1)+F(n-2);
n:=n+1;
od:
seq(F(i),i=1...5);

* Dãy Fibonacci suy rộng
a. Dãy Lucas
Dãy Lucas là dãy số tổng quát của dãy Fibonacci: các số hạng của nó tuân theo quy luật:
với mọi , trong đó a và b là hai số nào đó.
Với a= b = 1 thì dãy Lucas trở thành dãy Fibonacci.
Tính số phần tử của dãy Lucas bằng cách sử dụng Maple
> F(0):=a:
F(1):=b:
n:=2:
while n<=10 do
F(n):=F(n-1)+F(n-2);
n:=n+1;
od:
seq(F(i),i=1...5);

Bài tập 1
Cho dãy số Cho dãy số với mọi . Tính , , và
> F(0):=144:
F(1):=233:
n:=2:
while n<=40 do
F(n):=F(n-1)+F(n-2);
n:=n+1;
od:
F(12);F(24);F(32);F(39);




Bài tập 2
Cho dãy số Cho dãy số với mọi . Tính ,
> F(1):=1:
F(2):=2:
n:=2:
while n<=7 do
F(n+1):=F(n)^2+(F(n-1))^2;
n:=n+1;
od:
F(6);F(7);


Bài tập 3
Cho
> F(1):=1:
F(2):=5:
F(3):=6:
n:=2:
while n<=30 do
F(n+2):=F(n+1)+F(n)+F(n-1);
n:=n+1;
od:
F(15);F(20);


Bài tập 4
Nhờ MAPLE, bạn có thể tính giá trị của các biểu thức theo công thức truy hồi như: tính số hạng tổng quát của dãy Fibonachi...
Muốn tính theo công thức truy hồi, bạn hãy gõ lệnh
> rsolve(eqns, fcns);
Trong đó, eqns là phương trình hoặc tập các phương trình. fcns là tên hàm hoặc tập tên các hàm mà lệnh rsolve phải tìm.

Thí dụ 1. Tìm công thức cho hàm theo công thức truy hồi

với giá trị ban đầu bất kỳ
> rsolve(f(n) = -3*f(n-1) - 2*f(n-2), f(k));

Nếu muốn có công thức của với giá trị ban đầu cho trước thì ta phải khai báo giá trị ấy vào eqns
> rsolve({f(n) = -3*f(n-1) - 2*f(n-2), f(1..2)=1}, {f});

Thí dụ 2. Giải phương trình

với điều kiện ban đầu

Bước 1. Gán tên reqn (phương trình truy hồi) cho biểu thức truy hồi
> reqn:=f(n+1)=7*f(n)-2*f(n-1);

Bước 2. Giải phương trình với điều kiện ban đầu đã cho
> rsolve({reqn,f(1)=3,f(2)=3},f(n));

VI. VẼ ĐỒ THỊ VÀ CÁC VẤN ĐỀ LIÊN QUAN
1. Khởi tạo các hàm vẽ đồ thị
> with(plots):
> with(plottools):
2. Vẽ đồ thị trong không gian 2 chiều Oxy
Vẽ đồ thị hàm thông thường:
Cú pháp: plot(ham_can_ve, x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, cac_tuy_chon);
Một số tùy chọn thông dụng:
- Đặt màu cho đồ thị: color =
- Đặt độ dày k cho đồ thị: thickness = k
- Đặt số điểm vẽ cho đồ thị: numpoints = k;
> plot(x^3-3*x^2+1,x=-5..5,y=-5..5):
> f:=x->abs(x^3-x^2-2*x)/3-abs(x+1):
> plot(f(x),x=-5..5,y=-5..5):
Vẽ nhiều đồ thị trên cùng một hệ trục
Cú pháp: plot([ham_1, ham_2,...], x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, cac_tuy_chon);
> plot([x^2,sin(x)],x=-2..2,color=[red,green]):
Vẽ đồ thị của hàm số không liên tục
Khi vẽ đồ thị của một hoặc nhiều hàm số có điểm gián đoạn, ta phải thêm tuy chọn discont =
true để đồ thị được vẽ chính xác hơn
> g:=x->(x^2-1)/(x-2):
> plot(g(x),x=-10..10,y=-5..15,discont=true,color=blue):
Vẽ đồ thị hàm ẩn
Có những hàm số mà chúng ta không có được công thức tường minh y=f(x), khi đó để vẽ được đồ
thị của chúng, ta sẽ dùng hàm implicitplot
Cú pháp: implicitplot([bt_1, bt_2,...], x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, cac_tuy_chon);
> implicitplot(x^2/9+y^2/4=1,x=-4..4,y=-2..2):
> implicitplot(x^2-y^2-x^4=0,x=-1..1,y=-1..1):
Ứng dụng: vẽ đồ thị của hàm hữu tỷ
> f:=x->(x^2-1)/(x-2):
> bt:=convert(f(x),parfrac):
> tcx:=x->x+2:
> g1:=plot([f(x),tcx(x)],x=-10..10,y=-5..15,color=[blue,red],discont=true):
> g2:=implicitplot(x=2,x=-10..10,y=-5..15,color=green):
> display({g1,g2}):
3. Vẽ đồ thị trong không gian 3 chiều Oxyz
Vẽ đồ thị hàm thông thường
Cú pháp: plot3d(ham_can_ve, x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi,z=gt_dau..gt_cuoi,
cac_tuy_chon);
> plot3d(x*exp(x^2),x=-2..2,y=-2..2,title="Do thi trong khong gian 3 chieu"):
> plot3d(-exp(-abs(x*y)/10)*sin(x+y)-cos(x*y),x=-Pi..Pi,y=-Pi..Pi,grid=[51,51]):
Vẽ đồ thị hàm ẩn
Cú pháp: implicitplot3d(ham_can_ve, x=gt_dau..gt_cuoi,
y=gt_dau..gt_cuoi,z=gt_dau..gt_cuoi, cac_tuy_chon);
> implicitplot3d(x^2+y^2/4+z^2/9=1,x=-3..3,y=-3..3,z=-3..3):
4. Sự vận động của đồ thị
Cú pháp: animate(ham_co_tham_so,x=gt_dau..gt_cuoi, tham_so = gt_dau..gt_cuoi);
animate3d(ham_co_tham_so,x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, tham_so =
gt_dau..gt_cuoi);
Ý nghĩa: hiển thị sự biến đổi, vận động của đồ thị khi tham số thay đổi trong khoảng cho trước
> animate3d(cos(t*x)*sin(t*y),x=-Pi..Pi,y=-Pi..Pi,t=1..5):
> animate(t*x^2,x=-3..3,t=-5..5):
VII. HÌNH HỌC GIẢI TÍCH
1. Các tính toán trong hình học phẳng: gói geometry
Khởi tạo các hàm tính toán trong hình học phẳng
> with(geometry):
Các hàm trên đối tượng điểm
- Định nghĩa điểm: point(ten_diem, hoanh_do, tung_do);
- Hiển thị tọa độ của một điểm: coordinates(ten_diem);
- Xác định trung điểm đoạn thẳng tạo bởi hai điểm: midpoint(ten_trung_diem, diem_1,
diem_2);
> point(A,2,3):
> point(B,-3,1):
> coordinates(A):
> coordinates(B):
> midpoint(M,A,B):
> coordinates(M):
Các hàm trên đối tượng đường thẳng
- Định nghĩa đường thẳng qua hai điểm:
line(ten_dt, [diem_dau, diem_cuoi],[x,y]);
- Định nghĩa đường thẳng có phương trình cho trước:
line(ten_dt,pt_duong_thang,[x,y]);
-Tìm giao điểm giữa hai đường thẳng:
intersection(ten_giao_diem, dt_1, dt_2);
-Tìm góc giữa hai đường thẳng:
FindAngle(dt_1, dt_2);
- Tính khoảng cách từ một điểm tới một đường thẳng:
distance(diem, duong_thang);
- Xác định hình chiếu của một điểm lên trên một đường thẳng:
projection(ten_hinh_chieu, diem, duong_thang);
- Xác định điểm đối xứng của một điểm qua một đường thẳng:
reflection(ten_diem_dx, diem, duong_thang);
> line(d1,[A,B],[x,y]):
> line(d2,y=x+1,[x,y]):
> detail(d1):
> detail(d2):
> intersection(K,d1,d2):
> coordinates(K):
> FindAngle(d1,d2):
> distance(A,d1):
> distance(B,d2):
> projection(N,B,d2):
> coordinates(N):
> reflection(B1,B,d2):
> coordinates(B1):
Các hàm trên đối tượng đường tròn
- Định nghĩa đường tròn qua 3 điểm:
circle((ten_duong_tron,[diem1, diem2, diem3],[x,y]);
- Định nghĩa đường tròn có tâm và bán kính cho trước:
circle(ten_duong_tron,[tam, bk],[x,y]);
- Xác định bán kính đường tròn đa định nghĩa:
radius(tenduongtron);
- Xác định tọa độ tâm đường tròn đa định nghĩa:
coordinates(center(tenduongtron));
- Xác định diện tích đường tròn đa định nghĩa:
area(tenduongtron);
- Tìm tiếp tuyến với đường tròn tại một điểm:
tangentpc(tentieptuyen,diem,tenduongtron);
- Tìm tiếp tuyến với đường tròn qua một điểm:
tangentline(diem,tenduongtron,[tentieptuyen1, tentieptuyen2]);
> point(C,0,0):
> circle(c,[A,B,C],[x,y]):
> detail(c):
> radius(c):
> coordinates(center(c)):
> area(c):
> circle(c1,[C,5],[x,y]):
> detail(c1):
> tangentpc(t1,C,c):
> detail(t1):
> Equation(t1):
> TangentLine(t2,point(D,4,5),c,[l1,l2]):
Các hàm trên đối tượng tam giác
- Định nghĩa tam giác:
triangle(ten_tam_giac,[dinh1,dinh2,dinh3],[x,y]);
- Xác định diện tích tam giác:
area(ten_tam_giac)
- Xác định đường cao tam giác ứng với một đỉnh:
altitude(ten_duong_cao,dinh,ten_tam_giac);
- Xác định đường trung tuyến tam giác ứng với một đỉnh:
median(tenduongtrungtuyen,dinh,tentamgiac);
- Xác định đường phân giác tam giác ứng với một đỉnh:
bisector(ten_duong_phan_giac, dinh, ten_tam_giac);
- Xác định đường phân giác tam giác ứng với một đỉnh:
ExternalBisector(ten_duong_phan_giac,dinh,tentamgiac);
- Xác định trọng tâm tam giác:
centroid(ten_trong_tam,ten_tam_giac);
- Xác định trực tâm tam giác:
orthorcenter(ten_truc_tam, tentamgiac);
- Xác định đường tròn nội tiếp tam giác:
incircle(ten_duong_tron_noi_tiep,tentamgiac);
> triangle(ABC,[A,B,C],[x,y]):
> detail(ABC):
> area(ABC):
> altitude(ha,A,ABC):
> median(BM,B,ABC):
> detail(BM):
> bisector(Ct,C,ABC):
> detail(Ct):
> ExternalBisector(Cx,C,ABC):
> centroid(G,ABC):
> coordinates(G):
> orthocenter(H,ABC):
> coordinates(H):
> incircle(cc,ABC):
> detail(cc):
2. Các tính toán trong hình học không gian: gói geom3d
Khởi tạo
> with(geom3d):
Các hàm trên đối tượng điểm
- Định nghĩa điểm: point(ten_diem, hoanh_do, tung_do,cao_do);
- Hiển thị tọa độ của một điểm: coordinates(ten_diem);
- Xác định trung điểm đoạn thẳng tạo bởi hai điểm: midpoint(ten_trung_diem, diem_1,
diem_2);
> point(A,2,3,1):
> point(B,-3,1,3):
> coordinates(A):
> coordinates(B):
> midpoint(M,A,B):
> coordinates(M):
Các hàm trên đối tượng đường thẳng
- Định nghĩa đường thẳng qua hai điểm:
line(ten_dt, [diem_dau, diem_cuoi]);
- Định nghĩa đường thẳng có phương trình tham so cho trước:
line(ten_dt,pt_tham_so_duong_thang,ten_tham_so);
-Tìm giao điểm giữa hai đường thẳng:
intersection(ten_giao_diem, dt_1, dt_2);
-Tìm góc giữa hai đường thẳng:
FindAngle(dt_1, dt_2);
- Tính khoảng cách từ một điểm tới một đường thẳng:
distance(diem, duong_thang);
- Xác định hình chiếu của một điểm lên trên một đường thẳng:
projection(ten_hinh_chieu, diem, duong_thang);
- Xác định điểm đối xứng của một điểm qua một đường thẳng:
reflection(ten_diem_dx, diem, duong_thang);
> line(d1,[A,B]):
> line(d2,[2+2*t,1-4*t,3*t],t):
> detail(d1):
Warning, assume that the parameter in the parametric equations is _t
Warning, assuming that the names of the axes are _x, _y, and _z
> detail(d2):
Warning, assuming that the names of the axes are _x, _y, and _z
> intersection(K,d1,d2):
intersection: "the given objects do not intersect"
> FindAngle(d1,d2):
> distance(A,d1):
> distance(B,d2):
> projection(N,B,d2):
> coordinates(N):
> reflection(B1,B,d2):
> coordinates(B1):
Các hàm trên đối tượng mặt phẳng
- Định nghĩa mặt phẳng qua 3 điểm:
plane(ten_mat_phang,[diem1, diem2, diem3],[x,y,z]);
- Định nghĩa mặt phẳng bằng phương trình tổng quát:
plane(ten_mat_phang,pt_tongquat,[x,y,z]);
- Xác định giao tuyến của hai mặt phẳng:
line(ten_giao_tuyen,[mp1,mp2]);
- Xác định khoảng cách giữa một điểm và một mặt phẳng:
distance(ten_diem,ten_mat_phang);
- Xác định góc giữa hai mặt phẳng:
FindAngle(ten_mp_1, ten_mp_2);
> point(C,0,0,0):
> plane(p,[A,B,C],[x,y,z]):
> detail(p):
> plane(p1,2*x-3*y+z=0, [x,y,z]):
> line(gt,[p,p1]):
> detail(gt):
Warning, assume that the parameter in the parametric equations is _t
> distance(A,p1):
> FindAngle(p,p1):

0 nhận xét: