Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
2,25 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÀI THU HOẠCH MÔN LẬP TRÌNH SYMBOLIC ĐỀ TÀI: TÌMHIỂUMAPLEỨNGDỤNGTRONGGIẢICÁCBÀITOÁN Giảng viên: PGS.TS Đỗ Văn Nhơn Học viên: Đinh Đức Khoa Mã số: CH1102003 Lớp: Cao học khóa 6 Hà Nội – 2/2013 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn MỤC LỤC MỤC LỤC 1 LỜI MỞ ĐẦU 2 PHẦN I. GIỚI THIỆU TỔNG QUÁT VỀ PHẦN MỀM MAPLE 3 PHẦN II. ỨNGDỤNGMAPLE ĐỂ GIẢICÁCBÀITOÁNTRONG ĐẠI SỐ TUYẾN TÍNH 13 PHẦN III. LẬP TRÌNH TRONGMAPLE 30 KẾT LUẬN 41 TÀI LIỆU THAM KHẢO 42 HVTH: Đinh Đức Khoa - CH1102003 Trang: 1 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn LỜI MỞ ĐẦU Chiến lược phát triển giáo dục Đại học – Cao đẳng từ 2005 đến 2015 là từng bước đổi mới nội dung, chương trình, giáo trình và phương pháp dạy học. Một trong những khâu then chốt của quá trình đổi mới phương pháp dạy học là rèn luyện kỹ năng tự học, tự thích ứng cho sinh viên. Môn Toán có một vai trò hết sức quan trọng. Bởi, nó là môn học nền tảng giúp ta nhận thức mọi môn học khác như Vật lý, Hóa học, Sinh học hay áp dụngtrongcác vấn đề bài toán kinh tế hay kỹ thuật nhưng nó lại dược đánh giá là môn học khó ở hai nghĩa đó là khó cả về người dạy và khó cả về người học. Câu hỏi đặt ra là: Làm sao để học môn Toán vừa thuận lợi vừa hiệu quả hơn? Maple là một phần mềm Toán học có khả năng ứngdụngtrong mọi nội dung, mọi lĩnh vực như vật lý, Hóa học hay áp dụng vào bàitoán kinh tế…Với khả năng tính toán, minh họa trực quan, Maple là một công cụ rất tốt giúp cho người học và ngườidạy thuận lợi hơn trong quá trình tìmhiểu nó ở các lĩnh vực khác nhau. Điều cần lưu ý là việc sử dụngcác phần mềm tính toán hiện đại không đòi hỏi người dùng phải có kỹ năng lập trình cao cấp mà chỉ yêu cầu người sử dụng nắm vững các kiến thức lý thuyết cơ bản.Với Maple ta chỉ cần thực hiện những câu lệnh đơn giản chứ không phải như lập trình các ngôn ngữ khác trong tính toán. Thông qua hàm tính toántrong môi trường Maple, chúng ta rèn luyện kỹ năng sử dụng máy tính để giải quyết vấn đề cụ thể về toán học. Maple có khả năng tính toán trên số thực lẫn số phức, ngoài các hàm toán học dựng sẵn trongMaple về đủ mọi lĩnh vực: Lượng giác, giải tích, hình học, đại số tuyến tính, lý thuyết số, thống kê, đồ thị, phương trình vi phân và đạo hàm riêng,… Maple cũng cho phép thiết lập thêm các hàm hoặc thủ tục chuyên dụng theo mục đích của người sử dụng. Cũng chính vì sự đa dạng của phần mềm này nên trong khuôn khổ có hạn của bài thu hoạch chỉ tập trung khai thác Maple ở lĩnh vực quan trọng nhất của nó đó là: Toán học. Học viên: Đinh Đức Khoa HVTH: Đinh Đức Khoa - CH1102003 Trang: 2 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn PHẦN I. GIỚI THIỆU TỔNG QUÁT VỀ PHẦN MỀM MAPLE Maple là gói phần mềm toán học thương mại phục vụ cho nhiều lĩnh vực được xây dựng và phát triển bởi của hãng Waterloo. P hiên bản mới nhất là Maple 16. 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.Với Maple ta 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. 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. Ở phương diện này, 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. Maple cung cấp nhiều công cụ trực quan, nhiều gói lệnh chuyên ngành phù hợp với các tính toán phổ thông và bậc đại học, giao diện hoàn thiện hơn và hỗ trợ soạn thảo tốt hơn. Nhiều trường đại học sử dụngMaple để giảng dạy một số môn trong khung chương trình đào tạo đã góp phần làm thay đổi cách học toán, song song với lối giảitoán truyền thống sinh viên có thể giải quyết bàitoán với sự giúp đỡ của Maple. I.1. Giao diện Maple 13 Maple 13 cung cấp hai loại giao diện: - Classic Worksheet - Standard Worksheet Giao diện Classic Giao diện Standard HVTH: Đinh Đức Khoa - CH1102003 Trang: 3 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn I.2. Quy tắc gõ lệnh Các lệnh của Maple được gõ sau dấu nhắc lệnh > , kết thúc lệnh bằng dấu chấm phẩy (;) nếu muốn Maple hiển thị kết quả của việc tính toán, hoặc dấu hai chấm(:) nếu chỉ yêu cầu Maple tính toán mà không hiển thị kết quả. Các bạn dùng phím Enter để yêu cầu Maple bắt đầu thực hiện tính toán. - Để viết các lời giải thích câu lệnh bạn có thể viết chúng sau dấu thăng (#). - Để xuống dòng trên cùng một dấu nhắc lệnh dùng tổ hợp phím Shift-Enter. - Để gán giá trị cho biến ta dùng dấu hai chấm bằng (:=) . - Có thể gọi lại kết quả vừa thực hiện bằng lệnh % (%% lấy kết quả trước kết quả vừa thực hiện ). - Các lệnh của Maple có thể chỉnh sửa, copy,… I.3. Các thành phần cơ sở của Maple I.3.1. Tập ký tự - Bao gồm bảng chữ cái tiếng Anh HVTH: Đinh Đức Khoa - CH1102003 Trang: 4 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn Chữ hoa : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z. Chữ thường : a b c d e f g h i j k l m n o p q r s t u v w x y z. - Chữ số : 0, 1, 2, 3, 4,5, 6, 7, 8, 9. Chú ý : Maple phân biệt chữ hoa – thường . - Tập các ký hiệu đặc biệt : I.3.2. Toán tử cơ bản Phép toán Kí hiệu Phép toán Kí hiệu Phép toán Kí hiệu Cộng + Nhân * Giai thừa ! Trừ - Chia / Mũ ^ I.3.3. Các hàm toán học cơ bản Hàm Ý nghĩa Hàm Ý nghĩa Hàm Ý nghĩa abs(x) │x│ Sqrt(x) √x Exp(x) e x In(x) Log e (x) log10(x) log 10 (x) Max(x1,x2 ) Tính giá trị lớn nhấn của x1, x2 Min(x1,x2 ) Tính giá trị nhỏ nhấn của x1, x2 Round(x) Hàm làm tròn giá trị x sin(x) Sin(x) cos(x) Cos(x) tan(x) Tg(x) arcsin(x) Arcsin(x) arccos(x) Arccos(x) arctan(x) Arctg(x) I.4. Tính toán trên Maple - Maple có khả năng tính toán với những con số rất lớn với độ chính xác cao. > 1000000!:# Tinh 1000000! HVTH: Đinh Đức Khoa - CH1102003 Trang: 5 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn > length(%);#Chieu dai cua 1000000! 5565709 - Maple có đầy đủ các hàm tính toán từ đơn giản đến phức tạp. > 2011+2012; 4023 > 30*11*2011; 663630 I.4.1. Tính toán trên số nguyên Các hàm thông dụng : Hàm Ý nghĩa Hàm Ý nghĩa Hàm Ý nghĩa factorial(n) Tính n giai thừa isqrt(n) Căn bậc hai nguyên của n iroot(x,n) Căn bậc n nguyên của x ifactor(n) Phân tích n thành tích các thừa số nguyên tố irem(m,n) Số dƣ khi chia m cho n iquo(m,n) Thương khi chia m cho n igcd(x1,x2, ) Ước số chung lớn nhất của x1 , x2, ilcm(x1,x2, ) Bội số chung nhỏ nhất của x1 , x2, m mod n Số dƣ khi chia m cho n Ví dụ : > factorial(5); 120 > ifactor(%); (2) 3 (3) (5) > isprime(17); true > nextprime(17); 19 > prevprime(17); 13 HVTH: Đinh Đức Khoa - CH1102003 Trang: 6 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn > isqrt(12); 3 > igcd(24,18); 6 > a:=123:b:=32: >irem(a,b); >iquo(a,b); 27 I.4.2. Tính toán trên biểu thức Hàm Ý nghĩa Hàm Ý nghĩa Hàm Ý nghĩa expand(bt) Khai triển biểu thức bt simplify(bt) Đơn giản biểu thức factor(bt) Phân tích đa thức thành nhân tử nomal(pt) Tối giản phân thức divide(bt1,b t2) Kiểm tra xem bt1 có chia hết cho bt2 không? subs([x1=a1, x2=a2, ],f(x 1,x2, )) Tính giá trị của f(x1,x2, ) với x1=a1,x2 =a2 collect (bt,x) Gom hạng tử của bt theo biến x degree(bt) Bậc của đa thức bt coeff(bt,x^n ) Hệ số của x^n trong đa thức bt Ví dụ : > bt1:=(x+y)*(2*x-1); bt:= (x + y) ( 2x - 1 ) > expand(bt1); 2x 2 - x + 2yx - y > collect(bt1,x); 2x2 + (2y - 1) x - y > bt2:=(x+y)^3 - (x^2 + 2*y^2)*(x+3*y); bt:= (x + y) 3 - (x 2 + 2y 2 ) (x +3y) > simplify(bt2); xy 2 - 5y 3 > subs(x=3,y=5,bt); HVTH: Đinh Đức Khoa - CH1102003 Trang: 7 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn 40 I.5. Giới hạn, đạo hàm và tích phân I.5.1. Tính giới hạn - Cú pháp : limit(f(x),x=a); // Muốn xuất ra biểu thức tính giới hạn ta dùng Limit(f(x),x=a). - Tính giới hạn bên trái : limit(f(x),x=a,left); - Tính giới hạn bên phải : limit(f(x),x=a,right); > limit(sin(x)/x,x=0); 1 > Limit(sin(x)/abs(x),x=0)=limit(sin(x)/abs(x),x=0); > limit(sin(x)/abs(x),x=0,left); -1 > limit(sin(x)/abs(x),x=0,right); 1 I.5.2. Tính đạo hàm - Đạo hàm cấp 1 : diff(f,x); - Đạo hàm cấp n : diff(f,x$n); - Đạo hàm riêng : diff(f, x1$n, [x2$n, x3], xj, [xk$m]) > diff(x*sin(x),x); sin(x) + x cos(x) > diff(x^5,x$3); 60x 2 > diff(f(x),x$3); > diff(f(x,y),x); HVTH: Đinh Đức Khoa - CH1102003 Trang: 8 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn > diff(f(x,y),y); > diff(f(x,y),[x,y]); > diff(x^3*sin(y),x$2,y); 6x cos (y) I.5.3. Tính nguyên hàm và tích phân - Tính nguyên hàm : int(f,x); - Tính tích phân cận a,b : int(f,x=a b); > int(sin(x)*tan(x),x); - sin(x) + ln (sec(x) sinx + tan(x)) > int(sin(x)*exp(x),x=1 3); > int( exp(-x^2)*ln(x), x=0 infinity ); I.4.4. Tính toán trên ma trận I.4.4.1. Khai báo ma trận : Có 2 cách: Cách 1 : A:=matrix(m,n, [ dãy phần tử]) ;// dãy phần tử cách nhau bởi dấu phẩy (,). > A:=matrix(2,2,[sin(x),cos(x),sin(2*x),cos(2*x)]); A:= Cách 2 : A:=array( [ [Dòng 1], [Dòng 2], ,[Dòng n] ] ); HVTH: Đinh Đức Khoa - CH1102003 Trang: 9 [...]... LẬP TRÌNH TRONGMAPLE Như đã giới thiệu trong phần I, ta dùngcác lệnh và hàm cơ bản để tạo ra thư viện các bàitoán mẫu, với thư viện này sẽ rất thuận tiện cho người dùng Chỉ cần thay đổi các số liệu của đề bài ta sẽ được một bài toán mới Trong phần này ta tìm hiểu thêm cách sử dụng các vòng lặp for do, while do, lệnh điều kiện if then và cách thiết lập một thủ tục (procedure) trongMaple - Vòng... PGS.TS Đỗ Văn Nhơn PHẦN II ỨNGDỤNGMAPLE ĐỂ GIẢICÁCBÀITOÁNTRONG ĐẠI SỐ TUYẾN TÍNH II.1 Số phức - TrongMaple quy định số phức i là I II.1.1 Tạo số phức Ta có các lệnh cơ bản sau : - Để gán biến z là số phức a + bi ta nhập lệnh: z:=a+b*I - Để tạo số phức a +bi ta nhập lệnh: complex(a,b) - Để tạo số phức bi ta nhập lệnh: complex(b) II.1.2 Các phép toán trên số phức Các phép toán cộng, trừ, nhân,... basis(S) : Tìm cơ sở của không gian sinh bởi các vectơ của tập S Kết quả trả về là các vectơ thuộc A • basis(A,’rowspace’) : Tìm cơ sở của không gian sinh bởi các vectơ dòng của ma trận A Kết quả trả về là danh sách các dòng của ma trận A • basis(A,’colspace’) : Tìm cơ sở của không gian sinh bởi các vectơ cột của ma trận A Kết quả trả về là danh sách các cột của ma trận A • rowspace(A) : Tìm cơ sở... PGS.TS Đỗ Văn Nhơn A:= > rank(A); 3 Do r(A) = 3 nên các vector ( 0, 1, 1 ), ( 1, 2 , 1 ) và ( 1, 5, 3) là độc lập tuyến tính Bài 2: Trong R4, cho các vector u1 = (1, 1, 2, 4), u2 = (2, -1, -5, 2), u3 = (1, -1, 4, 0) và u2 = (2, 1, 1, 6) Chứng tỏ các vector trên phụ thuộc tuyến tính Tìm một cơ sở cho không gian con của R4 sinh bởi các vector này Giải; > with(linalg): > u1:=vector(4, [1, 1, 2, 4]):... : Tìm cơ sở của không gian sinh bởi các dòng của ma trận A Kết quả trả về là các vectơ khác 0 của ma trận dạng bậc thang rút gọn của A • nullspace(A) : Tìm cơ sở của không gian nghiệm của hệ phương trình tuyến tính AX=0 • sumbasic(S1,S2,…) : Tìm cơ sở của không gian tổng sinh bởi các tập S1, S2, … - Tọa độ và ma trận chuyển cơ sở Trong Maple, để tìm [u]β ta dùngcác lệnh sau: > B:=matrix([u1,u2,…,un]);... proc; Trong đó: HVTH: Đinh Đức Khoa - CH1102003 Trang: 31 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn Cac_bien_dia_phuong: các biến chỉ dùngtrong thủ tục này Cac_bien_toan_cuc: các biến này được sử dụngtrong thủ tục và giá trị của nó vẫn được lưu lại khi thực hiện xong thủ tục Giá trị được tính sau cùng trong thân của thủ tục sẽ được trả về cho thủ tục Ngoài ra, chúng ta có thể sử dụng. .. Để tạo ra một ma trận loại m x n với các phần tử đều bằng element ta nhập: matrix(m,n,element) - Để tạo ra ma trận đơn vị cấp n ta nhập : array(identity,1 n,1 n) - Để tạo ra ma trận đường chéo trong đó list_of_elements là các phần tử trên đường chéo trong đó list_of_elements là các phần tử trên đường chéo, có dạng ta nhập: diag(list_of_elements) II.2.2 Các phép toán ma trận - Để xác định hệ số dòng... ma trận cần tìm ta nhập: linsolve(a,b) HVTH: Đinh Đức Khoa - CH1102003 Trang: 17 Lập trình Symbolic & Trí tuệ nhân tạo PGS.TS Đỗ Văn Nhơn II.2.6 Giải hệ phương trình tuyến tính - Để giải hệ phương trình eqns với các biến vars Trong đó eqns có dạng {eqn1,eqn2,…} và vars có dạng {var1,var2,…} ta nhập: solve(eqns,vars) - Để giải hệ phương trình AX = b, với A là ma trận hệ số, b là vecto cột các hệ số tự... phần bù đại số của phần tử aij II.3.2 Giảibài tập trongMaple - det(A): Tính định thức của A - inverse(A): evalm(1/A): tính ma trận nghịch đảo của ma trận A - solve(a,b): dùng để so sánh a với b - col (A,i): Vecto cột thứ i của ma trận A - col (A,i,…,k): Các cột vector thứ I đến thứ k của ma trận A - concat(A,B,…,) : Nối hai hay nhiều ma trận, vector cùng dòng Bài 1: Tìm ma trận nghịch đảo a) A = > With(linearalgebra):... là những dòng lệnh cơ bản nhất khi tính toán trên số phức Để hiểu rõ hơn về những dòng lệnh này, ta sẽ xét những ví dụ cụ thể với mục đích duy nhất là làm sáng tỏ những dòng lệnh trên Bài 1: a; (1 + i)3 + (3 - i)(1 + i); Nhập vào Maple ta có: > (1+I)^3 + (3-I)*(1+I); 2 + 4I b; (2 - i)5 + (2 + i)5 ; Nhập vào Maple ta có: > (2-I)^5 +(2+I)^5; -76 Bài 2: Nhập vào Maple ta có: > Z:=x+iy; Z:= x + iy > solve({(1+2*i)*x