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

Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số

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 (956.59 KB, 21 trang )

Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
Mục Lục
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 1/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
ời Cảm Ơn
Thông qua môn học lập trình tính toán hình thực (symbolic), em xin gởi lời cám
ơn chân thành đến thầy Đỗ Văn Nhơn, thầy đã giới thiệu môn học vô cùng thú vị,
với việc tiếp cận kiến thức mới về việc lập trình thôn minh trên mô hình rất phức
tạp và khó khăn với ngôn ngữ khác, nhưng lại đơn giả hơn với cách tiếp cận này
Thông qua bài tiểu luận này, em mong được xem như hệ thống hoá kiến thức và
một số điểm tìm hiểu vấn đề trong môn học cũng như nêu lên ứng dụng cụ thề cho
ngôn ngữ lập trình hình thức này. Tuy nhiên, do một số hạn chế về thời gian, cho
nên bài báo cáo chắc chắn còn nhiều thiếu sót. Rất mong được sự hướng dẫn và
giúp đỡ của các thầy và các bạn.
Một lần nữa xin cảm ơn thầy hướng dẫn chúng em tận tình trong môn học lập
trình tính toán hình thức vừa qua.
Xin cảm ơn !
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 2/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
Lời Mở Đầu
Ngày nay, bài toán giải quyết công việc, nghiệp vụ ngày càng phức tạp. Các
chương trình đòi hỏi ngày càng phải xử lý thông minh hơn, suy luận được nhiều
vấn đề hơn, nhưng đòi hỏi công việc lập trình phải nhanh hơn, linh hoạt hơn để
đáp ứng nhu cầu bài toán đặt ra. Và một trong những cách tiếp cận đó là sử dụng
ngôn ngữ tính toán hình thức để lập trình (còn gọi là lập trình Symbolic).
Lập trình Symbolic là khái niệm về phát triển thuật toán dựa trên ý tưởng
rằng công thức và các thành phần của chương trình có thể được thao tác như
chính là những dữ liệu. Trong ngôn ngữ lập trình chuyên về toán học, vật lý học,
hóa học… và các chuyên ngành hẹp, các ngôn ngữ như Maple, Matlab,
Mathematica, … ngày nay được sử dụng rất nhiều như công cụ phát triển nhanh
ứng dụng theo cách thông minh và dễ dàng hơn.


Trong báo cáo này, ta cùng tìm hiểu lập trình Symbolic và ứng dụng của nó
trong việc áp dụng giải một bài toán học bằng phương pháp giải và biện luận khảo
sát hàm số bậc 3. Thông qua báo cáo này, em mong hệ thống hóa kiến thức cũng
như tiếp cận cách giải quyết vấn đề toán học qua việc sử dụng ngôn ngữ này.
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 3/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
I. Tổng Quan Về Lập Trình Symbolic và ngôn ngữ Maple
1. Tổng quan về lập trình Symbolic
Phát triển sau này cùng với các ngôn ngữ hiện đại, ngôn ngữ Symbolic
mang đến cách tiếp cận mới về cách lập trình tính toán chuyên sâu lĩnh vực về
toán học thông qua các gói tích hợp chuyên dụng của ngôn ngữ Symbolic cung
cấp như: Maple, Matlab, Mathematica.
Ba điểm nổi bật khiến người ta chú ý tới lập trình Symbolic gồm: giảm thời
gian phát triển chương trình, tăng độ chính xác của mô hình, và dễ dàng chuyển
phần tính toán sang các ứng dụng khác thông qua tích hợp tương tác rất tiện dụng
a. Giảm thời gian phát triển chương trình
Ngôn ngữ Symbolic cung cấp cho chúng ta dạng ngôn ngữ lập trình bậc cao
đồng nhất và linh hoạt cho phép người sử dụng tập trung vào các vấn đề tài chính
và lược bỏ thời gian dành cho các đoạn mã chương trình dài dòng. Bất kể người sử
dụng đã quen thuộc với VBA, C/C++ hoặc một ngôn ngữ lập trình nào khác thì
việc tiếp cận vẫn có thể giúp giảm đáng kể thời gian và chi phí phát triển chương
trình tính toán.
Ngoài ra, ngôn ngữ Symbolic mang lại một phương thức mới trong việc lắp
ghép các macro tự phát triển, các add-in thương mại cung cấp, những nhân tố cần
thiết để xây dựng việc mô phỏng toán học với công cụ đồ họa có thể truy cập vào
bên trong các các hàm trong package của hệ thống. Do ngôn ngữ Symbolic chứa
khả năng gắn kết rất lớn các công thức tính toán và hàm, nó có thể xử lý các đồng
thời các vận hành phức tạp mà người sử dụng phải mất nhiều sức lực, khả năng,
thời gian để phát triển và sửa lỗi. Nếu hàm cần sử dụng không được dựng sẵn, việc
xây dựng một hàm mới với dạng ngôn ngữ bậc cao và có tính trực quan của như

