Đạ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 CHO TRÍ TUỆ
NHÂN TẠO
ĐỀ TÀI:
ỨNG DỤNG MAPLE TRONG MỘT SỐ VẤN ĐỀ CỦA ĐẠI
SỐ TUYẾN TÍNH
GVHD : PGS.TS Đỗ Văn Nhơn
HVTH : Trịnh Ngọc Thư
Mã số : CH1102017
Lớp : Cao học khóa 6
HÀ NỘI – 2013
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
MỤC LỤC
LỜI MỞ ĐẦU 3
PHẦN A: GIỚI THIỆU 4
1. GIỚI THIỆU VỀ MAPLE 4
2. GIỚI THIỆU VỀ LẬP TRÌNH TRONG MAPATH 4
3. CÁC TÍNH NĂNG CƠ BẢN CỦA MAPATH 5
PHẦN B: ỨNG DỤNG CỦA MAPLE TRONG MỘT SỐ VẤN ĐỀ CỦA ĐẠI SỐ TUYẾN TÍNH 6
1. CÁC PHÉP TOÁN ĐẠI SỐ TRÊN MA TRẬN VÀ VECTƠ 6
1.1 Một số lệnh tạo ma trận cấp mxn: 6
1.2 Tạo vectơ 7
1.3. Các phép tính trên ma trận và vectơ 7
1.4 Tìm vết của ma trận (tổng các phần tử thuộc đường chéo chính) 11
1.5 Tạo ma trận con từ một ma trận cho trước 11
1.6 Tạo một vectơ từ một ma trận: 12
1.7 Trích một dòng, cột của ma trận: 12
1.8 Hoán vị dòng, cột của một ma trận: 13
1.9 Tìm ma trận chuyển vị: 13
nghệ thông tin đã giảng dạy tận tình các kiến thức cần thiết và bổ ích, tạo cơ sở cho
việc làm luận văn và công việc của em sau này.
Tuy nhiên, do thời gian hạn hẹp, mặc dù đã nỗ lực hết sức mình, nhưng chắc
rằng bài viết khó tránh khỏi thiếu sót. Em rất mong nhận được sự góp ý và bảo tận tình
của thầy và các bạn để bài viết của em có thể hoàn thiện hơn.
Em xin chân thành cảm ơn./.
Hà Nội, tháng 1 năm 2013
Học viên thực hiện
Trịnh Ngọc Thư
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 2
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
LỜI MỞ ĐẦU
Chúng ta đang sống trong thế kỷ thứ 21 thế kỷ của sự bùng nổ về công nghệ mà
đỉnh cao là công nghệ thông tin. Công nghệ thông tin đã và đang ứng dụng nhiều vào
phương pháp học tập, nghiên cứu. Kèm theo đó nó đang đổi mới nghệ thuật giảng
dạy vốn mang sắc màu truyền thống, nay đã được điểm thêm những nét mới đầy hấp
dẫn và hiệu quả.
Có một thực tế là học sinh và cả sinh viên đang ngày càng nhàm chán hơn với
cách dạy và học truyền thống giờ đây người học nhìn thấy được những minh họa
sinh động rõ ràng và dễ hiểu. Đồng thời không phải lặp đi lặp lại một cách thật nhàm
chán các tính toán hay các phép biến đổi nặng nề mà không hiểu được bản chất thật
sự.
Hiện nay ở Việt Nam chúng ta đã có những phần mềm nổi tiếng hỗ trợ giáo
viên, học sinh, sinh viên trong giảng dạy và học tập, như Maple. Để hiểu hơn về vấn đề
này em xin chọn đề tài : “ Ứng dụng Maple trong một số vấn đề của đại số tuyến
tính”.
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 3
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
PHẦN A: GIỚI THIỆU
1. GIỚI THIỆU VỀ MAPLE
end;
3. CÁC TÍNH NĂNG CƠ BẢN CỦA MAPATH
Là một hệ thống các toán trên các biểu thức đại số;
Có thể thực hiện được hầu hết các phép toán cở bản trong chương trình toán đại học và
sau đại học;
Cung cấp các công cụ minh họa hình học thuận tiện gồm: vẽ đồ thị tĩnh và động của
các đường và mặt được cho bởi các hàm tùy ý trong nhiều hệ tọa độ khác nhau;
Một ngôn ngữ lập trình đơn giản và mạnh mẽ có khả năng tương tác với ngôn ngữ lập
trình khác;
Cho phép trích xuất ra các định dạng khác nhau như LaTex, Word, HTML, …
Một công cụ biên soạn giáo án và bài giảng điện tử, thích hợp với các lớp học tương
tác trực tiếp
Một trợ giáo hữu ích cho học sinh vào sinh viên trong việc tự học.
Chương trình Maple cho phép ta tính định thức ma trận, giải hệ phương trình tuyến tính.
Ngoài ra, Maple còn cho phép ta tìm ra giá trị riêng, vectơ riêng, đa thức đặc trưng, tìm dạng
chính tắc của ma trận và tính rất nhiều ma trận đặc biệt như Hilbert, Toeplitz v/v…
Các lệnh của đại số tuyến tính được cài sẵn trong gói công cụ linalg do đó trước khi sử
dụng ta phải nạp gói công cụ này vào trong bộ nhớ bằng lệnh:
>with(linalg):
Trong phạm vi phụ lục này sẽ giới thiệu đôi nét về ứng dụng của chương trình Maple
trong một số phép toán đại số trên ma trận và vectơ, cũng như việc giải một hệ phương trình
tuyến tính đơn giản. Để biết thêm các ứng dụng khác của chương trình Maple, sinh viên có
thể tham khảo ở các tài liệu khác.
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 5
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
PHẦN B: ỨNG DỤNG CỦA MAPLE TRONG MỘT SỐ VẤN ĐỀ CỦA ĐẠI
SỐ TUYẾN TÍNH
1. CÁC PHÉP TOÁN ĐẠI SỐ TRÊN MA TRẬN VÀ VECTƠ
1.1 Một số lệnh tạo ma trận cấp mxn:
Cú pháp:
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 6
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
1 2
: 2 6
4 23
A
=
1.2 Tạo vectơ
Cú pháp:
• vector(n, K): Tạo vectơ với các phần tử được xác định trong K.
• Vector [O](n,init): Tạo một vectơ với các phần tử ban đầu được xác định trong init.
Trong đó:
n: là số phần tử của vectơ
O: Tùy chọn row hoặc column (mặc định là column)
Ví dụ:
>vector(3,[2,3,36]);
[2,3,36]
>s:={(1)=1,(2)=5};
Vector(2,s);
1
5
>Vector[column]([2,3]);
=
1.3.2 Tổng hai ma trận:
Dùng lệnh đánh giá evalm để tính tổng của hai ma trận
Cú pháp: evalm(expr)
Trong đó expr là biểu thức tổng, hiệu, tích của các ma trận.
Ví dụ: Tính tổng các ma trận sau:
>restart:
>with(linalg):
C:=matrix([[2,3],[4,7]]);
E:=matrix([[1,a],[9,1]]);
F:=matrix([[b,0],[1,0]]);
Warning: the protected names norm and trace have been redefined and unprotected
2 3
:
4 7
C
=
1
:
9 1
a
E
Multiply(A,B,…): Nhân các ma trận A, B, … với nhau.
evalm(A&*B&*C…): Nhân các ma trận A, B, C với nhau bằng lệnh đánh giá evalm.
Khi đó, máy sẽ thực hiện phép nhân này từ trái sang phải.
Ví dụ: Nhân hai ma trận sau đây:
: [3, 4]A =
và
1
:
2
B
=
Ta thực hiện như sau:
>A:=array([3,4]);
>B:=array([1,2]);
evalm(B&*A);
Ta được kết quả:
A: = [3, 4]
B:=[1,2]
11
Hoặc khi dùng lệnh multiply
>multiply(A,B);
11
Chú ý: Khi nhân và tính tổng cùng một lúc bằng lệnh lượng giá, thì máy sẽ thực hiện theo
thứ tự nhân trước rồi cộng trừ sau.
1.3.4 Tính tích trong của ma trận và vectơ
Cú pháp: innerprod(u,A
1
>A:=matrix(2,3,[1,1,1],[2,0,1]]);
1 1 1
:
2 0 1
A
=
>innerprod(u,A,v);
16
>innerprod(A,v);
[6,5]
>innerprod(u,w);
7
1.3.5 Tích có hướng của hai vectơ
Cú pháp: crossprod(u, v)
Trong đó:
+ u, v là các vectơ cần nhân có hướng
+ Mỗi vectơ có ba thành phần
Ví dụ:
>u: = vector([1, 2, 0]);
u:=[1, 2,0]
>v:=vector([2,1,4]);
v:=[2, 1, 4]
>crossprod(u, v);
[8, -4, -3]
1.3.6 Tích vô hướng hai vectơ
Cú pháp: dotprod(u, v) hoặc dotprod(u, v, orthogonal)
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 10
A
a
=
>trace(A);
1+ a
1.5 Tạo ma trận con từ một ma trận cho trước
Cú pháp:
submatrix(A, Rrange, Crange)
submatrix(A,RList,CList)
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 11
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
Trong đó:
+ A là ma trận cho trước
+Rrange, Crange: Khoảng chỉ số dòng, cột
+Rlist, Clist: Danh sách chỉ số dòng, cột
Ví dụ: Tạo ma trận con P từ ma trận A
>with(linalg);
A:matrix(2,3,[8,2,5,2,0,3]);
8 2 5
:
2 0 3
A
=
>P:=submatrix(A,1 2,2 3);
col(A, i): Trích từ cột thứ i của ma trận A.
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 12
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
col(A, i k): Trích từ cột thứ i đến cột thứ k của ma trận A.
Trong đó:
- A là ma trận
- i, k là các chỉ số nguyên.
Ví dụ:
>A:=matrix(3,3,[2,2,5,9,8,5,2,7,2]);
2 2 5
: 9 8 5
2 7 2
A
=
>u:=row(A,3);
u:=[2, 7, 2]
>v:=row(A,1 3);
v:=[2, 2, 5],[9,8,5],[2,7,2]
1.8 Hoán vị dòng, cột của một ma trận:
Cú pháp:
swaprow(A, r
1
, r
2
): Hoán vị 02 dòng r
=
1.9 Tìm ma trận chuyển vị:
Cú pháp: transpose (A)
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 13
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
Ví dụ:
>A:=matrix(3,3,[2,2,5,9,8,5,2,7,2]);
2 2 5
: 9 8 5
2 7 2
A
=
>B:=transpose(A);
2 9 2
: 2 8 7
5 5 2
B
=
5 0 9
C
=
>charmat(C,lambda);
2 2 3
2 3 4
5 0 9
λ
λ
λ
− − −
− − −
− −
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 14
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
1.12 Tìm đa thức đặc trưng của một ma trận:
Cú pháp: charpoly(C, x) Tìm đa thức đặc trưng của ma trận C trình bày kết quả theo biến
x.
Ví dụ:
Tìm đa thức đặc trưng của ma trận C
0 0 1
9
−
1.14 Phép khử Gauss-Jordan
Cú pháp:
with(linalg);
gaussjord(A, r);
Trong đó:
- A là ma trận cần biến đổi
- r cho biết hạng của ma trận
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 15
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
Ví dụ:
>with(linalg);
>A:=matrix(3,4,[2,1,3,2,3,5,2,1,1,2,3,5]);
2 1 3 2
: 3 5 2 1
1 2 3 5
A
Ví dụ:
>A:=matrix(3,3,[1,-3,3,3,-5,3,6,-6,4]);
1 3 3
: 3 5 3
6 6 4
A
−
= −
−
>v:=[eigenvectors(A)];
v:=
[ ],[ ], ,4 1 { }[ ], ,1 1 2 [ ], ,-2 2 { },[ ], ,1 1 0 [ ], ,0 1 1
1.17 Tìm giá trị riêng của ma trận A
Cú pháp
with(linalg);
eigenvalues(A);
Ví dụ:
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 16
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
>A:=matrix(3,3,[1,-3,3,3,-5,3,6,-6,4]);
1 3 3
: 3 5 3
6 6 4
A
1.19 Tính định thức của ma trận A
Cú pháp
With(linalg);
det(A);
Ví dụ:
>A:=matrix(3,3,[1,-3,3,3,-5,3,6,-6,4]);
1 3 3
: 3 5 3
6 6 4
A
−
= −
−
>det(A);
16
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 17
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
1.20 Tìm ma trận nghịch đảo của ma trận A
Cú pháp
with(linalg);
Inverse(A);
Ví dụ:
>A:=matrix(3,3,[1,-3,3,3,-5,3,6,-6,4]);
1 3 3
: 3 5 3
-1
8
-3
8
3
8
3
8
-7
8
3
8
3
4
-3
4
1
4
1 -3 3
0 4 -6
0 0 4
>r;
3
>d;
16
2. GIẢI PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
2.1. Lập hệ phương trình tuyến tính từ các hệ số của ma trận:
Cú pháp
with(linalg);
geneqns(A,vars);
geneqns(A,vars,b);
Trong đó
A: là ma trận
Vars: Tên các biến của hệ phương trình
b: Vectơ phải của hệ
Ví dụ:
>with(linalg);
>A:=matrix(3,3,[3,1,0,3,1,1,1,3,5]);
A
=
b:= [2, 9, 2]
>geneqns(A,[x,y,z],b);
{ }, , = + 3 x y 2 = + + 3 x y z 9 = + + x 3 y 5 z 2
>linsolve(A,b);
, ,
39
8
-101
8
7
Vậy nghiệm của hệ là: x = 39/8; y = -101/8; z = 7
HVTH: Trịnh Ngọc Thư – CH1102017 Trang 20
Bài thu hoạch môn Lập trình Symbolic và trí tuệ nhân tạo
KẾT LUẬN
Bài thu hoạch của em đã tìm hiểu được một số ứng dụng của Maple trong một