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.. LỜI NÓI ĐẦUMôn học lập trình Symbo
Trang 1TRƯỜ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
Trang 2LỜ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ántrê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ếnthứ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 ơnquý 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ềukiện tốt nhất để chúng tôi học tập
Trân trọng!
Trang 3MỤ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
Trang 4I 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êncá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ínhtoá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ặpnhiề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ẵncác kiểu dữ liệu với độ chính xác cao:
Trang 52. Tính toán cơ bản trong Maple
Trang 6- 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);
>
>
Trang 7- 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)
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});
Trang 8>
- 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);
>
Trang 9- Đị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
Trang 103. 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 Đườngdẫ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 tinvà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
Trang 11• 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
Trang 12- Trong sự kiện clickButton, nhập hàm vẽ đồ thị trong Evaluate:
- Để chạy chương trình: File/run
Để thiết kế giao diện trong Maple, có thể dùng lệnh Cấu trúc một maplet như sau:
Trang 13II TÍNH TOÁN TRÊN MA TRẬN VUÔNG
1.Mô tả bài toán
Trang 14Bà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 Saukhi 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:
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
Trang 15L : 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
Trang 16Những phép toán sau đây trên ma trận sử dụng các phương thức được định nghĩatrong gói LinearAlgebra Các phương thức này được gọi trong thuộc tính Evaluate củaButton
- 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ácthủ tục Cấu trúc thủ tục trong Maple được định nghĩa như sau:
Trang 17Thủ 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:
Trang 18B1 Gọi gói lập trình form
B2: Gọi gói tính toán trên ma trận
Trang 19Nhập bậc tính lũy thừa
Kết quả sau khi thực hiện phép tính toán
Trang 20Kết quả ma trận nghịch đảo
Kết quả đa thức đặc trưng
Trang 21IV 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 khitì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àonhữ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!
Trang 22TÀ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] http://maplevn2008.wordpress.com
[5] www.maplesoft.com/support/help/