Tải bản đầy đủ (.docx) (22 trang)

Tính toán ma trận vuông trên Maple

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 (2.24 MB, 22 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
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ính toán ma trận vuông trên Maple
Giảng viên hướng dẫn : PGS. TS ĐỖ VĂN NHƠN
Học viên thực hiện : NGUYỄN THỊ DIỆU ANH
MSHV : CH1101064
TP HCM, tháng 1 năm 2013
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
LỜI NÓI ĐẦU
Môn học lập trình Symbolic đã cho tôi được tiếp cận một hướng lập trình mới, phù
hợp trong việc phát triển các ứng dụng hỗ trợ tính toán yêu cầu về độ chính xác cao và
làm việc với biểu thức.
Bài thu hoạch này nằm trong giới hạn tìm hiểu về bộ môn, ứng dụng công cụ Maple
16 để xây dựng một chương trình hỗ trợ tính toán với phạm vi nhỏ. Tôi lựa chọn tính toán
trên các đối tượng ma trận vì kiểu dữ liệu này khó tổ chức ở các ngôn ngữ lập trình khác,
đồng thời thao tác xử lý ma trận được ứng dụng rộng rãi, nhất là trong lĩnh vực đại số
tuyến tính. Các phép toán tổ chức trên ma trận thường phức tạp, công cụ maple đã hỗ trợ
mạnh mẽ với những kiểu dữ liệu được xây dựng sẵn. Từ bài thu hoạch này tôi hy vọng sẽ
phát triển thêm các hướng nghiên cứu về lập trình tính toán.
Chân thành cảm ơn PGS. Đỗ Văn Nhơn đã tận tình chỉ dẫn giảng dạy những kiến
thức nền tảng cho tôi có cơ hội tìm hiểu và nghiên cứu các lĩnh vực này. Đồng cảm ơn
quý thầy cô quản lý phòng đào tạo sau đại học, trường đại học CNTT đã tạo mọi điều
kiện tốt nhất để chúng tôi học tập.
Trân trọng!
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 2
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
MỤC LỤC
LỜI NÓI ĐẦU 2


I. GIỚI THIỆU MAPLE 4
1. Giới thiệu 4
2. Tính toán trong Maple 5
3. Sử dụng Maplet Builder thiết kế giao diện 10
II. TÍNH TOÁN TRÊN MA TRẬN VUÔNG 14
1. Mô tả bài toán 14
2. Cấu trúc dữ liệu 15
3. Giải quyết vấn đề 15
4. Demo chương trình 18
KẾT LUẬN 21
TÀI LIỆU THAM KHẢO 22
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 3
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
I. MAPLE
1. Giới thiệu
MAPLE là phần mềm cho phép thực hiện các tính toán số chính xác và tính toán trên
các biểu thức đại số. Đây là công cụ mạnh và ứng dụng rộng rãi trong các lĩnh vực tính
toán như số học, toán 2D, 3D, vật lý, hóa học, … Maple còn tương thích với ASP.NET,
JAVA … vì thế người lập trình có thể tùy chọn để phát triển các phần mềm tính toán.
Trong những ngôn ngữ lập trình thông thường, tính toán với những số chính xác gặp
nhiều khó khăn trong việc tổ chức dữ liệu và lưu trữ trong bộ nhớ, Maple xây dựng sẵn
các kiểu dữ liệu với độ chính xác cao:
VD:
>
>
Ngoài ra, Maple còn hỗ trợ những thành phần liên quan đến tính toán như đồ thị, ma
trận, tính toán biểu thức, đại số tuyến tính, đối tượng 3 chiều …
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 4
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
2. Tính toán cơ bản trong Maple

a. Tính toán số học
Maple cho phép tính toán số học như sau:
- Các tính toán số học cơ bản: +, -, *, /
>
- Lũy thừa: ^, giai thừa: !
>
- Logarit: ln(x), log[a](b), exp(x)
>
>
- Hàm lượng giác: sin(x), cos(x), tan(x), cot(x),…
>
- Tính toán với độ chính xác
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 dị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ố.
>
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 5
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
- Thao tác với các số nguyên tố
ifactor(n) : Phân tích một số n thành thừa số nguyên tố
isprime(n) : Kiểm tra một số n có phải là số nguyên tố không?
nextprime(n) : Tìm số nguyên tố đứng sau một số n cho truớc
prevprime(n) : Tìm số nguyên tố đứng truớc một số n cho truớc
gcd(a,b) : Tìm uớc số chung lớn nhất của 2 số nguyên duong a, b
lcm(a,b) : Tìm bội số chung nhỏ nhất của 2 số nguyên duong a, b
irem(a,b) : Tìm số du khi chia a cho b
iquo(a,b) : Tìm thuong nguyên khi chia a cho b
- 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, <danh_sach_tham_so>);
- Giải công thức truy hồi, dãy số: lệnh rsolve
Cú pháp: rsolve (pt/he_pt_truy_hoi, ten_day_so);
- Tính tổng:
sum (bieu_thuc_tinh_tong, bien:=gia_tri_dau gia_tri_cuoi);
Sum (bieu_thuc_tinh_tong, bien:=gia_tri_dau gia_tri_cuoi); //Tính công thức
- Tính tích:
product (bieu_thuc_tinh_tich, bien:=gia_tri_dau gia_tri_cuoi);
Product (bieu_thuc_tinh_tich, bien:=gia_tri_dau gia_tri_cuoi); //Tính đa thức
b. Thao tác biểu thức đại số
- Khai triển biểu thức đại số
Cú pháp: expand (bieu_thuc_dai_so);
>
>
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 6
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
- Phân tích thừa số chung: factor (bieu_thuc_dai_so)
- >
- Đơn giản biểu thức đại số: simplify (bieu_thuc_dai_so)
- Tối giản phân thức: nomal(phan_thuc)
- >
- >
- >
- Thay giá trị cho biến vào biểu thức: subs (bien=gia_tri, bieu_thuc)
- Định nghĩa hàm số
Ten_ham := bien → bieu_thuc_ham so;
Ten_ham := unapply (bieu_thuc, bien);
- Giải phương trình, bất phương trình
Cú pháp: solve (phuong_trinh, {bien_1, bien_2, …});

