Ứng dụng lập trình Symbolic để giải và biện luận phương trình và hệ phương trình theo tham số m

16 1K 0
Ứng dụng lập trình Symbolic để giải và biện luận phương trình và hệ phương trình theo tham số m

Đ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 môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn LỜI MỞ ĐẦU Trong thời đại ngày nay, toán học đã đóng góp một phần quan trọng trong cuộc sống của chúng ta. Trước đây, khi giải một bài toán thì cần phải tốn rất nhiều thời gian và công sức. Tuy nhiên, gần đây do sự phát triển mạnh mẽ của công nghệ thông tin thì việc giải một bài toán trở nên khá đơn giản. Đó là nhờ sự ra đời phần mềm Maple do một nhóm các nhà khoa học của Canada thuộc trường đại học Waterloo xây dựng. Maple là một công cụ tuyệt vời hỗ trợ cho việc học tập và nghiên cứu toán học, có thể thực hiện được mọi điều từ những phép toán đơn giản nhất, sơ cấp nhất cho đến những tính toán phức tạp nhất. Chính vì lý do trên nên sau khi học xong môn “Lập trình Symbolic cho trí tuệ nhân tạo”, em đã chọn đề tài “Ứng dụng lập trình Symbolic để giải và biện luận phương trình và hệ phương trình theo tham số m”. Trong phạm vi bài thu hoạch này, em sẽ phân tích cấu trúc dữ liệu, giải thuật để giải và biện luận phương trình và hệ phương trình theo tham số m, đồng thời viết một chương trình để giải và biện luận phương trình và hệ phương trình theo tham số m bằng phần mềm Maple 16. Qua đây, em xin chân thành cảm ơn PGS.TS. Đỗ Văn Nhơn đã tận tình hướng dẫn em môn học bổ ích và đầy ý nghĩa này. Em xin cảm ơn các bạn cùng khoá và các anh chị khoá trước đã giúp đỡ em tìm tài liệu và góp ý cho em hoàn thành tốt bài thu hoạch này! Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 1 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 2 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn MỤC LỤC Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 3 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn NỘI DUNG CHƯƠNG I: GIỚI THIỆU VỀ MAPLE VÀ MỘT SỐ LỆNH ĐƯỢC SỬ DỤNG TRONG CHƯƠNG TRÌNH I.1. Giới thiệu về Maple Maple là một hệ thống tính toán trên các biểu thức đại số. Cho đến nay, Maple đã được phát triển qua nhiều phiên bản khác nhau và ngày càng hoàn thiện. Phần mềm Maple có thể thực hiện các công việc sau: • 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ị, hình học giải tích, đại số tuyến tính. • Thiết kế các đối tượng 3 chiều. • Không chỉ dừng lại ở việc hỗ trợ tính toán, Maple còn có khả năng lập trình, có thể xem Maple như là một ngôn ngữ lập trình, trong đó chúng ta có thể tạo ra những chương trình và những gói (package) để tái sử dụng. • Một tính năng rất hay và cũng rất nổi bật là Maple có thể hợp tác với một ngôn ngữ chủ (host language) như VB6.0, VB.Net, Java Khả năng đặc biệt này của Maple giúp chúng ta thực hiện được những phần mềm (tính toán, hỗ trợ dạy/học tóan ) đuợc viết mã bằng ngôn ngữ chủ và liên kết với Maple để thực hiện các tác vụ toán học phức tạp mà đòi hỏi rất nhiều kỹ năng lập trình. I.2. Một số lệnh được sử dụng trong chương trình II.2.1. Lệnh lhs(expr) và rhs(expr) Dùng lấy vế trái và vế phải của biểu thức expr. Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 4 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn II.2.2. Lệnh coeff(p,x) Dùng lấy hệ số của biến x trong biểu thức p. II.2.3. Lệnh expand(expr) Dùng để khai triển biểu thức đại số expr. II.2.4. Lệnh solve(equations, variables) và lệnh linsolve(matrix, vector) Lệnh solve dùng để tìm nghiệm của phương trình, bất phương trình. Lệnh linsolve dùng để giải hệ phương trình đại số tuyến tính với vector xác định vế phải. II.2.5. Lệnh nops(e) Dùng để chỉ số lượng phần tử trong danh sách e. II.2.6. Lệnh convert(expr,form) Dùng để chuyển biểu thức sang kiểu dữ liệu bất kỳ. II.2.7. Lệnh subs(x=a,expr) Dùng để giải biểu thức expr với biến x có giá trị là a. II.2.8. Lệnh parse(string) Dùng chuyển chuỗi sang biểu thức. II.2.9. Cách lệnh về chuỗi - Lệnh searchtext (pattern, string): Dùng tìm chuỗi con pattern trong chuỗi string. - Lệnh substring (string, range):Dùng copy chuỗi string theo giới hạn range. II.2.10. Các lệnh về ma trận - Lệnh Matrix(m, n, L): Dùng tạo ma trận cấp m x n từ bảng liệt kê các phần tử của ma trận L theo thứ tự từ trái sang phải và từ trên xuống dưới. - Lệnh Determinant(A): Tính định thức của ma trận A. - Lệnh DeleteColumn(A,L): xóa cột của ma trận A theo giới hạn L. Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 5 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn CHƯƠNG II: GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH VÀ HỆ PHƯƠNG TRÌNH THEO THAM SỐ M II.1. Giải và biện luận phương trình bậc nhất 1 ẩn số theo tham số m II.1.1. Phân tích yêu cầu Cho phương trình bậc nhất 1 ẩn số có dạng ax + b =0 theo tham số m. Yêu cầu: Giải và biện luận phương trình bậc nhất trên. II.1.2. Cấu trúc dữ liệu - Phương trình bậc nhất được lưu trữ dưới dạng hàm số f:=ax+b. - Dùng cấu trúc rẽ nhánh if, cấu trúc lặp for để giải và biện luận phương trình. - Dùng danh sách tập hợp để lưu trữ danh sách nghiệm. II.1.3. Thuật giải Input: phương trình bậc nhất 1 ẩn số theo tham số m. Output: giải và biện luận phương trình. Bước 1: Đưa phương trình về dạng ax + b=0 Bước 2: Biện luận phương trình theo a và b: - Trường hợp 1: phương trình không có tham số m: + Nếu a <>0 thì phương trình có nghiệm x:=-b/a, Ngược lại, nếu b=0 thì phương trình vô số nghiệm, Ngược lại phương trình vô nghiệm. - Trường hợp 2: phương trình có tham số m: + Nếu a <>0: tính giá trị m ứng với trường hợp a<>0, khi đó phương trình có nghiệm x:=-b/a. + Nếu a=0: tính giá trị m ứng với trường hợp a=0 (m có thể có 1 hoặc nhiều giá trị). Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 6 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn Xét từng giá trị của m, tính b dựa vào m. Nếu b=0 thì phương trình vô số nghiệm, Ngược lại phương trình vô nghiệm. Bước 3: Kết luận nghiệm của phương trình. II.1.4. Thủ tục giaiptbac1:=proc(pt) local f,a,b,listm,i,t; #B1: đưa pt về dạng ax +b =0 f:=lhs(pt)- rhs(pt); a:=coeff(f,x); b:=expand(f-a*x); #B2: Biện luận pt theo a và b #TH 1:phương trình không có tham số m if type(a,'numeric') then if a<> 0 then printf("%s %s" , "phương trình có nghiệm x=",convert(-b/a,string)); else if b=0 then printf("phương trình vô số nghiệm"); else printf("phương trình vô nghiệm") ; end if end if #TH 2: phương trình có tham số m else listm:={solve(a)}; #danh sách chứa nghiệm của m #TH a<>0 printf("%s %s %s %s" , "Nếu m <>",convert(listm,string),"thì phương trình có nghiệm x=",convert(-b/a,string)); #TH a=0 for i from 1 to nops(listm)do t:=subs(m = listm[i], b); printf("%s %s %s %s","Nếu m=",convert(listm[i],string),", thế b=",convert(t,string)); if t = 0 then printf(" thì phương trình vô số nghiệm"); else printf(" thì phương trình vô nghiệm") ; end if end do; end if; end proc: II.1.5. Dữ liệu thử nghiệm > giaiptbac1(m*(x-4)=5*x-2); Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 7 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn Nếu m <> {5} thì phương trình có nghiệm x= -(-4*m+2)/(m-5) Nếu m= 5 , thế b= -18 thì phương trình vô nghiệm > giaiptbac1(m^2 *x +2=x+2*m); Nếu m <> {-1, 1} thì phương trình có nghiệm x= -(2-2*m)/(m^2-1) Nếu m= -1 , thế b= 4 thì phương trình vô nghiệm Nếu m= 1 , thế b= 0 thì phương trình vô số nghiệm II.2. Giải và biện luận phương trình bậc hai 1 ẩn số theo tham số m II.2.1. Phân tích yêu cầu Cho phương trình bậc hai 1 ẩn số có dạng ax 2 + bx + c =0 theo tham số m. Yêu cầu: Giải và biện luận phương trình bậc hai trên. II.2.2. Cấu trúc dữ liệu - Phương trình bậc hai được lưu trữ dưới dạng hàm số f:= ax 2 + bx + c - Dùng cấu trúc rẽ nhánh if, cấu trúc lặp for để giải và biện luận phương trình. - Dùng danh sách tập hợp để lưu trữ danh sách nghiệm. II.2.3. Thuật giải Input: phương trình bậc hai 1 ẩn số theo tham số m. Output: giải và biện luận phương trình. Bước 1: Đưa phương trình về dạng ax 2 + bx + c=0 Bước 2: Biện luận phương trình theo a, b và c: - Trường hợp 1: phương trình không có tham số m theo a: - Nếu a =0 thì trở về phương trình bậc 1. - Ngược lại (tức a <>0) thì: + Tính delta:=b 2 -4ac + Trường hợp 1a: Nếu delta không có tham số m thì xét dấu delta: Nếu delta>0 thì , Ngược lại, nếu delta=0 thì , Ngược lại (delta<0) thì phương trình vô nghiệm. Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 8 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn + Trường hợp 1b: delta có tham số m thì biện luận delta theo m: Tính giá trị m theo delta (m có thể có nhiều giá trị). Xét từng giá trị của m: Nếu m<0: phương trình vô nghiệm. Nếu m=0: tính nghiệm kép Nếu m>0: tính 2 nghiệm phân biệt: - Trường hợp 2: phương trình có tham số m theo a: - Nếu a=0: Tính giá trị m theo a (m có thể có nhiều giá trị). Thế từng giá trị của m vào phương trình, trở về phương trình bậc 1. - Nếu a <>0 thì biện luận delta theo tham số m (giống trường hợp 1b). Bước 3: Kết luận nghiệm của phương trình. II.2.4. Thủ tục giaiptbac2:=proc(pt) local f,a,b,c,d,x1,x2,t,listm,i,f1; #B1: đưa pt về dạng ax^2 +bx +c =0 f:=lhs(pt)- rhs(pt); a:=coeff(f,x^2); b:=coeff(f,x); c:=expand(f-a*x^2 - b*x); #B2: Biện luận pt theo a, b và c if type(a,'numeric') then #TH 1 phương trình không có tham số m ở a if a=0 then giaiptbac1(pt); #trở về pt bậc 1 else d:=b*b - 4*a*c; if type(d,'numeric') then #xét TH delta có tham số m không? #TH 1a: phương trình không có tham số m ở delta=>pt không có tham số m if d>0 then x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); printf("%s %s %s %s","Phương trình có 2 nghiệm phân biệt là",convert(x1,string),",",convert(x2,string)); else if d=0 then x1:=-b/(2*a); printf("%s %s","Phương trình có nghiệm kép là",convert(x1,string)); else Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 9 Bài thu hoạch môn Lập trình Symbolic cho TTNT GVHD: PGS.TS. Đỗ Văn Nhơn printf("Phương trình vô nghiệm"); end if; end if; else #TH 1b: phương trình có tham số m ở delta =>biện luận pt theo delta xetdelta(d,a,b,c); # thủ tục tính từng giá trị nghiệm m của delta else #TH2: phương trình có tham số m ở a #TH a=0 listm:={solve(a)}; for i from 1 to nops(listm)do f1:=subs(m = listm[i],pt); #thế giá trị m vào phương trình printf("%s %s %s %s %s","Khi ",convert(a,string),"=0 => m=",convert(listm[i],string),": "); giaiptbac1(f1); end do; #TH a<>0: tính delta, xét dấu delta xetdelta(d,a,b,c); # thủ tục tính từng giá trị nghiệm m của delta end if; end proc: II.2.5. Dữ liệu thử nghiệm > giaiptbac2(x^2-1=2*m*x-2*m); Khi m< 1 : phương trình vô nghiệm Khi m= 1 : phương trình có nghiệm kép x= 1 Khi m> 1 : phương trình có 2 nghiệm phân biệt > giaiptbac2((m-2)*x^2-2*(m+1)*x=5-m); Khi m-2 =0 => m= 2 : phương trình có nghiệm x= -1/2 Khi m< 1 : phương trình vô nghiệm Khi m= 1 : phương trình có nghiệm kép x= -2 Khi m> 1 : phương trình có 2 nghiệm phân biệt II.3. Giải và biện luận hệ phương trình bậc nhất có 2 hoặc 3 ẩn số theo tham số m II.3.1. Phân tích yêu cầu Cho hệ phương trình bậc nhất có 2 hoặc 3 ẩn số theo tham số m. Yêu cầu: Giải và biện luận phương trình bậc nhất trên. II.3.2. Cấu trúc dữ liệu - Hệ phương trình bậc nhất được lưu trữ dưới dạng chuỗi. - Sử dụng mảng 2 chiều để lưu trữ các ma trận hệ số. Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 10 [...]... hoạch m n Lập trình Symbolic cho TTNT Nhơn GVHD: PGS.TS Đỗ Văn - Dùng cấu trúc rẽ nhánh if, cấu trúc lặp for để giải và biện luận phương trình - Dùng danh sách tập hợp để lưu trữ danh sách nghi m II.3.3 Thuật giải Dùng phương pháp Cramer để giải và biện luận hệ phương trình Input: hệ phương trình bậc nhất có 2 hoặc 3 ẩn số theo tham số m Output: giải và biện luận hệ phương trình Bước 1: Đưa hệ phương trình. .. m n Lập trình Symbolic cho TTNT Nhơn GVHD: PGS.TS Đỗ Văn KẾT LUẬN Do bước đầu giải và biện luận phương trình, hệ phương trình trên phần m m Maple nên bài thu hoạch của em vẫn còn m t số hạn chế, trong thời gian ngắn em chưa giải và biện luận được phương trình, hệ phương trình bậc cao hơn Trong bài thu hoạch này em đã trình bày được cấu trúc lưu trữ, xây dựng giải thuật để giải và biện luận phương trình, ... hệ phương trình; cài đặt chương trình bằng phần m m Maple 16 Hướng phát triển của bài thu hoạch này là em sẽ viết th m chương trình để giải được phương trình, hệ phương trình bậc cao và bất phương trình, hệ bất phương trình bậc cao Cao Thị Thuỳ Linh – MSHV: CH1101099 Trang 15 Bài thu hoạch m n Lập trình Symbolic cho TTNT Nhơn GVHD: PGS.TS Đỗ Văn TÀI LIỆU THAM KHẢO 1 PGS.TS Đỗ Văn Nhơn, Bài giảng m n... Kết luận nghi m của hệ phương trình Hạn chế của giải thuật này là chỉ giải và biện luận hệ phương trình bậc nhất có 2 hoặc 3 ẩn số, chưa giải được hệ phương trình có nhiều hơn 3 ẩn số và hệ phương trình bậc hai, bậc ba, … II.3.4 Thủ tục giaiheptbac1:=proc(hept) local he1,he2,i,j,k,l,o,pt,f,x,y,z,t,dx,dy,dz,mang,d,c,mt,matran, A,A1,A2,A3,DetA, DetA1, DetA2,DetA3,listm,q; #Bước 1: Đưa hệ phương trình. .. giaiheptbac1("1*x+2*y+2*z=0;-2*x+ (m- 2)*y+ (m- 5)*z=2 ;m* x+1*y+ (m+ 1)*z=-2;"); Khi Det(A) 1 : phương trình có nghi m: x= (12-4 *m) / (m^ 2-4 *m+ 3) y= 0 z= (2 *m- 6)/ (m^ 2-4 *m+ 3) Khi Det(A)= 1 ,thế vào tính DetA1= 8 thì phương trình vô nghi m Khi Det(A) 3 : phương trình có nghi m: x= (12-4 *m) / (m^ 2-4 *m+ 3) y= 0 z= (2 *m- 6)/ (m^ 2-4 *m+ 3) Khi Det(A)= 3 ,thế vào tính DetA1=DetA2=DetA3=0, khi đó nghi m của hệ là: Cao Thị Thuỳ Linh – MSHV: CH1101099... hoặc Bước 2: Biện luận hệ phương trình: - Tính ma trận hệ số A, tính định thức detA, nếu det A>0 thì dùng phương pháp Cramer để giải và biện luận phương trình, ngược lại thì dừng chương trình - Tính ma trận Aj (A1, A2, A3) bằng cách thay cột thứ j bởi cột các hệ số tự do, tính định thức detA1, detA2, detA3 (trường hợp hệ phương trình 2 ẩn số thì không tính detA3) - Tính giá trị m theo detA (m có thể có... hoạch m n Lập trình Symbolic cho TTNT Nhơn GVHD: PGS.TS Đỗ Văn #Bước 2: #Đổ m ng 2 chiều vào ma trận mt:=Matrix(d-1,4,mang); matran:=Matrix(d-1,4,mang);#TH không xóa cột nào #để ma trận vuông:ki m tra nếu cột nào toàn 0 hết thì xóa cột đó ra (trừ cột cuối) if dx=d-1 then matran:=DeleteColumn(mt,[1]); c:=c-1; end if; if dy=d-1 then matran:=DeleteColumn(mt,[2]); c:=c-1; end if; if dz=d-1 then matran:=DeleteColumn(mt,[3]);... giảng m n lập trình Symbolic cho TTNT 2 Nguyễn Ngọc Trung, Giáo trình Maple, Đại học sư ph m Tp HCM 3 Hoàng Ki m, Giáo trình Các hệ Cơ sở Tri thức, NXB ĐHQG, 2006 4 Nguyễn Chánh Tú, Sử dụng Maple trong học tập, nghiên cứu và giảng dạy toán, Khoa Toán – Đại học sư ph m Huế 5 M. B monagan, K.O Geddes, G Labahn, S .M Vorkoetter, J Maccarron, P Demarco Maple 9 – Introductory Programming Guide Waterloo Maple... Det(A)=",convert(listm[i],string),",thế vào tính DetA1=DetA2=DetA3=0, khi đó nghi m của hệ là:"); linsolve(subs (m= listm[i],A),j); end if; end if; od; end proc: II.3.5 Dữ liệu thử nghi m > giaiheptbac1(" (m- 1)*x+2*y=2 *m+ 1 ;m* x-3*y=0;"); Khi Det(A) 3/5 : phương trình có nghi m: x= (-6 *m- 3)/(-5 *m+ 3) y= -(2 *m+ 1) *m/ (-5 *m+ 3) Khi Det(A)= 3/5 ,thế vào tính DetA1= -33/5 thì phương trình vô nghi m > giaiheptbac1("1*x+2*y+2*z=0;-2*x+ (m- 2)*y+ (m- 5)*z=2 ;m* x+1*y+ (m+ 1)*z=-2;");... vô nghi m printf("%s %s %s %s %s","Khi Det(A)=",convert(listm[i],string),",thế vào tính DetA1=",convert(subs (m = listm[i],DetA1),string),"thì phương trình vô nghi m" ); else #Th =0 thì thế vào DetA2 và DetA3 để ki m tra, nếu =0 thì tính nghi m if subs (m = listm[i],DetA2) =0 and subs (m = listm[i],DetA3) =0 then #tính nghi m if c=4 then j:=vector(3,q); else j:=vector(2,q); end if; #thế m vào ma trận A . hoạch này, em sẽ phân tích cấu trúc dữ liệu, giải thuật để giải và biện luận phương trình và hệ phương trình theo tham số m, đồng thời viết m t chương trình để giải và biện luận phương trình và hệ phương. học xong m n Lập trình Symbolic cho trí tuệ nhân tạo”, em đã chọn đề tài Ứng dụng lập trình Symbolic để giải và biện luận phương trình và hệ phương trình theo tham số m . Trong ph m vi bài. nghi m. II.3.3. Thuật giải Dùng phương pháp Cramer để giải và biện luận hệ phương trình. Input: hệ phương trình bậc nhất có 2 hoặc 3 ẩn số theo tham số m. Output: giải và biện luận hệ phương trình. Bước

