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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 [...]... 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. .. 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. .. - 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)=ax3 + bx2 + 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. .. 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... 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... Guide (download tại http://www.maplesoft.com/documentation_center/) 4 Một số tài liệu từ internet http://giaoan.violet.vn/present/show/entry_id/227455 http://maplevn2008.wordpress.com/ http://vi.wikipedia.org/wiki/Maple 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 . 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. 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. 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:

Ngày đăng: 10/04/2015, 01:33

Từ khóa liên quan

Mục lục

  • Mục Lục

  • Lời Cảm Ơn

  • Lời Mở Đầu

  • 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

      • a. Giảm thời gian phát triển chương trình

      • b. Tăng độ chính xác mô hình

      • 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

      • 2. Giới thiệu về ngôn ngữ Maple

        • a. Lịch sử hình thành

        • b. Kiến trúc và chức năng

        • II. Ứng dụng chương trình

          • 1. Mô tả yêu cầu bài toán lập trình

          • 2. Cấu trúc dữ liệu và hàm sử dụng trên công cụ maple

          • 3. Thuật giải

          • 4. Viết đoạn code thủ tục.

          • 5. Dữ liệu thử nghiệm

          • Kết Luận

          • Tài Liệu Tham Khảo

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

Tài liệu cùng người dùng

Tài liệu liên quan