vậy sẽ nhanh và đơn giản hơn nhiều lần so với việc lập trình lại từ đầu.
Không giống như các ngôn ngữ cấp cao đơn thuần khác, ngôn ngữ
Symbolic hướng tới việc hổ trợ lập trình chuyên sâu các lĩnh vực đặc thù nào đó.
Mỗi ngôn ngữ Symbolic cũng tập trung thế mạnh riêng của nó không giống nhau.
Các ngôn ngữ hình thức sau chú trong việc giải và mô phỏng các vấn đề toán học
như Maple, Matlab, Mathematica. Maple tập trung thế mạnh vào nền tảng giải
phương trình tích hợp và cơ sở Groebner, dễ dàng tương tác sâu vào hệ thống cũng
như khả năng code mở của nó, Matlab cũng dạng như Maple nhưng mạnh về biểu
diễn ouput trực quan sinh động hơn. Mathematica chú trọng tới hạ tầng lập trình
cho người sử dụng bằng việc cung cấp các cấu trúc như lọc, tìm kiếm, xử lý file,
xử lý số liệu như Excel, bảng.
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 4/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
b. Tăng độ chính xác mô hình
Lập trình Symbolic kết hợp các công cụ tính toán tiên tiến, các tham số
chính xác và mã chương trình dễ đọc và tùy biến. Sai số toán học trước khi quá
trình tính toán tự động được thực hiện, sai số trong quá trình tính toán, chênh lệch
do làm tròn số, và sai sót của người sử dụng do không hiểu rõ mô hình tính toán
đều được ngôn ngữ hình thức hổ trợ.
Nếu các xấp xỉ số thường được các ngôn ngữ lập trình khác sử dụng, thì
ngôn ngữ Symbolic sử dụng tính toán chính xác ở mức độ vượt trội so với các
phần mềm toán học hiện tại. Logic và cú pháp của nó đã hỗ trợ thuận tiện tối đa
cho người sử dụng trong quá trình viết, sửa, hiểu tác dụng của mã lập trình- ngay
cả khi do người khác phát triển.
c. Dễ dàng chuyển các ứng dụng sang tích hợp với các ngôn ngữ
khác
Giao thức kết nối độc đáo các ngôn ngữ Symbolic cho phép chuyển các
chương trình của nó sang ứng dụng cực kỳ linh hoạt như xây dựng giao diện riêng,
kết nối với ứng dụng C++ có sẵn, các tài nguyên khác như link với Java, Microsoft
.NET giúp phát triển thêm các chức năng và các giao diện khác dễ dàng. Ngoài ra,

cũng rất dễ dàn g tìm hiểu phát triển và chia sẽ cho nhiểu người khác
2. Giới thiệu về ngôn ngữ Maple
a. Lịch sử hình thành
Khái niệm đầu tiên về Maple xuất phát từ một cuộc họp vào tháng 11 năm
1980 tại Đại học Waterloo. Những nhà nghiên cứu tại đại học muốn mua một máy
tính đủ mạnh để chạy Macsyma. Thay vào đó, người ta quyết định họ sẽ phát triển
hệ thống đại số máy tính riêng để có thể chạy được những máy tính có giá thành
hợp lý hơn. Do đó, dự án bắt đầu với mục tiêu là tạo ra một hệ thống đại số hình
thức mà các nhà nghiên cứu và sinh viên có thể truy cập được. Maple lấy hình
tượng Lá phong trên Quốc kỳ Canada làm icon cho mình.
Sự phát triển đầu tiên của Maple được tiến hành rất nhanh, với phiên bản
hạn chế đầu tiên xuất hiện vào tháng 12 năm 1980. Những nhà nghiên cứu đã thử
nghiệm và loại bỏ nhiều ý tưởng khác nhau để tạo ra một hệ thống liên tục cải tiến.
Maple được trình diễn đầu tiên tại những hội nghị bắt đầu vào năm 1982.
Đến cuối năm 1983, trên 50 trường đại học đã cài Maple trên máy của họ.
Do số lượng hỗ trợ và yêu cầu giấy phép lớn, vào năm 1984, nhóm nghiên cứu đã
sắp xếp với WATCOM Products Inc để cấp phép và phân phối Maple.
Vào năm 1988, do số lượng hỗ trợ ngày càng tăng, Waterloo Maple Inc.
được thành lập. Mục tiêu đầu tiên của công ty là quản lý những bản phân phối
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 5/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
phần mềm. Cuối cùng, công ty cũng phải mở ra phòng R&D ở đó khá nhiều sự
phát triển cho Maple được thực hiện đến ngày nay. Sự phát triển đáng kể của
Maple tiếp tục diễn rại những phòng thí nghiệm trường đại học, bao gồm: Phòng
thí nghiệm Tính toán hình thức tại Đại học Waterloo; Trung tâm nghiên cứu Tính
toán hình thức Ontario tại Đại học Tây Ontario; và những phòng thí nghiệm khắp
nơi trên thế giới.
Vào năm 1989, giao diện đồ họa người dùng đầu tiên của Maple được phát
triển và bao gồm trong bản 4.3 dành cho Macintosh. Những phiên bản trước của
Maple chỉ gồm giao diện dòng lệnh với ngõ ra hai chiều. Bản X11 và Windows