Solve (phuong_trinh_1, phuong_trinh_2, , {danh_sach_bien});
Solve (bat_phuong_trinh, {danh_sach_bien});
Solve (bpt_1, bpt_2, …, {danh_sach_bien});
- >
- >
- >
c. Đồ thị
Khởi tạo các hàm vẽ đồ thị:
>
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 7
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
>
- Vẽ đồ thị hàm thông thường
plot (ham_can_ve, x=gt_dau gt_cuoi, y=gt_dau gt_cuoi, cac_tuy_chon);
>
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 8
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
- Vẽ nhiều đồ thị trên cùng một hệ trục
plot ([ham_1,ham_2], x=gt_dau gt_cuoi, y=gt_dau gt_cuoi, cac_tuy_chon);
>
d. Hình học giải tích
- Khởi tạo các gói tính toán hình học giải tích, hình học không gian
- >
- >
- Định nghĩa điểm: point (ten_diem, hoanh_do, tung_do, cao_do);
- Hiển thị tọa độ điểm: coordinates (ten_diem);
- Xác định trung điểm: midpoint (ten_trung_diem, diem_1, diem_2);
a.
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 9
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple

3. Sử dụng Maplet Builder thiết kế giao diện
Maplet Builder là công cụ trong Maple để người lập trình thiết kế giao diện. Đường
dẫn: Tools/ Assistants/ Maplet Builder
Cửa sổ làm việc của Maplet Builder như trên. Phía bên trái chứa các đối tượng form,
phía bên phải chứa các thuộc tính của đối tượng và các phương thức, màn hình ở giữa để
cho người dùng thực hiện thiết kế.
Các đối tượng form:
- Thẻ Body chứa các đối tượng: Button, TextField, Textbox, Label, Plotter,
CheckBox, ComboBox, ListBox, MathMLEditor, MathMLViewer, Slider,
RadioButton, Table… Thẻ này chứa những đối tượng cơ bản để nhập thông tin
vào và xuất thông tin ra. Trong đó có một số đối tượng quan trọng như:
• Table : lưu trữ bảng
• TextField, TextBox : nhập và xuất dữ liệu
• MathMLViewer : hiển thị công thức toán học
• Plotter : Hiển thị đồ thị
• Slider : Trục số học
- Thẻ Command chứa các lệnh thực hiện trên form:
• CloseWindow : đóng cửa sổ làm việc
• Evaluate : thực hiện hàm tính toán
• RunDialog : mở hộp thoại
• RunWindow : chạy chương trình
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 10
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
• SetOption : thiết lập tùy chọn
• Shutdown : thoát chương trình
- Thẻ Layout chứa các thiết kế trên khung giao diện
- Thẻ Toolbar chứa các thiết kế trên Toolbar
- Thẻ Menu chứa các đối tượng thuộc loại Menu
- Thẻ Dialog chứa các đối tượng Dialog
- Thẻ Other chứa một số đối tượng khác như Font, Image, Return, ReturnItem,

Argument, Button Group.
Ví dụ: Thiết kế chương trình vẽ đồ thị nhập vào từ TextBox:
Form thiết kế trên Maplet Builder như sau:
- Đối tượng Plotter ở Boxrow1 để hiển thị đồ thị
- Label: Mời nhập hàm số
- TextBox : Người dùng nhập hàm số
- Button Vẽ đồ thị để thực hiện và Button Close để đóng chương trình
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 11
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
- Trong sự kiện clickButton, nhập hàm vẽ đồ thị trong Evaluate:
- Để chạy chương trình: File/run
Vẽ hàm số y = 2x
2
- 5x + 2, với x = -3 3
Để thiết kế giao diện trong Maple, có thể dùng lệnh. Cấu trúc một maplet như sau:
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 12
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
>
>
>
Ví dụ: Thiết kế maplet tính tích phân:
>
II. TÍNH TOÁN TRÊN MA TRẬN VUÔNG
1.Mô tả bài toán
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 13
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
Bài toán cho phép người dùng nhập vào một ma trận vuông (n,n) với n= 1 5. Sau
khi nhập vào, hiển thị ma trận lên MathMLView. Thực hiện các phép toán với ma trận:
- Tính hạng ma trận
- Định thức ma trận

