Cụ thể trong bài tiểu luận là ứng dụng lập trình Maple vào giải quyết bài toán đại số cấp trung học phổ thông.. 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 t
Trang 1Đại Học Quốc Gia TP.HCM Trường Đại Học Công Nghệ Thông Tin
BÁO CÁO CHUYÊN ĐỀ LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI:
ỨNG DỤNG MAPLE XÂY DỰNG
HỆ THỐNG GIẢI TOÁN LỚP 12
Học viên: Trịnh Duy Sâm
Bình Dương – 01/2013
Trang 2MỤC LỤC
MỤC LỤC 2
LỜI MỞ ĐẦU 3
PHẦN I GIỚI THIỆU MAPLE 4
PHẦN II LÝ THUYẾT VỀ KHẢO SÁT HÀM SỐ 10
PHẦN III ỨNG DỤNG MAPLE GIẢI BÀI TOÁN KHẢO SÁT HÀM SỐ 11
KẾT LUẬN 15
15
TÀI LIỆU THAM KHẢO 16
Trang 3LỜI MỞ ĐẦU
Cùng với sự phát triển như vũ bão của Công nghệ Thông tin trong những năm gần đây Con người cũng muốn máy móc có được những khả năng suy nghĩ, tư duy và thậm chí là có biểu hiện tình cảm giống như con người và làm việc như bộ não của con người Cũng vì thế ngành Trí tuệ nhân tạo ra đời và ngày càng phát triển Tuy nhiên đi kèm với nó là những thách thức cực kỳ lớn về mặt lập trình, cần phải có một đội ngũ cộng tác lẫn nhau hoặc những chuyên viên lập trình giỏi mới có thể đáp ứng được những yêu cầu này Nhưng Maple đã ra đời và giải quyết được những vấn đề trên, việc lập trình giờ đây đã nhẹ nhàng hơn do sự mạnh mẽ của công cụ này Trong bài tiểu luận này tôi xin được giới thiệu về việc ứng dụng lập trình symbolic vào trí tuệ nhân tạo Cụ thể trong bài tiểu luận là ứng dụng lập trình Maple vào giải quyết bài toán đại số cấp trung học phổ thông Dùng Maple
16 đê lập trình giải quyết bài toán “ Khảo sát hàm số”
Em xin được gửi lời cám ơn chân thành đến thầy PGS TS Đỗ Văn Nhơn đã tận tình giảng dạy và hướng dẫn cho chúng em trong suốt thời gian học tại trường để
có thể hoàn thành được tiểu luận này và có được những kiến thức quý báu làm hành trang vào đời
Chân thành cám ơn Trịnh Duy Sâm
Trang 4PHẦN I GIỚI THIỆU MAPLE
1 GIỚI THIỆU VỀ MAPLE:
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
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 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
Trang 5Và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) Giao diện Java bị phê phán là chậm[3]; những sự phát triển được thực hiện trong các bản sau, mặc dù tài liệu Maple
11 documentation[4] khuyến cáo giao diện (“cổ điển”) trước đây dành cho người với
bộ nhớ vật lý ít hơn 500 MB Giao diện cổ điển này 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[5] 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 như một hộp công cụ Maple
Maple là một gói phần mềm toán học thương mại phục vụ cho nhiều mục đích Nó phát triển lần đầu tiên vào năm 1980 bởi Nhóm Tính toán Hình thức tại Đại học Waterloo ở Waterloo, Ontario, Canada
Từ năm 1988, nó đã được phát triển và thương mại hóa bởi Waterloo Maple Inc (còn được biết đến với tên gọi Maplesoft), một công ty Canada cũng có trụ sở tại Waterloo, Ontario Phiên bản hiện tại là Maple 16 Maple có cách cài đặt đơn giản, chạy được trên nhiều hệ điều hành, có cấu trúc linh hoạt để sử dụng tối ưu cấu hình máy và có trình trợ giúp (help) rất dễ sử dụng Từ phiên bản 7, Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói lệnh tự học gắn liền với toán học phổ thông
và đại học Ưu điểm đó làm cho nhiều nước trên thế giới lựa chọn sử dụng Maple cùng các phần mềm toán học khác trong dạy học toán trước đòi hỏi của thực tiễn và sự phát triển của giáo dục
Ngoài các tính năng tính toán và minh hoạ rất mạnh mẽ bằng các câu lệnh riêng biệt (thường chỉ cho ta kết quả cuối cùng), Maple còn là một ngôn ngữ lập trình hướng thủ tục (procedure)
Thủ tục là một dãy các lệnh của Maple theo thứ tựmà người lập trình định sẵn để
xử lí một công việc nào đó, khi thực hiện thủ tục này Maple sẽ tự động thực hiện các lệnh có trong thủ tục đó một cách tuần tự và sau đó trả lại kết quả cuối cùng
2 MỘT SỐ TÍNH NĂNG CƠ BẢN CỦA MAPLE
Trang 6Ngườ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 đủ Cũng có giao diện cho những ngôn ngữ khác (C, Fortran, Java, MatLab, và Visual Basic) Cũng có một giao diện dành cho Excel
Kiến trúc
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 Nhân Maple được viết bằng C Maple chạy trên tất cả các
hệ điều hành chí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 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 lạ đối với chương trình thương mại, đa số mã nguồn đều có thể xem tự
do
Nguồn gốc tên gọi
Tên "Maple" không phải là tên viết tắt hoặc từ cấu tạo bằng chữ đầu, mà chỉ đơn giản là để chỉ hình tượng Lá phong (tiếng Anh: maple) trên Quốc kỳ Canada
Với phần mềm Maple, chúng ta có thể:
+ Thực hiện các tính toán với khối lượng lớn, với thờigian nhanh và độ chính xác cao
+ Sử dụng các gói chuyên dụng của Maple để giải quyết các bài toán cụ thể như:vẽ
đồ thị (góiplot), hình học giải tích (gói geometry), đại số tuyến tính (gói linalg), + Thiết kế các đối tượng 3 chiều
+ v.v
Ví dụ về mã Maple:
+ Tính toánc ácsố lớn, các biểu thức cần độ chính xác cao
>100!:
Đáp án :
933262154439441526816992388562667004907159682643816214685929638952175 999932299156089414639761565182862536979208272237582511852109168640000 00000000000000000000
>2^64:
Trang 7Đáp án : 18446744073709551616
>evalf(Pi,500):
Đáp án :
3.1415926535897932384626433832795028841971693993751058209749445923078 164062862089986280348253421170679821480865132823066470938446095505822 317253594081284811174502841027019385211055596446229489549303819644288 109756659334461284756482337867831652712019091456485669234603486104543 266482133936072602491412737245870066063155881748815209209628292540917 153643678925903600113305305488204665213841469519415116094330572703657 595919530921861173819326117931051185480744623799627495673518857527248 912279381830119491
+ Vẽ đồ thị các hàm số
>with(plots):
Warning, thenamechangecoordshasbeen redefined
>with(plottools):Warning, theassigned namearrownowhasaglobalbinding
>plot(x^3+4*x^2-1,x=-10 5,y=-10 15,thickness=2,numpoints=1000):
+ Tính đạo
hàm số
>diff(sin(2*x^2-1),x):
Đáp án :
>int(sin(x)*cos(x),x):
Thiết kế các đối tượng 3 chiều
>tubeplot([10*cos(t),10*sin(t),0,t=0 2*Pi,radius=2*cos(7*t),numpoints=120,tube points=24],
scaling=CONSTRAINED):
>tubeplot({[10*cos(t),10*sin(t),0,t=0 2*Pi,radius=2*cos(7*t),numpoints=120,tub epoints=24]
,[0,10+5*cos(t),5*sin(t),t=0 2*Pi,radius=1.5,numpoints=50,
Trang 8Tìm
integrate(cos(x/a), x);
Đáp án:
Tính lời giải chính xác cho phương trình vi phân thường với điều kiện ban đầu dsolve( {diff(y(x),x,x) - 3*y(x) = x, y(0)=0, D(y)(0)=2}, y(x) );
Đáp án:
Tính toán ra số nghiệm của phương trình bắt đầu tại điểm ; viết kết quả với 75 số sau dấu chấm
evalf[75](RootOf(exp(x)=x^2+2,x,-1));
1.3190736768573653544178991095208484644219667808254976692560890049051 2707635
Tính định thức của ma trận
M:= Matrix([[1,2,3], [a,b,c], [x,y,z]]); # Ma trận mẫu
with(LinearAlgebra):Determinant(M);
Đáp án: bz − cy + 3ay − 2az + 2xc − 3xb
Vẽ x2 + y2 với x và y đi từ -1 đến 1
plot3d(x^2+y^2,x=-1 1,y=-1 1);
Giải hệ phương trình vi phân cục bộ
with
eqn1:= diff(v(x, t), x) = -u(x,t)*v(x,t):
eqn2:= diff(v(x, t), t) = -v(x,t)*(diff(u(x,t), x))+v(x,t)*u(x,t)^2:
eqn3:= diff(u(x,t), t)+2*u(x,t)*(diff(u(x,t), x))-(diff(diff(u(x,t), x), x)) = 0:
pdsolve({eqn1,eqn2,eqn3,v(x,t)<>0},[u,v]): op(%);
Đáp án:
Tìm hàm f thỏa mãn phương trình tích phân
eqn:= f(x)-3*Integrate((x*y+x^2*y^2)*f(y), y=-1 1) = h(x):
intsolve(eqn,f(x));
Đáp án:
Các xây dựng lập trình mệnh lệnh mẫu:
myfac := proc(n) local out, i;
out := 1;
if n < 0 then error "input must be nonnegative"
else
Trang 9for i from 1 to n do
out := out * i
end do;
out
end if
end proc;
Trang 10PHẦN II LÝ THUYẾT VỀ KHẢO SÁT HÀM SỐ
Để khảo sát hàm số:
- Xác định hàm số đó thuộc dạng nào
- Tiến hành các bước khảo sát hàm số đó
Các bước khảo sát và vẽ đồ thị hàm số
B1: Tìm tập xác định
- Hàm số bậc 3 và bậc 4 có tập xác định là ℜ
- Hàm số nhất biến
d cx
b ax y
+
+
= có tập xác định là
−
ℜ
c
d
\
B2: Sự biến thiên
Tính y’ , giải phương trình y’=0
Tính các giới hạn (tiệm cận_nếu có):
- Đối với hàm số bậc 3 và bậc 4:
Tính limx >+∞ f(x) và limx >−∞ f(x)
- Đối với hàm số nhất biến:
d cx
b ax y
+
+
= + Tính các giới hạn:
c
a d cx
b ax
+
+
=
+∞
>
c
a d cx
b ax
+
+
=
−∞
>
Suy ra đồ thị có tiệm cận ngang là
c
a
y=
+ Tính các giới hạn: lim ( ) =(±∞)
+
+
=
−
b ax
c
d x
Suy ra đồ thị có tiệm cận đứng là
c
d
x= − Bảng biến thiên
Từ Bảng biến thiên suy ra:
- Các khoảng đồng biến, nghịch biến của hàm số
- Các điểm cực trị (nếu có) của hàm số
B3: Vẽ đồ thị
- Tìm giao điểm của đồ thị với trục Oy(cho x=0 , tính x );
- Tìm giao điểm (nếu có) của đồ thị với trục Ox( cho y=0 , tính x bằng cách giải phương trình f(x)=0 )
- Chú ý đến tính đối xứng của đồ thị:
đồ thị hàm số bậc 3 nhận trung điểm của cực đại và cực tiểu làm tâm đối xứng;
đồ thị hàm số bậc 4 (trùng phương) nhận trục Oy làm trục đối xứng;
đồ thị hàm số nhất biến nhận giao điểm 2 đường tiệm cận làm tâm đối xứng
Trang 11PHẦN III ỨNG DỤNG MAPLE GIẢI BÀI TOÁN
KHẢO SÁT HÀM SỐ
1 Mô tả bài toán:
- Chương trình được chạy với:
o Input: hàm số (hàm số đa thức hoặc hàm số phân thức)
o Output: Các bước tiến hành khảo sát hàm số
- Chú ý:
o Hàm đa thức (chỉ xét hàm số bậc 3, không xét hàm số bậc 4 trùng
phương)
o Hàm phân thức (chỉ xét hàm số bậc 1)
- Thực thi chương trình gọi thủ tục
Ví dụ:
2 Thiết kế các thủ tục:
- Thủ tục khảo sát hàm số đa thức
Trang 14Thủ tục khảo sát hàm số phân thức
Trang 15-KẾT LUẬN
Maple đã và đang phát triển mạnh mẽ, nay đã là phiên bản thứ 16 và ngày càng được sử dụng nhiều, từ sinh viên, giáo viên đến các chuyên gia lập trình Bởi ưu điểm của nó có thể thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và độ chính xác cao Sử dụng các gói chuyên dụng của Maple để giải quyết các bài toán cụ thể như:vẽ đồ thị (góiplot), hình học giải tích (gói geometry), đại số tuyến tính (gói linalg), thiết kế các đối tượng 3 chiều rất hiệu quả Không dừng lại ở đó Maple được ứng dụng như một công công cụ mạnh mẽ và hiệu quả để lập trình Trí Tuệ Nhân Tạo Trong bài tiểu luận này em đã nêu lên một phần nhỏ trong các bài toán trung học phổ thông đó là khảo sát hàm số Hướng phát triển có thể phát triển hệ thống giải tất cả các bài toán Đại số và Hình học để giúp giáo viên và học sinh có thể tham khảo và học môn Toán tốt hơn và đạt kết quả cao trong các kỳ thi
Xin cám ơn thầy PGS.TS Đỗ Văn Nhơn đã tận tình giúp đỡ em hoàn thành bài báo cáo, cảm ơn các thầy cô và các bạn trong lớp đã giúp đỡ tôi trong lúc thực hiện
để có được kết quả này
Học viên thực hiện:
Trịnh Duy Sâm
Trang 16TÀI LIỆU THAM KHẢO
PGS.TS Đỗ Văn Nhơn (2011) Bài giảng Lập trình Symbolic cho trí tuệ nhân tạo Richard E Klima, Neil Sigmon, Ernest Stitzinger (1999), Applications of Abstract
Algebra with MAPLE.
Website http://www.maplesoft.com
Website http://maplevn2008.wordpress.com