Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
689,5 KB
Nội dung
Lập trình trong Maple ứng dụng giải các bài toán phức tạp MỤC LỤC GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 1 Lập trình trong Maple ứng dụng giải các bài toán phức tạp Phần 1: GIỚI THIỆU ĐỀ TÀI 1. Lý do chọn đề tài Lập trình Symbolic cho Trí Tuệ Nhân Tạo là môn học đem lại nhiều sự sức thu húc cho người học cũng như nghiên cứu. Môn học rèn luyện cho chúng ta sự tính toán một cách nhanh chóng, hiệu quả. Nói đến toán học không chỉ đơn thuần là một môn khoa học mà còn được ứng dụng vào hầu hết các lĩnh vực trong xã hội. Việc ra đời của chiếc máy tính và ngôn ngữ lập trình phần nào giúp các nhà toán học giải quyết vấn đề một cách nhanh chóng. Một bài toán nếu giải theo cách thông thường có thể mất không ít thời gian và kết quả cũng chưa chắc đúng hoàn toàn, trong khi, nếu bài toán đó được giao cho máy tính xử lý thì kết quả có độ chính xác cao hơn. Tuy nhiên, các ngôn ngữ lâu đời như C , Pascal … hay kể cả ngôn ngữ hiện đại như C#, Java …cũng rất khó khăn trong việc thực hiện các dạng toán như giải tích sơ cấp, đại số tuyến tính ….Chúng không thể biểu diễn các ký hiệu toán học đều này cũng gây nên cản trở cho các nhà toán học muốn áp dụng công nghệ thông tin. Cần có một công cụ chuyên biệt có khả năng biểu diễn và giải các bài toán theo ngôn ngữ toán học. Các công cụ Maple, Mathematica, Matlab ra đời nhằm mục đích trên. Và đặc biệt hiện nay phần mềm Maple tích hợp rất nhiều tính năng để giải quyết bài toán một cách nhanh chóng, cũng như đem lại cho người học CNTT sự thích thú, say mê trong lập trình ứng dụng trên Maple. 2. Mục tiêu đề tài - Tìm hiểu và làm rõ một số khái niệm, định nghĩa trong toán học - Hiểu cách định nghĩa các hàm trong Maple - Giải quyết bài toán một cách nhanh chóng và hiệu quả - Ứng dụng phần mềm để giảng dạy hoặc nghiên cứu - Lập trình viên có thể ứng dụng tạo ra một số hàm hay định nghĩa hàm phục vụ riêng khi cần thiết. - Tích hợp phát triển ứng dụng cao hơn. GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 2 Lập trình trong Maple ứng dụng giải các bài toán phức tạp - Ứng dụng CNTT lập trình trong Maple mang tính chất “Trí tuệ nhân tạo” để giải quyết một số bài toán phức tạp. 3. Ý nghĩa - Đem lại cho người dung sự thích thú trong toán học. Từ đó làm động lực cho học nghiên cứu sâu hơn trong toán học, giúp xã hội ngày càng phát triển. - Giúp cho dân lập trình ngày càng có thông minh và trí tuệ giải quyết nhiều vấn đề. - Nâng cấp phần mềm có thêm nhiều chức năng cho người dùng dễ sử dụng, đem lại hiệu quả kinh tế cao. 4. phạm vi ứng dụng - Ứng dụng cho việc giảng dạy toán học, tin học cho các trường học, trung tâm, viện nghiên cứu,… - Ứng dụng cho lập trình CNTT - Học sinh, sinh viên. GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 3 Lập trình trong Maple ứng dụng giải các bài toán phức tạp Phần 2: LẬP TRÌNH TRONG MAPLE ỨNG DỤNG GIẢI TOÁN 1. Giải và biện luận phương trình theo tham số m 1.1 Phân tích yêu cầu: Cho phương trình bậc 2 với tham số là m, Giải và biện luận phương trình cho tất cả các trường hợp. 1.2 Cấu trúc dữ liệu: Đầu vào phương trình phải có dạng tổng quát: vế trái là một biểu thức với tham số m, vế phải bằng 0. ví dụ: mx 2 +(m-1)x-3=0 1.3 Thuật giải: B0: khai báo biến a,b,c,vt,m1,x1,x2,isConst=false; B1: khởi tạo biến pt:= phương trình theo tham số m; B2: p:=vế trái phương trình theo tham số m. B3: gán cho biến a,b,c lần lượt là hệ số của x 2 ,x 1 ,x 0 B4: Delta=b*b-4*a*c; B5: Kiểm tra kiểu dữ liệu của Delta, nếu hợp lệ thì isConst=true. B6: Nếu isConst:=true thì B6.1: Delta>0 thì pt có 2 nghiệm phân biệt: x1=(-b+sqrt(Delta))/2*a; X2=(-b-sqrt(Delta))/2*a; B6.2: Delta=0 thì pt có nghiệm kép x1=x2=-b/2*a; B6.3: Delta<0 thì pt vô nghiệm. B7: nếu isConst:=false thì return; B8: TH Delta=0 B8.1 giải pt delta=0 theo m: m1=solve(Delta=0,bienm) GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 4 Lập trình trong Maple ứng dụng giải các bài toán phức tạp B8.2 nếu m1<>Null phương trình có nghiệm kép X1=subs(bienm=m1[1],-b/2*a; X2=subs(bienm=m1[2],-b/2*a; B9: TH Delta>0 B9.1 giải bất phương trình Delta>0 tham số m: m1=solve(Delta>0,bienm) B9.2 nếu m1<>Null pt có 2 nghiệm phân biệt X1=(-b+sqrt(Delta,symbolic)/2*a; X2=(-b-sqrt(Delta,symbolic)/2*a; B10: TH Delta<0 B10.1 Giải bất pt Delta<0 tham số m: m1=solve(Delta<0,bienm) B10.2 Nếu m1<>Null pt vô nghiệm GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 5 Lập trình trong Maple ứng dụng giải các bài toán phức tạp 1.4 Thủ tục GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 6 Lập trình trong Maple ứng dụng giải các bài toán phức tạp 1.5 Dữ liệu mẫu Delta theo m: m^2+4*m+4 Khi m bang -2 thi phuong trinh nghiem kep -3 Khi m bang -2 thi phuong trinh nghiem kep -3 Khi m thuoc RealRange(-infinity,Open(-2)) hoac RealRange(Open(-2),infinity)thi phuong trinh co 2 nghiem la: 2*m+1 va m-1 2. Suy diễn tiến trên luật dẫn cơ bản 2.1 Phân tích yêu cầu phát biểu vấn đề suy diễn:… về mặt cơ sở có sẳn tập F và R. vấn đề đặt ra là giả sử cho trước tập giả thiết H, ta muốn suy ra một tập mục tiêu G. Tìm dãy các luật để từ H ta suy ra được G (tìm lời giải cho bài toán suy diễn). 2.2 Cấu trúc hệ luật dẫn: (F,R) Giả sử: F={p, q, r, a, b…} R={ các luật dẫn có dạng if gt then kl; gt và kl là các tập con của F} 2.3 Thuật giải: + Xác định biến (kiểu dữ liệu nhất định, cấu trúc điều khiển,… Solution: ds các luật được áp dụng Known:Lưu lại tập sự kiện đã biết B1: Khởi tạo biến: Sol:=[]; Known:=H; GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 7 Lập trình trong Maple ứng dụng giải các bài toán phức tạp B2: while (chưa đạt được mục tiêu G) do 2.1: Tìm luật r thuộc R có thể áp dụng trên Known 2.2: If (không tìm được r) then Dừng: không tìm được lời giải 2.3: Thêm r vào Sol; them kl(r) vào Known End do; B3: Cho kết quả tìm được lời giải Solution 2.4 Thủ tục: Giả sử đã có (F,R), biến toàn cục 2.5 Dữ liệu mẫu: GT={a,b} Rules={a->c;b->d;a->e; a,d->e;b,c->f; e,f->g} Sol={g}; GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 8 Lập trình trong Maple ứng dụng giải các bài toán phức tạp 3. Tìm chu trình Euler 3.1 Phân tích yêu cầu: - Đường Euler của đa đồ thị là đường đi qua mỗi cạnh của đồ thị đúng một lần. - Chu trình Euler của đa đồ thị là đường đi qua mỗi cạnh của đồ thị đúng một lần. - Đa đồ thị G có chu trình vô hướng Euler khi và chỉ khi mọi đỉnh đều có bậc chẵn. - Đa đồ thị G có đường đi Euler vô hướng khi và chỉ khi số đỉnh bậc lẻ bằng 2. Phác họa lời giải: void main() { Nhập đồ thị; Kiemtradothi(); if( có chu trình Euler ); InchutrinhEuler(); } Chú thích: + Ta chưa khai báo các biến, khi cần biến nào ta sẽ khai báo biến đó. + Chưa cần khai báo các tham số của hàm, dần dần qua các bước ta sẽ thấy hàm cần tham số gì => khi đó ta có thể điều chỉnh lại. + Đoạn mã trên chính là mã giả. Nó gần với ngôn ngữ tự nhiên hơn là với ngôn ngữ lập trình và dần dần người ta sẽ biến chuyển nó ngày càng gần hơn với ngôn ngữ mà ta chọn. Trong những phần sau, bạn sẽ được làm quen thêm với mã giả. GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 9 Lập trình trong Maple ứng dụng giải các bài toán phức tạp GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 10 [...].. .Lập trình trong Maple ứng dụng giải các bài toán phức tạp 3.2 Cấu trúc dữ liệu - Đầu vào chương trình là một đồ thị dạng Graph - Đầu ra là tập hợp các đỉnh tạo thành chu trình Định nghĩa các hàm cần sử dụng - Thủ tục khởi tạo ban đầu, sử dụng các package cần thiết > Init:=proc() restart; interface( warnlevel = 0 ); with(networks);... Trường – CH1101150 Lập trình trong Maple ứng dụng giải các bài toán phức tạp B2.1: cho i:=Vstart, C=[i]; CycleFound=false; B2.2: Thực hiện vòng lặp: Trong khi Not CycleFound: B2.2.1: Tìm đỉnh j kế cận đỉnh i, nếu đỉnh j=Vstart thì tìm được một chu trình B2.2.2: thêm đỉnh j vào C rồi xóa cạnh i,j B2.2.3: Nếu j=Vstart thì cập nhật CycleFound=true; i=j; B2.2.4: Nếu tìm được một chu trình C thì thêm vào... {5,10},{8,9},{9,10}]: H:=graph(V,E): draw(H); EulerRouting(H); GVHD: PGS.TS Đỗ Văn Nhơn 14 HVTH: Lê Nhựt Trường – CH1101150 Lập trình trong Maple ứng dụng giải các bài toán phức tạp Chu trinh Euler tim duoc : [1, 2, 3, 5, 8, 9, 10, 5, 7, 6, 3, 4, 1] TÀI LIỆU THAM KHẢO [1] [2] [3] [4] Hoàng Kiếm, Giáo trình Các hệ Cơ sở Tri thức, NXB ĐHQG, 2006 Stuart Russell & Peter Norvig, Artificial Intelligence – A modern approach... trinh C vao ECycle tai vi tri vStart if ECycle=[] then ECycle:=C; else i:=1; while ECycle[i]vStart do i:=i+1; od; GVHD: PGS.TS Đỗ Văn Nhơn 13 HVTH: Lê Nhựt Trường – CH1101150 Lập trình trong Maple ứng dụng giải các bài toán phức tạp ECycle:=[op(1 i1,ECycle),op(C),op(i nops(ECycle),ECycle)]; fi: #Tim dinh vStart ke tiep neu con chu trinh if E{} then V:={}; for i in E do V:=V union ends(i,H) od; V:=V... trình Euler > Euler:=proc(G::graph) local H,V,E,vStart,ECycle,C,S,cycleFound,i,j,k; H:=duplicate(G); V:=vertices(G); GVHD: PGS.TS Đỗ Văn Nhơn 12 HVTH: Lê Nhựt Trường – CH1101150 Lập trình trong Maple ứng dụng giải các bài toán phức tạp E:=edges(G); vStart:=V[1]; ECycle:=[]; while E{} do i:=vStart; C:=[i]; cycleFound:=false; while not cycleFound do #Tim dinh j ke can i, neu j=vStart -> duoc 1 chu trinh... thị G vào H - V:=vertices(G): lấy tập các đỉnh vào V - E:=edges(G); lấy tập các cạnh vào E - Convert: chuyển đổi từ dạng danh sách sang tập hợp 3.3 Thuật giải B1: Khởi tạo: - V: Tập các đỉnh của đồ thị G - E: Tập các cạnh/cung của đồ thị G - H chứa đồ thị G(V,E) - Đỉnh xuất phát là đỉnh 1:Vstart:= V[1]; - Chu trình bằng rỗng: ECycle=[]; B2: Thực hiện vòng lặp: trong khi E khác rỗng: GVHD: PGS.TS Đỗ... một chu trình C thì thêm vào ECycle B2.2.5: Tìm đỉnh Vstart kế tiếp nếu còn chu trình End do; End do; B3: In ra kết quả các chu trình đã tìm được 3.4 Thủ tục Thủ tục khởi tạo ban đầu, sử dụng các package cần thiết : > Init:=proc() restart; interface( warnlevel = 0 ); with(networks); #with(LinearAlgebra); end: Thủ tục tìm chu trình Euler > Euler:=proc(G::graph) local H,V,E,vStart,ECycle,C,S,cycleFound,i,j,k;... edition), Prentice Hall, 2003 Nhon Van Do, Model for Knowledge Bases of Computational Objects, IJCSI International Journal of Computer Science Issues, Vol 7, Issue 3, No 8, May 2010 Đỗ Văn Nhơn, Bài giảng môn học lập trình Symbolic 2013 GVHD: PGS.TS Đỗ Văn Nhơn 15 HVTH: Lê Nhựt Trường – CH1101150 . Lập trình trong Maple ứng dụng giải các bài toán phức tạp MỤC LỤC GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 1 Lập trình trong Maple ứng dụng giải các bài toán phức tạp Phần. CH1101150 9 Lập trình trong Maple ứng dụng giải các bài toán phức tạp GVHD: PGS.TS Đỗ Văn Nhơn HVTH: Lê Nhựt Trường – CH1101150 10 Lập trình trong Maple ứng dụng giải các bài toán phức tạp 3.2 Cấu. CH1101150 3 Lập trình trong Maple ứng dụng giải các bài toán phức tạp Phần 2: LẬP TRÌNH TRONG MAPLE ỨNG DỤNG GIẢI TOÁN 1. Giải và biện luận phương trình theo tham số m 1.1 Phân tích yêu cầu: Cho phương trình