- Đa thức đặc trưng
- Giá trị riêng
- Vector riêng
- Lũy thừa bậc n với n nhập vào từ bàn phím
- Ma trận nghịch đảo
- Đa thức tối tiểu
- Tính hàm ma trận với hàm số nhập vào
- Ma trận dạng Jordan
Kết quả trả về hiển thị trên MathMLView. Các phép toán trên ma trận được ứng
dụng để giải quyết các bài toán đại số tuyến tính, giải các phương trình và hệ phương
trình có dạng như sau:
A*x = b //b là vector vế bên phải của phương trình
A*x = B //B là ma trận vế bên phải của phương trình
2. Tổ chức cấu trúc dữ liệu
Kiểu dữ liệu được dùng để tính toán trên ma trận là matrix. Cấu trúc như sau:
> matrix(m, n, L)
với m : số dòng của ma trận
n : số cột của ma trận
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 14
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
L : danh sách các phần tử của ma trận
>
Dữ liệu sau khi tính toán là các kết quả trả về của hàm số, của thủ tục dưới dạng các
số nguyên, biểu thức đại số, đa thức theo … và được hiển thị trên MathMLView
3. Giải quyết vấn đề
Sử dụng gói LinearAlgebra của Maple hỗ trợ tính toán trên ma trận:
>
Nhập ma trận đầu vào: sử dụng phương thức trong thủ tục Nhap()
>
Sau khi gọi phương thức, một cửa sổ hiện ra cho người dùng nhập các giá trị của ma

trận A và hiển thị biểu thức tương ứng với các biến
Thủ tục Nhap( ) được định nghĩa như sau:
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 15
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
Những phép toán sau đây trên ma trận sử dụng các phương thức được định nghĩa
trong gói LinearAlgebra. Các phương thức này được gọi trong thuộc tính Evaluate của
Button
- Tính hạng ma trận: Rank (A)
- Tính định thức ma trận: Determinant(A)
- Tính đa thức đặc trưng: CharacteristicPolynomia(A, lambda)
- Tính giá trị riêng: Eigenvalues (A)
- Tính vector riêng: Eigenvectors (A)
- Đa thức tối tiểu: MinimalPolynomial(A, lambda)
- Ma trận dạng Jordan: JordanForm(A)
Đối với phép toán tính lũy thừa, ma trận nghịch đảo và hàm theo ma trận ta dùng các
thủ tục. Cấu trúc thủ tục trong Maple được định nghĩa như sau:
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 16
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
Thủ tục lũy thừa của ma trận A cho phép người dùng nhập vào bậc n của lũy thừa,
sau đó tính toán A^n. Thủ tục Lthua() được viết như sau:
>
Thủ tục tính ma trận nghịch đảo cho phép bắt lỗi trong trường hợp ma trận suy biến.
Thủ tục Mtnghich() được định nghĩa như sau:
Thủ tục hàm theo ma trận cho phép người dùng nhập hàm số vào và xuất kết quả
tính toán trên ma trận. Thủ tục HamMT() được định nghĩa như sau:
4. Demo chương trình
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 17
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
B1. Gọi gói lập trình form
B2: Gọi gói tính toán trên ma trận

B3: Gọi thủ tục Nhap():
B4: Gọi thủ tục Lthua():
B5: Gọi thủ tục MTNghich():
B6: Gọi thủ tục HamMT():
B7: Gọi Maplet
Giao diện chương trình
Nhập phần tử cho ma trận
Để tính lũy thừa, click button Lũy thừa và nhập bậc cần tính.
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 18
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
Nhập bậc tính lũy thừa
Kết quả sau khi thực hiện phép tính toán
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 19
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
Kết quả ma trận nghịch đảo
Kết quả đa thức đặc trưng
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 20
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
IV. KẾT LUẬN
Phạm vi đề tài này còn hạn chế, chưa phát triển được việc giải các phương trình và
hệ phương trình với tham số là ma trận. Tuy nhiên, với những kiến thức thu được sau khi
tìm hiểu về lập trình Symbolic và Maple, tôi sẽ cố gắng để tìm hiểu sâu hơn, đưa vào
những hệ thống ứng dụng thực tế. Rất mong nhận được sự đóng góp ý kiến của PGS. TS
Đỗ Văn Nhơn và các bạn học lớp cao học khóa 6.
Trân trọng!
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 21
Bài thu hoạch môn: Lập trình Symbolic – Tính toán ma trận vuông với Maple
TÀI LIỆU THAM KHẢO
[1]. Bài giảng lập trình Symbolic – PGS. TS Đỗ Văn Nhơn - 2012
[2]. Giáo trình giới thiệu Maple – Nguồn: Internet

[3]. Sử dụng Maple để dạy toán. – Nguyễn Chánh Tú, ĐH SP Huế
[4].
[5]. www.maplesoft.com/support/help/
Nguyễn Thị Diệu Anh (T.01 - 2013) Page 22

×