với giao diện mới tiếp bước vào năm 1980 với Maple V.
Vào năm 1999, với việc phát hành Maple 6, Maple đã đưa vào một số Thư
viện Số học NAG, được mở rộng độ chính xác ngẫu nhiên.
Vào năm 2003, giao diện “chuẩn” hiện nay được giới thiệu trong Maple 9.
Giao diện này được viết chủ yếu bằng Java (mặc dù có nhiều phần, nhưng luật cho
việc gõ công thức toán học, được viết bằng ngôn ngữ Maple) và giao diện Java bị
phê phán là chậm không còn được bảo trì.
Giữa 1995 và 2005 Maple đã mất khá nhiều thị phần vào tay đối thủ do có
giao diện người dùng yếu hơn. Nhưng vào năm 2005, Maple 10 giới thiệu một
“chế độ văn bản” mới, như một phần của giao diện chuẩn. Tính năng chính của
chế độ này là phép toán được đưa vào bằng ngõ nhập hai chiều, do đó nó xuất hiện
tương tự như công thức trong sách. Vào năm 2008, Maple 12 đã thêm những tính
năn giao diện người dùng giống như Mathematica, gồm có những kiểu trình bày
theo mục đích đặc biệt, quản lý phần đầu và cuối trang, so trùng mở đóng ngoặc,
vùng thực hiện tự động, mẫu hoàn thành lệnh, kiểm tra cú pháp và vùng tự động
khởi tạo. Những tính năng khác được thêm để làm cho Maple dễ dùng hơn với
một hộp công cụ Maple và các tùy biến GUI của nó.
Tháng 9 năm 2009, Maple và Maplesoft đã được mua lại bởi phần mềm hệ
thống cửa hàng bán lẻ Nhật Bản CyberNet. Maple có các tính năng tính toán nền
rất mạnh so với Matlab biểu diễn báo cáo, biểu đồ và giao diện hoàn hảo hơn.
Nhiều cải tiến hiệu suất của Maple16 đã thực sự tốt hơn nhiều hơn so với
Mathematica Wolfram. Môi trường đồ họa của Maple 16 được cải thiện nhiều so
với quá khứ. Maple version mới nhất đến thời điểm này là Maple 16.
b. Kiến trúc và chức năng
Phần lớn chức năng toán học của Maple được viết bằng ngôn ngữ Maple,
và được thông dịch bởi nhân Maple cho nên Maple là ngôn ngữ thông dịch. Nhân
Maple được viết bằng C. Maple chạy được trên tất cả các hệ điều hành. Ngôn ngữ
lập trình Maple là một ngôn ngữ kiểu động. Cũng giống như các hệ thống đại số
máy tính, các biểu thức hình thức được lưu trữ trong bộ nhớ theo đồ thị không chu
trình có hướng (DAG). Ngôn ngữ cho phép các biến có phạm vi nhất định (lexical

SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 6/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
scoping). Ngôn ngữ có hình thức lập trình hàm, nhưng cũng có hỗ trợ đầy đủ cho
lập trình truyền thống, theo kiểu mệnh lệnh. Một điều mới đối với chương trình
thương mại, đa số mã nguồn maple đều có thể xem tự do.
Với các chức năng cốt lõi, người dùng có thể nhập biểu thức toán học theo
các ký hiệu toán học truyền thống. Có thể dễ dàng tạo ra những giao diện người
dùng tùy chọn. Maple hỗ trợ cho cả tính toán số và tính toán hình thức, cũng như
hiển thị. Nhiều phép tính số học được thực hiện dựa trên thư viện số học NAG;
trong Maple, các chương trình con NAG đã được mở rộng để cho phép độ chính
xác ngẫu nhiên lớn. Các ví dụ về tính toán hình thức sẽ được trình bày trong phần
sau. Maple cũng có một ngôn ngữ lập trình cấp cao đầy đủ. Maple cũng cung cấp
giao tiếp cho những ngôn ngữ khác (C, Java, MatLab, Visual Basic, …).
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 7/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
II. Ứng dụng chương trình
1. Mô tả yêu cầu bài toán lập trình
Bài toán đặt ra là giải khảo sát hàm số của phương trình bậc 3 và phải nêu
các kết quả của nó như chiều biến thiên, tính cực trị, tính lồi lõm, tính giới hạn
Các bước cơ bản của bài toán khảo sát hàm số y=f(x)=ax
3
+ bx
2
+ cx + d
như sau:
- Tìm miền xác định hàm số
- Xét sự biến thiên hàm số bao gồm chiều biến thiên, tìm cực trị, tính lồi
lõm và điểm uốn, và tìm giới hạn hàm số
- Vẽ đồ thị hàm số các tiệm cận và cực trị.
Ứng dụng sử dụng Maple 16.

