Tải bản đầy đủ (.doc) (18 trang)

Sử dụng phần mềm Maple để giải quyết các vấn đề trên ma trận và ứng dụng vào giải hệ phương trình đại số tuyến tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (187.13 KB, 18 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM HUẾ
KHOA TOÁN
SỬ DỤNG PHẦN MỀM MAPLE ĐỂ GIẢI QUYẾT
CÁC VẤN ĐỀ TRÊN MA TRẬN VÀ ỨNG DỤNG VÀO
GIẢI HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
Giảng viên hướng dẫn Lớp toán 3B - nhóm 09
Nguyễn Đăng Minh Phúc Nguyễn Ngọc Tư
Nguyễn Như Thứ
Phan Quốc Luân
Lương Ngọc Tuấn
Huế, ngày 20 tháng 9 năm 2013
MỤC LỤC
LỜI NÓI ĐẦU 1
I. Giới thiệu về phần mềm maple 2
1. Maple 2
2. Ứng dụng chương trình Maple đối với một số vấn đề của đại số
tuyến tính 3
II. Các phép toán đại số trên ma trận và vectơ 3
1. Một số lệnh tạo ma trận cấp m×n 3
2. Các phép tính trên ma trận và vectơ 4
2.1. So sánh hai ma trận 4
2.2. Tổng hai ma trận 5
2.3. Tích của hai ma trận 5
3. Tìm vết của ma trận (tổng các phần tử thuộc đường chéo chính).6
4. Tạo ma trận con từ một ma trận cho trước 7
5. Trích một dòng, cột của ma trận 7
6. Hoán vị dòng, cột của một ma trận 8
7. Tìm ma trận chuyển vị 8
8. Tìm ma trận liên hợp 9
9. Tìm ma trận đặc trưng 9
10. Tìm đa thức đặc trưng của một ma trận 9


11. Biến đổi ma trận về dạng bậc thang 9
12. Phép khử Gauss-Jordan 10
13. Tìm vectơ riêng của ma trận A 11
14. Tìm giá trị riêng của ma trận A 11
15. Tìm hạng của ma trận A 12
17. Tìm ma trận nghịch đảo của ma trận A 12
18. Biến đổi ma trận về dạng tam giác 13
III. Giải phương trình đại số tuyến tính 13
1. Lập hệ phương trình tuyến tính từ các hệ số của ma trận 13
2. Giải hệ phương trình đại số tuyến tính 14
IV. Kết luận 16
V. Tài liệu tham khảo 16
2
LỜI NÓI ĐẦU
Từ khi nền toán học hình thành và phát triển cho đến nay thì việc
nghiên cứu các vấn đề toán học luôn thu hút nhiều nhà toán học cũng như
những người có lòng đam mê đối với toán học, chẳng hạn như việc giải một
bài toán nào đó.Tuy nhiên, vấn đề đặt ra là tìm ra cách thức nào hiệu quả và
nhanh chóng để đi đến kết quả cụ thể và dễ hiểu cho bạn đọc. Bên cạnh những
cách thức tính toán cổ điển lâu nay thì cùng với sự phát triến của khoa học thì
việc giải quyết các vấn đề toán học cũng phát triến với nhiều cách thức thuận
tiện mà hiệu quả.
Cũng chính vì lí do đó nhóm chúng tôi đã thực hiện đề tài ” Sử dụng
phần mềm Maple để thực hiện các phép toán đại số trên ma trận va ứng dụng
vào giải hệ phương trình đại số tuyến tính ” là một trong những cách để giải
một bài toán về hệ phương trình đại số tuyến tính. Đề tài giúp chúng ta sử
dụng phần mềm maple để thực hiên các thao tác về ma trận như: tìm hạng,
tìm ma trận khả nghịch, tìm đa thức đặc trưng,…và ứng dụng để giải hệ
phương trình đại số tuyến tính.
Trong lúc thực hiện đề tài không thể tránh khỏi những sai sót vì vậy

mong bạn đọc góp ý, xin cảm ơn.
1
I. Giới thiệu về phần mềm maple:
1. Maple:
Là một phần mềm Toán học do Đại Học Tổng HợpWaterloo(Canada)
xây dựng và đưa vào sử dụng năm 1985. Sau nhiều lần cải tiến và phát
triển qua nhiều phiên bản khác nhau và ngày càng được hoàn thiện. Maple
chạy trên tất cả các hệ điều hành, có trình trợ giúp rất dễ sử dụng. Từ phiên
bản 7, Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói lệnh
tự học gắn liền với toán phổ thông và đại học. Ưu điểm đó khiến ngày càng
có nhiều nước trên thế giới lựa chọn sử dụng Maple trong dạy-học toán tương
tác trước đòi hỏi của thực tiễn và sự phát triển của giáo dục.
- Chức năng chính của Maple:
• Thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và độ
chính xác cao.
• Sử dụng các gói chuyên dụng của Maple để giải quyết các bài toán cụ
thể như: vẽ đồ thị (gói plots), hình học giải tích (gói geometry), đại số tuyến
tính (gói linalg), Giải tích (gói student), phương trình vi phân(gói DEtools), lý
thuyết số (gói numtheory), Dữ liệu rời rạc (gói DiscreteTransforms),
• Thiết kế các đối tượng 3 chiều;
• 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;
• Tính toán trên các biểu thức đại số;
• Có thể thực hiệc đượ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;
• Ngôn ngữ lập trình đơn giản và mạnh mẽ, có khả năng tương tác với
các ngôn ngữ lập trình khác;
• 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 công cụ hữu ích cho học sinh và sinh viên trong việc tự học;

• Và các vấn đề khác
2
- Bạn có thể dễ dàng tìm được các phiên bản của maple và giáo trình
hướng dẫn sử dụng tai trang: www.maplesoft.com
Các bạn có thể download maple 9.5
tại: />2. Ứng dụng chương trình Maple đối với một số vấn đề của đại số
tuyến tính:
- 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.
II. Các phép toán đại số trên ma trận và vectơ:
1. Một số lệnh tạo ma trận cấp m×n:
 Cú pháp:
>matrix(m, n, L);
Trong đó:
+ L: Bảng liệt kê các phần tử của ma trận theo thứ tự từ trái sang phải
và từ trên xuống dưới.
+
11 12 1 21 22 2 1 2
[[ , , , ],[ , , , ], ,[ , , , ]]

n n m m mn
L a a a a a a a a a=
+ Trong trường hợp L được xác định bởi các phần tử cụ thể thì ta có thể
bỏ qua các chỉ số m, n.
3
Ví dụ: Tạo ma trận 3 dòng, 4 cột sau (m = 3, n = 4)
>matrix(3,4,[[1,2,1,2],[3,5,4,6],[3,4,0,2]]);
hoặc bỏ chỉ số hàng, cột
>matrix([[1,2,1,2],[3,5,4,6],[3,4,0,2]]);
Được kết quả:
1 2 1 2
3 5 4 6
3 4 0 2
 
 
 
 
 
Ngoài ra, tạo ma trận cấp mxn với các phần tử của ma trận là các giá
trị hàm của f xác định trên các chỉ số hàng và cột của ma trận, ta thực hiện
như sau:
Ví dụ: Tạo ma trận
(1,1) (1,2)
(2,1) (2,2)
f f
C
f f
 
=
 

 
>C:=matrix(2,2,f);
Để tạo ma trận bằng lệnh tạo mảng, thì ta sử dụng cú pháp:
array(1 m,1 n,L) với L là các phần tử của ma trận.
Ví dụ:
>A:=array(1 3,1 2,[1,2],[2,6],[4,23]]);
1 2
: 2 6
4 23
A
 
 
=
 
 
 
