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

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

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 (807.37 KB, 43 trang )

ĐẠ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.


Môn Toán có một vai trò hết sức quan trọng. Bởi, nó là môn học nền tảng giúp
ta nhận thức mọi môn học khác như Vật lý, Hóa học, Sinh học hay áp dụng trong
các vấn đề bài toán kinh tế hay kỹ thuật nhưng nó lại dược

đánh giá là môn học
khó ở hai nghĩa đó là khó cả về người

dạy và khó cả về người học. Câu hỏi đặt ra là:
Làm sao để học môn Toán vừa thuận lợi vừa hiệu quả hơn?
Maple là một phần mềm Toán học có khả năng ứng dụng trong mọi nội dung,
mọi lĩnh vực như vật lý, Hóa học hay áp dụng vào bài toán kinh tế…Với khả năng
tính toán, minh họa trực quan, Maple là một công cụ rất tốt giúp cho người học và
ngườidạy thuận lợi hơn trong quá trình tìm hiểu nó ở các lĩnh vực khác nhau.
Điều cần lưu ý là việc sử dụng các phần mềm tính toán hiện đại không đòi hỏi
người dùng phải có kỹ năng lập trình cao cấp mà chỉ yêu cầu người sử dụng nắm vững
các kiến thức lý thuyết cơ bản.Với Maple ta chỉ cần thực hiện những câu lệnh đơn
giản chứ không phải như lập trình các ngôn ngữ khác trong tính toán. Thông qua hàm
tính toán trong môi trường Maple, chúng ta rèn luyện kỹ năng sử dụng máy tính để
giải quyết vấn đề cụ thể về toán học. Maple có khả năng tính toán trên số thực lẫn số
phức, ngoài các hàm toán học dựng sẵn trong Maple về đủ mọi lĩnh vực: Lượng giác,
giải tích, hình học, đại số tuyến tính, lý thuyết số, thống kê, đồ thị, phương trình vi
phân và đạo hàm riêng,… Maple cũng cho phép thiết lập thêm các hàm hoặc thủ tục
chuyên dụng theo mục đích của người sử dụng. Cũng chính vì sự đa dạng của phần
mềm này nên trong khuôn khổ có hạn của bài thu hoạch chỉ tập trung khai thác
Maple ở lĩnh vực quan trọng nhất của nó đó là: Toán học.

Học viên:
Đinh Đức Khoa
HVTH: Đinh Đức Khoa - CH1102003
Trang: 2

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

Các lệnh của Maple được gõ sau dấu nhắc lệnh > , kết thúc lệnh bằng dấu chấm
phẩy (;) nếu muốn Maple hiển thị kết quả của việc tính toán, hoặc dấu hai chấm(:) nếu
chỉ yêu cầu Maple tính toán mà không hiển thị kết quả. Các bạn dùng phím Enter để
yêu cầu Maple bắt đầu thực hiện tính toán.
- Để viết các lời giải thích câu lệnh bạn có thể viết chúng sau dấu thăng (#).
- Để xuống dòng trên cùng một dấu nhắc lệnh dùng tổ hợp phím Shift-Enter.
- Để gán giá trị cho biến ta dùng dấu hai chấm bằng (:=) .
- Có thể gọi lại kết quả vừa thực hiện bằng lệnh % (%% lấy kết quả trước kết
quả vừa thực hiện ).
- Các lệnh của Maple có thể chỉnh sửa, copy,…
I.3. Các thành phần cơ sở của Maple
I.3.1. Tập ký tự
- Bao gồm bảng chữ cái tiếng Anh
HVTH: Đinh Đức Khoa - CH1102003
Trang: 4
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
Chữ hoa : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.
Chữ thường : a b c d e f g h i j k l m n o p q r s t u v w x y z.
- Chữ số : 0, 1, 2, 3, 4,5, 6, 7, 8, 9.
Chú ý : Maple phân biệt chữ hoa – thường .
- Tập các ký hiệu đặc biệt :
I.3.2. Toán tử cơ bản
Phép toán Kí hiệu Phép toán Kí hiệu Phép toán Kí hiệu
Cộng + Nhân * Giai thừa !
Trừ - Chia / Mũ ^
I.3.3. Các hàm toán học cơ bản
Hàm Ý nghĩa Hàm Ý nghĩa Hàm Ý nghĩa
abs(x) │x│ Sqrt(x) √x Exp(x) e
x
In(x) Log

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

factorial(n) Tính n giai
thừa
isqrt(n) Căn bậc hai
nguyên của
n
iroot(x,n) Căn bậc n
nguyên của x
ifactor(n) Phân tích n
thành tích
các thừa số
nguyên tố
irem(m,n) Số dƣ khi
chia m cho
n
iquo(m,n) Thương khi
chia m cho n
igcd(x1,x2,
)
Ước số
chung lớn
nhất của x1
, x2,
ilcm(x1,x2, ) Bội số
chung nhỏ
nhất của x1 ,
x2,
m mod n Số dƣ khi
chia m cho n
Ví dụ :
> factorial(5);

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

thành
nhân tử
nomal(pt) Tối giản
phân thức
divide(bt1,b
t2)
Kiểm tra xem
bt1 có chia hết
cho bt2
không?
subs([x1=a1,
x2=a2, ],f(x
1,x2, ))
Tính giá
trị của
f(x1,x2,
) với
x1=a1,x2
=a2
collect
(bt,x)
Gom hạng
tử của bt
theo biến x
degree(bt) Bậc của đa
thức bt
coeff(bt,x^n
)
Hệ số của
x^n trong

đ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

- Cú pháp : limit(f(x),x=a); // Muốn xuất ra biểu thức tính giới hạn ta dùng
Limit(f(x),x=a).
- Tính giới hạn bên trái : limit(f(x),x=a,left);
- Tính giới hạn bên phải : limit(f(x),x=a,right);
> limit(sin(x)/x,x=0);
1
> Limit(sin(x)/abs(x),x=0)=limit(sin(x)/abs(x),x=0);
> limit(sin(x)/abs(x),x=0,left);
-1
> limit(sin(x)/abs(x),x=0,right);
1
I.5.2. Tính đạo hàm
- Đạo hàm cấp 1 : diff(f,x);
- Đạo hàm cấp n : diff(f,x$n);
- Đạo hàm riêng : diff(f, x1$n, [x2$n, x3], xj, [xk$m])
> diff(x*sin(x),x);
sin(x) + x cos(x)
> diff(x^5,x$3);
60x
2
> diff(f(x),x$3);
> diff(f(x,y),x);
HVTH: Đinh Đức Khoa - CH1102003
Trang: 8
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
> diff(f(x,y),y);
> diff(f(x,y),[x,y]);
> diff(x^3*sin(y),x$2,y);
6x cos (y)
I.5.3. Tính nguyên hàm và tích phâ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]);