2. Cấu trúc dữ liệu và hàm sử dụng trên công cụ maple
Để xét việc khảo sát hàm số, ta dùng một số hàm cung cấp sẵn của Maple như sau:
− Ngoài các kiểu hàm số, kiểu biến, còn sử dụng kiểu -infinity và (+)infinity
như kiểu -∞ và +∞
− Hàm diff tính đạo hàm cho một hàm số
− Hàm factor để phân tích biểu thức tổng thành tích các thừa số, biểu diễn rút
gọn cho người dùng để quan sát mô phỏng qua trình tính toàn
− Hàm solve để giải phương trình các bậc
− Hàm max, min cho hàm solve để tìm nghiệm lớn nhất và nhỏ nhất của
phương trình
− Hàm simplify để rút gọn 1 biểu thức
− Hàm lim để tính giới hạn của một hàm số f(x) khi x tiến đến một giá trị nào
đó
− Hàm eval để xác định giá trị biểu thức tại điểm nào đó như giá trị đối số thứ
2 truyền vào
− Ngoài ra, còn dùng hàm plot để vẽ đồ thị hàm số của một biểu thức đại số
và quy định được độ lớn của trục tung và trục hoành.
3. Thuật giải
Các bước của giải thuật việc khảo sát hàm số giống như yêu cầu bài toán đưa ra
gồm cá bước như sau:
a. Tìm miền xác định của hàm số, thường D=R
b. Xét sự biến thiên của hàm số
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 8/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
- Chiều biến thiên: tính đạo hàm y', xét dấu y' để suy ra chiều biến thiên đồ
thị hàm số.
- Cực trị: dựa vào chiều biến thiên tìm các điểm cực trị (nếu có) của đồ thị
hàm số.
- Tính lồi, lõm và điểm uốn: tính đạo hàm y'' và xét dấu y'' để tìm điểm uốn
của đồ thị hàm số (nếu có).

- Tính giới hạn: tính các giới hạn hàm số, tìm các điểm tiệm cận của hàm số
(nếu có).
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 9/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
c. Vẽ đồ thị hàm số
- Vẽ các đường tiệm cận của hàm số (nếu có)
- Xác định các điểm đặc biệt của đồ thị hàm số: cực trị, các giao điểm của
độ thị với trục tọa độ (nếu có)
- Vẽ đồ thị hàm số
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 10/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
4. Viết đoạn code thủ tục.
Hàm khaoSatHamSo để khảo sát hàm số bậc 3 với 4 thông số a, b, c, d cho hàm số
y=f(x)=ax
3
+ bx
2
+ cx + d như sau:

>
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 11/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 12/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 13/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
5. Dữ liệu thử nghiệm
>
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 14/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số

>
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 15/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 16/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
>
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 17/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
>
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 18/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
Kết Luận
Thông qua việc tìm hiểu môn học lập trình Symbolic này, em tìm hiểu cách
lập trình tính toán mới có thể giải quyết bài toán chuyên về lĩnh vực toán học
cách nhanh chóng và hiệu quả thông qua ngôn ngữ Maple.
Thông qua bài thu hoạch này, em mong muốn trình bày một ứng dụng
Maple mô phỏng việc giải và biện luận toán của các chương trình máy tính
như con người thông qua lập trình ngôn ngữ hình thức. Và nếu khai thác tốt
Maple, ta có được một công cụ mạnh mẽ trong việc dạy và học, nghiên cứu
khoa học trong lĩnh vực toán học và có thể áp dụng nhiều lĩnh vực khác.
SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 19/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số
Tài Liệu Tham Khảo
1. Bài giảng PGS. TS. Đỗ Văn Nhơn
2. Problem Solving with Maple A Handbook, Carl Eberhart, Department of
Mathematics University of Kentucky
3. Maple 16 User Guide và Maple 16 Programming Guide (download tại
/>4. Một số tài liệu từ internet
/> /> />SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 20/21
Bài Thu Hoạch - Tìm Hiểu Lập Trình Symbolic Và Ứng Dụng Khảo Sát Hàm Số

Nhận Xét Của Giáo Viên




























SV: Nguyễn Võ Ngọc Huy (CH1101091) Trang 21/21

×