TÌM HIỂU MAPLE ỨNG DỤNG TRONG GIẢI các bài TOÁN - Pdf 95

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÀI THU HOẠCH MÔN LẬP TRÌNH SYMBOLIC
ĐỀ TÀI:
TÌM HIỂU MAPLE ỨNG DỤNG TRONG
GIẢI CÁC BÀI TOÁN
Giảng viên: PGS.TS Đỗ Văn Nhơn
Học viên: Đinh Đức Khoa
Mã số: CH1102003
Lớp: Cao học khóa 6
Hà Nội – 2/2013
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
MỤC LỤC

MỤC LỤC 1
LỜI MỞ ĐẦU 2
PHẦN I. GIỚI THIỆU TỔNG QUÁT VỀ PHẦN MỀM MAPLE 3
PHẦN II. ỨNG DỤNG MAPLE ĐỂ GIẢI CÁC BÀI TOÁN TRONG ĐẠI SỐ TUYẾN
TÍNH 13
PHẦN III. LẬP TRÌNH TRONG MAPLE 30
KẾT LUẬN 41
TÀI LIỆU THAM KHẢO 42
HVTH: Đinh Đức Khoa - CH1102003
Trang: 1
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
LỜI MỞ ĐẦU

Chiến lược phát triển giáo dục Đại học – Cao đẳng từ 2005 đến 2015 là từng
bước đổi mới nội dung, chương trình, giáo trình và phương pháp dạy học. Một
trong những khâu then chốt của quá trình đổi mới phương pháp dạy học là rèn
luyện kỹ năng tự học, tự thích ứng cho sinh viên.

Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
PHẦN I. GIỚI THIỆU TỔNG QUÁT VỀ PHẦN
MỀM MAPLE

Maple là gói phần mềm toán học thương mại phục vụ cho nhiều lĩnh vực được
xây dựng và phát triển bởi của hãng Waterloo. P hiên bản mới nhất là Maple 16.
Maple là một công cụ tuyệt vời hỗ trợ cho việc học tập và nghiên cứu toán học.Với
Maple ta có thể thực hiện được mọi điều từ những phép toán đơn giản nhất, sơ cấp
nhất cho đến những tính toán phức tạp nhất.
Không chỉ dừng lại ở việc hỗ trợ tính toán, Maple còn có khả năng lập trình. Ở
phương diện này, có thể xem Maple như

là một ngôn ngữ lập trình trong đó chúng ta
có thể tạo ra những chương trình và những gói (package) để tái sử dụng.
Maple cung cấp nhiều công cụ trực quan, nhiều gói lệnh chuyên ngành phù hợp
với các tính toán phổ thông và bậc đại học, giao diện hoàn thiện hơn và hỗ trợ soạn
thảo tốt hơn. Nhiều trường đại học sử dụng Maple để giảng dạy một số môn trong
khung chương trình đào tạo đã góp phần làm thay đổi cách học toán, song song với
lối giải toán truyền thống sinh viên có thể giải quyết bài toán với sự giúp đỡ của
Maple.
I.1. Giao diện Maple 13
Maple 13 cung cấp hai loại giao diện:
- Classic Worksheet
- Standard Worksheet
Giao diện Classic
Giao diện Standard
HVTH: Đinh Đức Khoa - CH1102003
Trang: 3
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
I.2. Quy tắc gõ lệnh

e
(x) log10(x) log
10
(x)
Max(x1,x2 ) Tính giá trị
lớn nhấn của
x1, x2
Min(x1,x2 ) Tính giá trị
nhỏ nhấn của
x1, x2
Round(x) Hàm làm
tròn giá trị x
sin(x) Sin(x) cos(x) Cos(x) tan(x) Tg(x)
arcsin(x) Arcsin(x) arccos(x) Arccos(x) arctan(x) Arctg(x)
I.4. Tính toán trên Maple
- Maple có khả năng tính toán với những con số rất lớn với độ chính xác cao.
> 1000000!:# Tinh 1000000!
HVTH: Đinh Đức Khoa - CH1102003
Trang: 5
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
> length(%);#Chieu dai cua 1000000!
5565709
- Maple có đầy đủ các hàm tính toán từ đơn giản đến phức tạp.
> 2011+2012;
4023
> 30*11*2011;
663630
I.4.1. Tính toán trên số nguyên
Các hàm thông dụng :
Hàm Ý nghĩa Hàm Ý nghĩa Hàm Ý nghĩa

120
> ifactor(%);
(2)
3
(3) (5)
> isprime(17);
true
> nextprime(17);
19
> prevprime(17);
13
HVTH: Đinh Đức Khoa - CH1102003
Trang: 6
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
> isqrt(12);
3
> igcd(24,18);
6
> a:=123:b:=32:
>irem(a,b);
>iquo(a,b);
27
I.4.2. Tính toán trên biểu thức
Hàm Ý nghĩa Hàm Ý nghĩa Hàm Ý nghĩa
expand(bt) Khai triển
biểu thức bt
simplify(bt) Đơn giản biểu
thức
factor(bt) Phân tích
đa thức