> det(A);
1 - 3x
- Tính hạng của ma trận A: rank(A);
> rank(A);
2
HVTH: Đinh Đức Khoa - CH1102003
Trang: 10
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
- Tìm ma trận nghịch đảo của ma trận A: inverse(A) ;
> inverse(A);
I.6. Đồ thị hàm số
I.6.1. Hàm một biến : đồ thị 2D
Cú pháp : plot(f , x = a b );
Ý nghĩa: Vẽ đồ thị hàm số f theo biến x trên miền [a;b].Nếu không khai báo miền
giá trị của x thì Maple mặc định là [-10;10].
> plot(sin(x),x=-Pi Pi);
> plot(cos(x)+sin(x));
HVTH: Đinh Đức Khoa - CH1102003
Trang: 11
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
I.6.2. Hàm hai biến : đồ thị 3D
- Cú pháp : plot3d(f , x = a b );
> plot3d({sin(x*y), x + 2*y}, x=-Pi Pi, y=-Pi Pi);
> plot3d(x*exp(-x^2-y^2), x=-2 2, y=-2 2, color=x);
HVTH: Đinh Đức Khoa - CH1102003
Trang: 12
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
PHẦN II. ỨNG DỤNG MAPLE ĐỂ GIẢI CÁC BÀI
TOÁN TRONG ĐẠI SỐ TUYẾN TÍNH


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.

Bài 1:
a; (1 + i)
3
+ (3 - i)(1 + i);
Nhập vào Maple ta có:
> (1+I)^3 + (3-I)*(1+I);
2 + 4I
b; (2 - i)
5
+ (2 + i)
5
;
Nhập vào Maple ta có:
> (2-I)^5 +(2+I)^5;
-76
Bài 2:
Nhập vào Maple ta có:
> Z:=x+iy;
Z:= x + iy
> solve({(1+2*i)*x + (2+i)*y +(3+2*i)*z
= 7+6*i,(3-6*i)*x +(2-5*i)*y +(1-6*i)*z = 5-18*i},{x,y});
Vậy nghiệm của hệ phương trình trên là:
Bài 3:
a) 1;
Nhập vào Maple ta có:
> z2:=1;
z2:=1;
HVTH: Đinh Đức Khoa - CH1102003
Trang: 14
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơ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

