VỚI SỰ TRỢ GIÚP PHẦN MỀM TỐN HỌC MAPLE ThS Trần Ngọc Việt TĨM TẮT Mục tiêu báo viết chương trình tốn học phần mềm MAPLE để phân tích q trình giải phương trình vi phân Bec-nu-li (Bài tốn Bec-nu-li) Từ áp dụng giải số tốn dạng phương trình vi phân cấp cấp ABSTRACT This paper presents a new approach to solve Bernoulli differential equations (Bernoulli problem) with the help of program written with the Maple software This program is then applied to some linear equations of the first order and the second order Đặt vấn đề P hương trình vi phân xuất sở phát triển khoa học, kĩ thuật u cầu đòi hỏi thực tế Đã có tài liệu, giáo trình đề cập đến tốn học, vật lý dẫn đến nghiên cứu phương trình vi phân tương ứng Cùng với thành tựu tuyệt vời lĩnh vực cơng nghệ thơng tin, người ta xây dựng phần mềm có tính vạn mà nhờ việc giải tốn thực dễ dàng câu lệnh thật đơn giản, khơng phải lập trình phức tạp trước Nhiều phần mềm hỗ trợ tính tốn ưu việt phải kể đến như: Maple, Mathematica, Mathcad, Matlab, Algebrator, Ứng dụng phát triển cơng nghệ thơng tin nước ta theo thị số 58-CT/TW, ngày 17-10-2000 Bộ Chính trị nêu: “Về đẩy mạnh ứng dụng phát triển cơng nghệ thơng tin phục vụ nghiệp cơng nghiệp hố, đại hố” Với mục đích tìm hiểu phương pháp, phân tích q trình giải tốn phương trình vi phân chương trình tốn học Bài báo sâu tìm hiểu phần mềm Maple sử dụng việc dạy học phương trình vi phân, minh họa ý tưởng giải phương trình vi phân qua phần mềm Maple Maple phần mềm nhóm nhà khoa học Canada thuộc trường đại học Waterloo làm với mục đích giải cơng việc liên quan đến tính tốn 44 ĐẠI HỌC ĐÔNG Á Số 8-2012 Phương trình Bec-nu-li Định nghĩa Phương trình vi phân cấp có dạng y '+ p ( x) y = q ( x) y α (2.1) với p(x), q(x) hàm liên tục x (hoặc số), α ≠ 0, α ≠ gọi phương trình Bec-nu-li Cách giải + Nếu y = với α > ⇒ y' = phương trình (1.11) thỏa mãn nên y = nghiệm phương trình Bec-nu-li với α > + Nếu y ≠ 0, chia vế (2.1) cho yα ta y −α y '+ p(x).y1−α = q(x) (2.2) Đặt z= y1−α ⇒ z '= (1 − α)y −α y ' Phương trình (2.2) trở thành z '+ p(x).z = q(x) 1− α (2.3) ⇔ z '+ (1 − α).p(x)z= (1 − α).q(x) (2.4), phương trình tuyến tính cấp z Sau tìm nghiệm tổng qt phương trình (2.4) đưa biến y, ta nghiệm tổng qt phương trình Bec-nu-li Ví dụ Giải phương trình vi phân y '+ x y= x y − x2 Giải Ta có α = ½, đặt z = y1 - α = y1/ = y ⇒ z '+ x z= x , phương trình tuyến tính cấp z 2 2(1 − x ) z ⇒= (x − 1) + C1 x − ⇒ x2 y + − − C1 x − = 0, 3 nghiệm tổng qt phương trình Nghiệm y = nghiệm phương < ) trình cho (vì < α= ĐẠI HỌC ĐÔNG Á Số 8-2012 45 Chương trình tốn học giải phương trình vi phân Bec-nu-li 3.1 Lệnh nhập xuất liệu + Hàm readstat(""): dấu nhắc trả liệu nhập từ bàn phím + Hàm print(data1, data2, ): hiển thị liệu hình Lưu ý: xâu ký tự đặt dấu ` ` 3.2 Xây dựng thủ tục Maple + Maple ngơn ngữ lập trình hướng thủ tục (procedure) Chế độ thủ tục thực cách đóng gói dãy lệnh xử lí cơng việc vào thủ tục nhất, sau cần gọi thủ tục Maple tự động thực lệnh có chu trình cách sau trả lại kết cuối + Khai báo thủ tục sau: Procedure_name:=proc(parameter_sequence) [local local_sequence] [global global_sequence] [options options_sequence] statements_sequence end; Chương trình giải phương trình vi phân dạng: y '+ p(x).y = q(x).y α > restart: > proc_eqbecnuli:=proc()# Thu tuc giai pt Bec-nu-li local p,q,alpha,ptBecnuli,Datz,pttt1,ptthuannhat,thuannhat,kq,ketqua: global global_ptBecnuli: p:=readstat("p(x)="): q:=readstat("q(x)="): alpha:=readstat("alpha="): 46 ĐẠI HỌC ĐÔNG Á Số 8-2012 global_ptBecnuli:=ptBecnuli: ptBecnuli:=diff(y(x),x)+p*y(x)=q*y(x)^alpha:ptBecnuli: print(` -Bai Giai -`); print(`Phuong trinh Becnuli co dang la:`); print(ptBecnuli); Datz:=z=y(x)^(1-alpha):Datz: print(`Dat la:`); print(Datz); pttt1:=diff(z(x),x)+(1-alpha)*p*z(x)=(1-alpha)*q:pttt1: print(`Phuong trinh tuyen tinh cap co dang la:`); print(pttt1); ptthuannhat:=diff(z(x),x)+(1-alpha)*p*z(x)=0:ptthuannhat: print(`Phuong trinh thuan nhat la:`); print(ptthuannhat); thuannhat:=dsolve(ptthuannhat):thuannhat: print(`Nghiem tong quat cua phuong trinh thuan nhat la:`); print(thuannhat); kq:=dsolve(pttt1):kq: print(`Nghiem tong quat cua phuong trinh tuyen tinh cap la:`); print(kq); ketqua:=dsolve(ptBecnuli):ketqua: print(`Vay, nghiem tong quat cua phuong trinh da cho la:`); print(ketqua); end; # Ket thuc chuong trinh 3.3 Lưu nạp chương trình + Maple cho phép lưu chương trình để sử dụng cách thuận tiện sau: > save proc_eqbecnuli(); "\\thu_tuc.m": ĐẠI HỌC ĐÔNG Á Số 8-2012 47 + Trong file có sử dụng chương trình thực lệnh read fileproc, fileproc tên file (có đường dẫn) chứa chương trình biên dịch, tạo lệnh save: > restart; > read "\\thu_tuc.m"; 3.4 Sử dụng chương trình Ví dụ Giải phương trình vi phân y '+ x y= x y − x2 Nhập tham số cho chương trình phương trình Bec-nu-li sau > proc_eqbecnuli(); #khai bao chu trinh Phuong Trinh Bec-nu-li p(x)=x/(1-x^2); #khai bao ham p(x) q(x)= x; #khai bao ham q(x) alpha=1/2; #khai bao so alpha Bài giải chi tiết sau Bai giai -Phuong trinh Becnuli co dang la: d xy(x) x y(x) dx y(x) + − x = Dat la: z = y(x) Phuong trinh tuyen tinh cap co dang la: d xz(x) x dx z(x) + − x = Phuong trinh thuan nhat la: d xz(x) dx z(x) + − x = 48 ĐẠI HỌC ĐÔNG Á Số 8-2012 Nghiem tong quat phuong trinh thuan nhat la: z(x) = _C1(x - 1)(1/4) (x + 1)(1/4) Nghiem tong quat cua phuong trinh tuyen tinh cap la: (x - 1) (x + 1) z(x) = + _C1(x - 1)(1/4) (x + 1)(1/4) Vay, nghiem tong quat cua phuong trinh da cho la: y (x) = 13 - x3 - _C1(x - 1)(1/4) (x + 1)(1/4) = Kết luận Bài báo trình bày bước phương trình vi phân Bec-nu-li chương trình tốn học Kinh nghiệm cho thấy viết chương trình phức tạp trước hết ta viết chạy lệnh để xem kết nào, thấy kết tốt ta nhóm lệnh thành chương trình hồn chỉnh Chương trình tốn học có khả hỗ trợ giảng dạy giải tốn, nên báo sâu tìm hiểu phần mềm Maple sử dụng việc dạy học phương trình vi phân TÀI LIỆU THAM KHẢO Trần Quốc Chiến (2008), Giáo trình Phần mềm tốn học, Đại học Đà Nẵng Phạm Huy Điển, Đinh Thế Lục, Tạ Duy Phượng (1998), Hướng dẫn thực hành tính tốn chương trình MAPLE V, NXB Giáo dục, Hà Nội K Von Bulow supervised by E.S Cheb-Terrab (2000), "Equivalence Methods for Second Order Linear Differential Equations." Master's thesis, Faculty of Mathematics, University of Waterloo E.S Cheb-Terrab and T Kolokolnikov (2003), "First-order ordinary differential equations, symmetries and linear transformations." European Journal of Applied Mathematics, 14:231-246 J.A Weil (2002), "Recent Algorithms for Solving Second-Order Differential Equations", available at http://pauillac.inria.fr/algo/seminars/sem01-02/weil.pdf ĐẠI HỌC ĐÔNG Á Số 8-2012 49