2. Các phép tính trên ma trận và vectơ:
2.1. So sánh hai ma trận:
Để so sánh hai ma trận A và B có cùng số hàng và số cột ta dùng lệnh
sau: equal(A, B);
Ví dụ:
>A:=matrix([[1,2],[3,4]]);
>B:=matrix(2,2,[1,2],[3,4]]);
equal(A,B);
4
Ta được kết quả
1 2
:
3 4
1 2

:
3 4
A
B
true
 
=
 
 
 
=
 
 
2.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]]);
2 3
:
4 7
C
 
=
 

 
1
:
9 1
a
E
 
=
 
 
0
:
1 0
b
F
 
=
 
 
>evalm(C+E);
3 3
13 8
a
+
 
 
 
>evalm(C+2*E-F);
4 3 2
21 9

b a
− +
 
 
 
2.3. Tích của hai ma trận:
Có thể dùng một trong hai hàm sau:
>Multiply(A,B,…): Nhân các ma trận A, B, … với nhau.
5
>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
=

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.
3. Tìm vết của ma trận (tổng các phần tử thuộc đường chéo chính):
 Cú pháp: > trace (T) với T là ma trận
Ví dụ:
TÌm vết của ma trận sau:
>A:=matrix(2,2,[1,2,4,a]);
1 2
:
4
A
a
 
=
 
 
>trace(A);
1+ a
6
4. 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);
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);
2 5
:
0 3
P
 
=
 
 
>P:=submatrix(A,[1,2],[1]);
8
:
2
P
 
=
 

 
5. Trích một dòng, cột của ma trận:
 Cú pháp:
 row(A, i): Trích dòng thứ i của ma trận A.
 row(A, i k): Trích từ dòng i đến dòng k của ma trận A.
 col(A, i): Trích từ cột thứ i của ma trận A.
 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]);
7
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]
6. 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
và r
2
của ma trận A.
swapcol(A, c
1
, c
2
): Hoán vị 02 cột c
1
và c
2
của ma trận A
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:=swaprow(A, 2, 3);

2 7 2
: 9 8 5
2 2 5
B
 
 
=
 
 
 