- Để tạo ma trận loại m x n với các phần tử là số nguyên lấy ngẫu nhiên từ -99
đến 99 ta nhập:
randmatrix(m,n)
- Để tạo ma trận m x n với list_of_elements là danh sách các phần tử có dạng
[a…] ta nhập :
matrix(m,n,list_of_elements)
- Để tạo ra một ma trận loại m x n với list_of_rows là danh sách các dòng, có
dạng ta nhập:
matrix(m,n,list_of_rows)
- Để tạo ra một ma trận với list_of_rows là danh sách các dòng, có dạng ta nhập:
matrix(list_of_rows)
- Để tạo ra một ma trận loại m x n với các phần tử đều bằng element ta nhập:
matrix(m,n,element)
- Để tạo ra ma trận đơn vị cấp n ta nhập :
array(identity,1 n,1 n)
- Để tạo ra ma trận đường chéo trong đó list_of_elements là các phần tử trên
đường chéo trong đó list_of_elements là các phần tử trên đường chéo, có dạng ta
nhập:
diag(list_of_elements)
II.2.2. Các phép toán ma trận
- Để xác định hệ số dòng I và cột j của ma trận A ta nhập: a[i,j]
- Để kiểm tra hai ma trận A và B có bằng nhau hay không ta nhập:
equal(a,b)
- Để xác định ma trận chuyển vị của ma trận A ta nhập:
transpose(a)
- Để nhân ma trận A vối một biểu thức bất kỳ ta nhập:
scalarmul(a,expr) hoặc evalm(expr*a) với expr là biểu thức bất kỳ.
- Để tính tổng ma trận A + B + C + … ta nhập:
matadd(a,b,c,…) hoặc evalm(a + b + c +…)
- Để tính tích ma trận ABC… ta nhập:

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

II.2.5. Giải phương trình ma trận AX = B
- Để giải phương trình ma trận AX = B với X là ma trận cần tìm ta nhập:
linsolve(a,b)
HVTH: Đinh Đức Khoa - CH1102003
Trang: 17
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
II.2.6. Giải hệ phương trình tuyến tính
- Để giải hệ phương trình eqns với các biến vars. Trong đó eqns có dạng
{eqn1,eqn2,…} và vars có dạng {var1,var2,…} ta nhập:
solve(eqns,vars)
- Để giải hệ phương trình AX = b, với A là ma trận hệ số, b là vecto cột các hệ số
tự do ta nhập:
linsolve(a,b).
Trên đây là những dòng lệnh cơ bản nhất khi tính toán trên ma trận và phương
trình tuyến tính. Để 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.
Bài 1: Tính các tích
Nhập vào Maple ta có:
> A:=matrix(3,3,[1,-3,2,3,-4,1,2,-5,3]);
A:=
> B:=matrix(3,3,[2,5,6,1,2,5,1,3,2]);
B:=
> C:= evalm(A.B);
C:=
Vậy tích trên bằng:
C:=
HVTH: Đinh Đức Khoa - CH1102003
Trang: 18
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
> A:=matrix(4,3,[0,0,1,i,1,2,2,2*i,3,3,3,4]);

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

Trang: 20
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
> A:=matrix(4,4,[1,2,3,-2,2,-1,-2,-3,3,2,-1,2,2,-3,2,1]);
A:=
> b:=vector(4,[1,2,-5,11]);
B:= [ 1 2 -5 11 ]
> linsolve(A,b);
Vậy nghiệm của hệ phƣơng trình tương ứng lần lượt là x1, x2, x3,x4 :
Nhập vào Maple ta có:
> E:=matrix(4,5,[2,-2,1,-1,1,1,2,-3,1,-2,4,-10,5,-5,7,2,-14,7,-7,11]);
E:=
> f:=vector(4,[1,1,1,-1]);
f:= [ 1 1 1 -1 ]
> linsolve(E,f);
Vậy nghiệm của hệ phương trình tương ứng lần lượt x1, x2, x3, x4,x5 là:
HVTH: Đinh Đức Khoa - CH1102003
Trang: 21
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn
Với t1 và t2 tự do và thuộc R.
II.3. Định thức
II.3.1. Định nghĩa
a) Ma trận con cấp k.
- Cho ma trận vuông A = (a
ij
)
n
ϵ M
n
(R). Ma trận vuông cấp k được thành lập từ
các phần tử nằm trên giao k dòng và k cột của A được gọi là ma trận con cấp k của A.

- 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

12
A
12
+ a
1n
A
1n
, trong đó
A
ij
= (-1
) i+j
det (M
ij
) là phần bù đại số của phần tử a
ij
II.3.2. Giải bài tập trong Maple
- det(A): Tính định thức của A.
- inverse(A): evalm(1/A): tính ma trận nghịch đảo của ma trận A.
- solve(a,b): dùng để so sánh a với b.
- col (A,i): Vecto cột thứ i của ma trận A.
- col (A,i,…,k): Các cột vector thứ I đến thứ k của ma trận A.
- concat(A,B,…,) : Nối hai hay nhiều ma trận, vector cùng dòng.
Bài 1: Tìm ma trận nghịch đảo
a) A =
> With(linearalgebra):
> A:=matrix(3,3,[2,3,4,5,6,7,8,9,1]);
HVTH: Đinh Đức Khoa - CH1102003
Trang: 22
Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn

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

×