đa thức bt
Ví dụ :
> bt1:=(x+y)*(2*x-1);
bt:= (x + y) ( 2x - 1 )
> expand(bt1);
2x
2
- x + 2yx - y
> collect(bt1,x);
2x2 + (2y - 1) x - y
> bt2:=(x+y)^3 - (x^2 + 2*y^2)*(x+3*y);
bt:= (x + y)
3
- (x
2
+ 2y
2
) (x +3y)
> simplify(bt2);
xy
2
- 5y
3
> subs(x=3,y=5,bt);
HVTH: Đinh Đức Khoa - CH1102003
Trang: 7
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
40
I.5. Giới hạn, đạo hàm và tích phân
I.5.1. Tính giới hạn

- Tính nguyên hàm : int(f,x);
- Tính tích phân cận a,b : int(f,x=a b);
> int(sin(x)*tan(x),x);
- sin(x) + ln (sec(x) sinx + tan(x))
> int(sin(x)*exp(x),x=1 3);
> int( exp(-x^2)*ln(x), x=0 infinity );
I.4.4. Tính toán trên ma trận
I.4.4.1. Khai báo ma trận :
Có 2 cách:
Cách 1 : A:=matrix(m,n, [ dãy phần tử]) ;// dãy phần tử cách nhau bởi dấu phẩy (,).
> A:=matrix(2,2,[sin(x),cos(x),sin(2*x),cos(2*x)]);
A:=
Cách 2 : A:=array( [ [Dòng 1], [Dòng 2], ,[Dòng n] ] );
HVTH: Đinh Đức Khoa - CH1102003
Trang: 9
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
> A:=array([[1,2,3],[4,5,6]]);
A:=
I.4.4.2. Các phép toán trên ma trận
- Các phép toán trên ma trận nằm trong gói LinearAlgebra. Để sử dụng ta dùng
gói lệnh ta dùng with(gói lệnh) .
- Phép cộng, nhân ma trận : lệnh evalm;
> with(linalg): > A:=matrix(2,2,[1,x,2,1-x]):
> B:=matrix(2,2,[1,0,2,1]):
> evalm(A+B);
> evalm(A&*B);
- Tạo ma trận đơn vị cấp n : IdentityMatrix ( n );
> IdentityMatrix(4);
- Tính định thức của ma trận A: det(A);
> A:=matrix(2,2,[1,x,2,1-x]);

II.1. Số phức
- Trong Maple quy định số phức i là I
II.1.1. Tạo số phức
Ta có các lệnh cơ bản sau :
- Để gán biến z là số phức a + bi ta nhập lệnh: z:=a+b*I.
- Để tạo số phức a +bi ta nhập lệnh: complex(a,b).
- Để tạo số phức bi ta nhập lệnh: complex(b).
II.1.2. Các phép toán trên số phức
Các phép toán cộng, trừ, nhân, chia hay lũy thừa tương ứng là các ký hiệu +,
-,*, /. Nhưng thông thường kết quả thu được khi ta thực hiện những phép toán trên các
số phức không phải là dạng đại số do đó ta sử dụng hàm sau để cho kết quả dạng đại
số như mong muốn: evalc(…)
- Để xác định phần thực của z ta nhập lệnh: re(z);
- Để xác định phần ảo của z ta nhập lệnh: im(z);
- Để xác định modun của z ta nhập lệnh: abs(z);
- Để xác định argument của z ta nhập lệnh: argument(z);
- Để xác định số phức liên hợp của z ta nhập lệnh: conjugate(z);
- Để đơn giản biểu thức ta nhập lệnh: simplify(expr) với expr là biểu thức.
II.1.3. Căn của số phức, giải phương trình và hệ phương trình
- Để xác định căn bậc n của số phức ta nhập lệnh: solve(x^n=z,x)
- Để giải phương trình hay hệ phương trình hoặc hệ bất phương trình eqns với
các biến vars. Nếu có nhiều phương trình hoặc bất phương trình thì eqns là
{eqn1,eqn2,…}; nếu nhiều biến thì vars là {var1,var2…} với dòng lệnh sau đây:
solve(eqns,vars)
HVTH: Đinh Đức Khoa - CH1102003
Trang: 13
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
Trên đây là những dòng lệnh cơ bản nhất khi tính toán trên số phức. Để hiểu rõ
hơn về những dòng lệnh này, ta sẽ xét những ví dụ cụ thể với mục đích duy nhất là
làm sáng tỏ những dòng lệnh trên.