7. Tìm ma trận chuyển vị:
 Cú pháp: transpose (A);
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
 

 
=
 
 
 
8
8. Tìm ma trận liên hợp:
 Cú pháp: adjoint(A);
Ví dụ: Tìm ma trận liên hợp của ma trận A.
>A:=matrix(2,2,[5,1,2,3]);
5 1
:
2 3
A
 
=
 
 
>adjoint(A);
3 1
2 5

 
 

 
9. Tìm ma trận đặc trưng:
 Cú pháp: charmat(C, x). Tìm ma trận đặc trưng của ma trận C trình
bày kết quả theo biến x.
Ví dụ:

>C:=matrix(3,3,[2,2,3,2,3,4,5,0,9]);
2 2 3
: 2 3 4
5 0 9
C
 
 
=
 
 
 
>charmat(C,lambda);
2 2 3
2 3 4
5 0 9
λ
λ
λ
− − −
 
 
− − −
 
 
− −
 
10. 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 ở trên:
>charpoly(C, lambda);
3 2
14 32 13
λ λ λ
− + −
11. Biến đổi ma trận về dạng bậc thang:
 Cú pháp:
9
>with(linalg);
>rref(A);
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
 
 
=
 
 
 
>rref(A);
20
1 0 0
9
7
0 1 0

9
17
0 0 1
9

 
 
 
 
 
 
 
 
 
12. 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
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
 
 

=
 
 
 
>gaussjord(A, r);
10
20
1 0 0
9
7
0 1 0
9
17
0 0 1
9

 
 
 
 
 
 
 
 
 
>r;
3
13. Tìm vectơ riêng của ma trận A:
 Cú pháp:
>with(linalg);

>eigenvectors(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:=
14. Tìm giá trị riêng của ma trận A:
 Cú pháp:
>with(linalg);
>eigenvalues(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

 
 

= −
 
 

 
>e:=eigenvalues(A);
e:=4,-2, 2
11
15. Tìm hạng của ma trận A:
 Cú pháp:
>With(linalg);
>rank(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

 
 
= −
 
 

 
>rank(A);
3
16. 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
17. 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
6 6 4
A

 

 
= −
 
 

 
12
>inverse(A);
18. Biến đổi ma trận về dạng tam giác:
 Cú pháp:
>with(linalg);
>gausselim(A,r,d);
Trong đó:
- A là ma trận vuông,
- r, d là các tham số cho biết hạng và định thức của A (có hoặc
không).
Ví dụ:
>with(linalg);
>A:=matrix(3,3,[1,-3,3,3,-5,3,6,-6,4]);
1 3 3
: 3 5 3
6 6 4
A

 
 
= −
 
 


 
>B:=gausselim(A,’r’,’d’);
>r;
3
>d;
16
III. Giải phương trình đại số tuyến tính:
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:
13
>with(linalg);
>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]);
b:=array([2,9,2]);
3 1 0
: 3 1 1
1 3 5
A
 
 
=
 
 
 

b:= [2, 9, 2]
>geneqns(A,[x,y,z],b);
2. Giải hệ phương trình đại số tuyến tính:
Phương trình đại số tuyến tính có dạng Ax = b có nhiều phương pháp
giải khác nhau thông qua các phép biến đổi. Cú pháp lệnh trực tiếp giải hệ
phương trình đại số tuyến tính là:
>linsolve(A, b);
Trong đó:
+ A: ma trận xác định vế trái của hệ phương trình;
+ b: Vectơ xác định vế phải.
Ví dụ: Giải hệ phương trình:
>with(linalg);
>A:=matrix(3,3,[3,1,0,3,1,1,1,3,5]);
b:=array([2,9,2]);





=++
=++
=+
253
93
23
zyx
zyx
yx
14
3 1 0

: 3 1 1
1 3 5
A
 
 
=
 
 
 
b:= [2, 9, 2]
>geneqns(A,[x,y,z],b);
>linsolve(A,b);
Vậy nghiệm của hệ là: x = 39/8; y = -101/8; z = 7.
15
IV. Kết luận
Qua những ví dụ trên về ứng dụng của phần mềm Maple đối với việc
giải quyết một số vấn đề của đại số tuyến tính, đặc biệt là việc vận dụng phần
mềm Maple vào việc giải các hệ phương trình đại số tuyến tính một cách rất
hiệu quả như vậy chúng ta thấy được đây là một phần mềm rất tiện ích và
thuận tiện cho việc giải toán, vì vậy chúng ta cần sử dụng một cách thuần thục
phần mềm này vào việc giải toán không chỉ giải hệ phương trình mà còn
nhiều ứng dụng khác nữa. Có thể nói đây là một phương tiện rất cần thiết cho
mỗi một học sinh và sinh viên.
V. Tài liệu tham khảo
- .
- />- Tài liệu ứng dụng chương trình Maple đối với một số vấn đề của đại
số tuyến tính.

16

×