Ngày đăng: 10/04/2015, 00:50

Từ khóa liên quan

Mục lục

  • CHƯƠNG I: GIỚI THIỆU VỀ MAPLE VÀ MỘT SỐ LỆNH ĐƯỢC SỬ DỤNG TRONG CHƯƠNG TRÌNH

    • I.1. Giới thiệu về Maple

    • I.2. Một số lệnh được sử dụng trong chương trình

      • II.2.1. Lệnh lhs(expr) và rhs(expr)

      • II.2.2. Lệnh coeff(p,x)

      • II.2.3. Lệnh expand(expr)

      • II.2.4. Lệnh solve(equations, variables) và lệnh linsolve(matrix, vector)

      • II.2.5. Lệnh nops(e)

      • II.2.6. Lệnh convert(expr,form)

      • II.2.7. Lệnh subs(x=a,expr)

      • II.2.8. Lệnh parse(string)

      • II.2.9. Cách lệnh về chuỗi

      • II.2.10. Các lệnh về ma trận

      • CHƯƠNG II: GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH VÀ HỆ PHƯƠNG TRÌNH THEO THAM SỐ M

        • II.1. Giải và biện luận phương trình bậc nhất 1 ẩn số theo tham số m

          • II.1.1. Phân tích yêu cầu

          • II.1.2. Cấu trúc dữ liệu

          • II.1.3. Thuật giải

          • II.1.4. Thủ tục

          • II.1.5. Dữ liệu thử nghiệm

          • II.2. Giải và biện luận phương trình bậc hai 1 ẩn số theo tham số m

            • II.2.1. Phân tích yêu cầu

            • II.2.2. Cấu trúc dữ liệu

            • II.2.3. Thuật giải

            • II.2.4. Thủ tục

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

Tài liệu liên quan