> z2:=evalc(z2); // Đưa z2 về dạng đại số.
z2:=1;
> simplify(abs(z2));// Mô đun của z2.
1
> simplify(argument(z2));// Argument của z2.
0
Vậy số phức z2 được viết dưới dạng lượng giác là: Z2 = 1 * (cos0 +isin0) = 1.
b)
Nhập vào Maple ta có:
> z1:=(sqrt(3)-I);
z1:=
> z1:=evalc(z1);
z1:=
> simplify(abs(z1));
2
> simplify(argument(z1));
-
Vậy số phức z1 được viết dưới dạng lượng giác là:
Z1 = 2. (cos - .
II.2. Ma trận và hệ phương trình tuyến tính
Để thực hành tính toán các vấn đề liên quan đến đại số tuyến tính, Maple cung
cấp cho ta hai gói lệnh cơ bản là: linalg và linearalgebra. Mọi gói lệnh chứa nhiều hàm
và nhiều phép toán. Để gọi gói lệnh nào đó ta sử dụng:
>with(package); với package là tên gói lệnh Để ẩn đi các hàm khi thực thi gọi
gói lệnh ta dùng:
>with(linalg):
HVTH: Đinh Đức Khoa - CH1102003
Trang: 15
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
II.2.1. Tạo ma trận

multiply(a,b,c,…) hoặc evalm(a.b.c….)
HVTH: Đinh Đức Khoa - CH1102003
Trang: 16
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
- Để tính lũy thừa k của ma trận A ta nhập:
evalm(a^k)
- Để xác định ma trận nghịch đảo của A ta nhập:
inverse(a) hoặc evalm(a^(-1))
II.2.3. Các phép biến đổi sơ cấp trên ma trận
- Để đổi chỗ hai dòng i và j của ma trận A ta nhập: swaprow(a,i,j)
- Để đổi chỗ hai cột i và j của ma trận A ta nhập:
swapcol(a,i,j)
- Để nhân dòng i của ma trận A với c ta nhập:
mulrow(a,i,c)
- Để nhân cột i của ma trận A với c ta nhập:
mulcol(a,i,c)
- Để thay dòng i của ma trận A bởi dòng I cộng cho c lần dòng j ta nhập:
addrow(a,i,j,c)
- Để thay cột i của ma trận A bởi cột I cộng cho c lần cột j ta nhập:
addcol(a,i,j,c)
II.2.4. Ma trận dạng bậc thang của ma trận
- Nếu hệ số ở vị trí i,j của A khác 0 thì sẽ đƣa các hệ số ở vị trí còn lại trên cột j
về 0 bằng phép biến đổi sơ cấp trên dòng loại 3. Ngược lại, báo lỗi thì ta nhập:
pivot(a,i,j)
- Để đưa ma trận A về dạng bậc thang ta nhập:
gausselim(a)
- Để đƣa ma trận A về dạng bậc thang rút gọn ta nhập:
gaussjord(a)
- Để tính hạng của ma trận A ta nhập:
rank(a) 38

A:=
> B:=matrix(3,2,[-1,-1,2,2*i,i,1]);
B:=
> C:=matrix(2,1,[4,1]);
C:=
> D:=evalm(A.B.C);
Vậy tích trên bằng:
Bài 2:
Xác định hạng của ma trận sau:
HVTH: Đinh Đức Khoa - CH1102003
Trang: 19
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
Nhập vào Maple ta có:
> with(linalg);
> A:=matrix(3,3,[3,5,7,1,2,3,1,3,5]);
A:=
> rank(A);
2
Vậy hạng của ma trận là: 2.
Nhập vào Maple ta có:
> with(linalg):
> B:=matrix(4,4,[1,-1,5,-1,1,1,-2,3,3,-1,8,1,1,3,-9,7]);
B:=
> rank(B);
2
Vậy hạng của ma trận B là: 2.
Bài 3:
Giải các phương trình sau:
Nhập vào Maple ta có:
HVTH: Đinh Đức Khoa - CH1102003

- Ma trận Mij cấp n-1 thu đƣợc từ A bằng cách bỏ đi dòng thức i và cột thứ j là
ma trận con của A ứng với phần tử aij.
b) Định thức .
- Định thức cấp n của ma trận vuông A = (a
ij
)
n
ϵ M
n
(R) , ký hiệu det(A) hay |A|,
là 1 số thực được định nghĩa :
+ Ma trận cấp 1 : A:= (a
11
)=> det A=a
11
;
+ Ma trận cấp 2 : => det A= a
11
a
22
- a
12
a
21
;
+ Ma trận cấp 3 :A= det A= a
11
A
11
+a

A:=
> det(A);
27
> inverse(A);
Vậy ma trận nghịch đảo của A là:
A-1 =
b) A =
> B:=matrix(3,3,[1,2,3,2,3,4,1,5,7]);
B:=
> 1/B=evalm(1/B);
HVTH: Đinh Đức Khoa - CH1102003
Trang: 23
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
c) C =
> C:=matrix(3,3,[2,3,-4,0,-4,2,1,-1,5]);
C:=
> 1/C=evalm(1/C);
d)
> F:= matrix(3,3,[3,2,1,4,5,2,2,1,4]);
F:=
> 1/F=evalm(1/F);
HVTH: Đinh Đức Khoa - CH1102003
Trang: 24


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status